We have made our own anchors and tags boards using DWM1001 modules. Our custom boards work fine: location parameters can be changed with Android App and location engine works fine.
As programmer we are using a DWM1001-Dev board after desoldering the integrated DWM1001, and connecting the GND, SWD_CLK, SWD_DIO and RESET lines from the desoldered Dev board to our custom boards. Maybe this is a non ‘ortodox’ programmer, but the DWM1001 modules can be flashed using the Segger J-Flash Lite utility, in Windows and Ubuntu image provided by Decawave. So, it seems that this programmer works fine.
The problem comes when I try to flash the DWM1001 module from Eclipse IDE. I have followed the instructions in DWM1001-Firmware-User-Guide. I have installed the Ubuntu image, opened the proyect in Eclipse IDE and am able to build the proyect.
However, in Eclipse IDE, if i want to flash the module with the factory image, clicking option “3 recover (factory reset)”, and also, if I want to debug the proyect, I get the error in the attached image.
If the problem comes from using the desoldered DWM1001-Dev board as a programmer, I do not understand why I can flash our own boards with the Segger J-Flash Lite utility, using this programmer.
Also, I try to find the compiled hex file in the ubuntu folders, but I am not able to find it. I do not know how to tell Eclipse IDE to generate an hex file.
Any comments are wellcome!
I never tried to flash the DWM1001 module, but from a hardware point of view I noticed that on the DMW1001-DEV board the SWCLK and SWDIO signals
are connected to the STM32 application MCU through jumpers J17, J18. Measuring their signal levels results that SWDIO is high, maybe driven by the STM32 or
thanks to an internal pull up configuration.
On the other hand the SWCLK level is around 0,8 Volts. I assume here that the DWM1001 has an internal pull up and the STM32 drives this signal low. In between there
is R30, a 220 Ohm resistor, that might act as a voltage divider together with the internal pull up. Not an ideal configuration in my point of view.
You might try to use a weak pull up resistor on your custom board on the SWDIO and SWCLK lines, so that at power on, no voltage glitches might create problems.
I also suggest, if you don´t drive the SPI interface directly, to pull up the CS_PRI line (SPI_nCS). It results floating and that might not be a good idea, as the DWM1001 uses this
line to wake up from sleep. Undefined signal levels or glitches on the SPI_nCS input might disturb the internal TLV state machine.
Hope that helps.
Thank you very much for your comments Peter,
Actually it was a problem of cable length. When using a shorter cables (about 100mm) between the desoldered DWM1001-Dev board and our custom DWM1001 board, I was able to flash and debug the new code in Eclipse IDE. Maybe it is a problem of speed/synchronization used by Eclipse IDE, which is not compatible with long unscreeneed cables, but I do not know…
I attach an image of the boards used, the original but desoldered DWM1001-Dev board and our custom board, connectd by short cable.