AnsweredAssumed Answered

F446RE System Memory Boot Mode UART1 PA9 Problem

Question asked by Zhitai Liu on Oct 24, 2017
Latest reply on Oct 25, 2017 by Clive One

Hi, everyone. 

I got a strange, also interesting, problem, while I am using System Memory Boot Mode with STM32F446RE.


Hardware Description

STM32F446, Nucleo-64 Board (PID:0x0421, BID:0x90, Bootloader Version:0x31)

STM32F410 Nucleo-64 Board for comparison


Host Test Utilities:

ST Flash Loader Demonstrator,

AccessPort (just a PC com port test software)

Prolific PL2302 USB to Serial Module (self made)



1 BOOT0 pin: 1 (pull high to 3.3V)

2 BOOT1/PB2 pin: 0(pull down to Gnd)

3 This makes System Memory selected as Boot area.

4 UART1 PA9/PA10 and UART3 PC10/PC11 with pullup 100K Ohm Resistor.

5 UARTx TX/RX connected to RX/TX pins of PL2302 



   Use STM32F446 UART1 PA9/PA10 => Flash Loader Demonstrator Failed ("Unrecognised device....Please, restart your device and try again" )



   Use STM32F446 UART3 PC10/PC11 => OK, Flash Loader Demonstrator works!



   Switch to  STM32F410 UART1 PA9/PA10 => OK, Flash Loader Demonstrator works!



   Back to STM32F446 and PA9/PA10 pins, with still the above setup. Oscilloscope shows the following image:




   Due to unknown reason, STM32F446RE PA9 UART1 TX pin is somehow driven low with system memory boot mode pin setup after a reset. This strange phenomena cannot be seen in UART3 PC10 pin, and STM32F410 UART1 PA9 pin.

I've tried that if Boot0 grounded, as normal flash operation, this PA9 driven-low phenomena also cannot not be observed, as the 100K resistor is easily pulled it VCC. I believe this is somehow related to the code in the system boot memory, perhaps not properly configured.



   1. Set PA9 TX pin with pull-up resistor down to few kOhm(1K ~ 4.99K Ohm) does the job, with the cost of power consumption.

   2. If I use Com Port Test Software, like AccessPort,  This PA9 driven-low after reset causes the host to receive a 0x00 byte equivalently, hence Flash Loader Demonstrator fails to recognize the device. If this 0x00 byte is omitted, we can still send 0x7F to make UART1 enter boot mode, as I can read chip information using 0x00FF and 0x01FE. Hence a custom flash loader application is still possible.


Does any have similar experience? Or I just got a damaged F446??

Thanks for reading this post!