How to program the STM32F401CCU6

embeddedst-linkstm32stm32cubeideuart

I am transitioning from Arduino to STM32 development. I just purchased an STM32F401CCU6 board and I cannot get it recognized by my computer. I am running Ubuntu 22.04. I have tried searching everywhere but there is such poor documentation and support for working with ST (compared to Arduino and Espressif). My board has a USB C port on it but after watching countless videos and reading numerous forums, I've come to know that normally we use external programmers for development with these STM boards. I also have an external programmer (FTDI) if that's how it is supposed to be done.

I have showed the output of my 'dmesg' window, clearly showing the device recognized on a hardware level. But it is not recognized anywhere else. I tried finding it as a COM port via Arduino but did not find any available ports. I tried programs like CoolTerm and Putty but I could not see the port appear there either. I tried 'ls /dev/tty*' but did not find the device anywhere.

[282059.230618] usb 3-1: new full-speed USB device number 51 using xhci_hcd
[282059.380114] usb 3-1: New USB device found, idVendor=0483, idProduct=df11, bcdDevice=22.00
[282059.380123] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[282059.380126] usb 3-1: Product: STM32  BOOTLOADER
[282059.380129] usb 3-1: Manufacturer: STMicroelectronics
[282059.380131] usb 3-1: SerialNumber: 359B33733237

I used the push buttons on the board to put it in DFU mode (no idea what that is) and I can confirm it worked because the user LED went off. But I still do not see it appear anywhere on my system. I also have a Nucleo F401RE and I never had to do anything extra to get it recognized by the same system (it was plug and play).

When I try to 'run' a program via CubeIDE, it says "No ST-LINK detected!". I have been stuck for days on this issue and I cannot figure out what needs to be done to flash a program onto it. It is just paperweight (a very inefficient one) at this point.

I tried using CubeProgrammer as well but could not establish a connection through either option – USB, UART nor ST-LINK. USB and UART require COM ports so they both failed. ST-LINK also failed to detect anything.

Any insights and guidance shall be greatly appreciated.

Best Answer

Looks like a WeAct BlackPill -- https://docs.zephyrproject.org/2.6.0/boards/arm/blackpill_f401ce/doc/index.html

It has a boot loader, as do all the stm ARM cortexes (I believe), but no on-board programmer. It does allow programming with a programmer, though -- you would need to pick up an ST-Link clone.

I think the page I reference above will give you enough direction to use your device.

"DFU" is Device Firmware Update -- i.e., programming the device using the bootloader.

UPDATE: It looks like there may be issues using the Cube environment to program via DFU (https://community.st.com/s/question/0D53W00000euMKeSAM/stm32cubeprogrammer-doesnt-support-dfu-files) I can't confirm.

https://youtu.be/b1123kz_3MM has instructions for using Cube to program these. It involves finding and installing the STM32 core for Arduino, and doing some stuff in the Arduino Board Manager.

Related Topic