I'm having some troubles understanding the behavior of the ST GPIO on start-up, specifically PA3 on STM32L496VE micro.
I'm trying to program/flash a SiLabs BT121 (Bluetooth module) chip and have the following configuration on my board:
I'm using a dev kit offered by SiLabs, DKBT, to program the BT121. The dev kit acts as a USB to UART converter to interface the UART on the BT121.
On the MPU host side I have PA0 to PA3 configured as UART as follows:
When programming the BT121 the datasheet advises to keep the host MPU in reset state to keep lines floating.
Here's my issue: whenever I try to program the BT121 w/ a MPU that's erased/not programmed it fails.
If I keep the MPU in reset manually (pulled the NRST pin low) then programming is successful.
Following capture is for the TX (pink), RX (green), RESET (yellow) and BOOT0 (blue) pins on the initial reset dip that puts the BT121 in the DFU mode which allows me to program it.
NOTE: Reset and BOOT0 are the pins on the BT121 chip and not the STM micro.
What I'm seeing from the captures is that a failed attempt to program the BT121 is caused when the BT-TX line does not go low in line with the RESET pin.
From my understanding on an erased MPU all the lines (except the JTAG pins) are supposed to be configured as analog input floating. I verified that with the reference manual:
I went ahead and programmed the specific pin on the MPU as analog mode then as input Push-pull and both seem to work, I was able to program the BT121. But then I realized that even if I flash and empty program into the MPU the programming of BT121 works.
Finally, I figured out that by just simply connecting to the MPU via the ST-Link to the JTAG brings the MPU into a state where I'm able to program the BT121 chip.
Am I missing something? By the looks of it PA3 is not configured as floating analog input when completely erased.
Thank you! I appreciate any input.
edit: added note for the scope captures.