I have following hardware:
RAK3172 based eval board from Mikroe LINK with replaced RAK3172 with a fresh one from DigiKey. Voltage supply rails are correct and clean (no ripple, noise, etc.).
I am trying to program the application into it or update the firmware. What is known:
23:14:52.490 → Current Work Mode: LoRaWAN.
23:14:56.696 → AT+VER=RUI_4.0.6_RAK3172-E
23:14:56.696 → OK
AT+BOOT returns NOTHING, but the device does not respond to any command anylonger,
the device is procuding following output, while trying to upload example sketch via Arduino (UART is recognizable)
Device is not in boot mode
Detecting baudrate.
Entering boot mode
Device is not in boot mode
Device do not enter boot mode
the device is not recognized by STM32CubeProgrammer, trying to program over UART BOOT (pressing and holding the BOOT, pressing RESET, releasing RESET),
23:29:51 : STM32CubeProgrammer API v2.21.0 | Windows-64Bits
23:30:16 : RTS low
23:30:16 : DTR Low
23:30:16 : Serial Port COM15 is successfully opened.
23:30:16 : Port configuration: parity = even, baudrate = 115200, data-bit = 8, stop-bit = 1.0, flow-control = off
23:30:20 : Timeout error occured while waiting for acknowledgement.
23:30:20 : Error: Activating device: KO. Please, verify the boot mode configuration and check the serial port configuration. Reset your device then try again…
the device is not recognized by STM32CubeProgrammer, trying to program over SWD
What is wrong with my procedure?
What did I miss?
Is the firmware upgrade locked somehow?
The RAK3172 is not locked in any way. You can flash any firmware on it, whether it is based on RUI3, STM32CubeIDE or made with Zephyr.
I don’t know the MikroE board, but I am assuming it is using the correct UART for firmware update and AT commands. It should be pin 1 and pin 2 of the RAK3172 (UART2).
As you replace the RAK3172 on the MikroE board, check all pins for eventually bad soldering or solder bridges between pins.
The UART exposed in the eval board is correct.
All the pins are soldered correctly, there was the same behaviour with originally populated one.
Is there any known issue with the firmware that is flashed with currently when it comes to SW update? (But that would not explain why I can’t flash it with stm32cube with stm32 built-in hart bootloader).
Is there any other pin state required for programing?
There is nothing special required when using the UART to flash from ArduinoIDE.
Just don’t use BOOT0 pin, this is only required for STM32CubeProgrammer.
If you had the same problem with the board when you bought it, I would contact MikroE and ask them if there is something special on their boards.