I am designing a PCB-Shield that uses the STM32L412CBU6 (without external crystal). This PCB is connected to another STM32 platform. I want to be able to flash the STM32L412CBU6 from within the other platform. I have already a I2C connection from one platform to the other, and I thought about having two more connections between those boards:
- one to put the BOOT0-PIN high
- one to toggle NRST-PIN to be able to perform a user-program flash via the internal (ROM) bootloader.
With that in mind, I was reading the documents AN2606 (system memory boot mode) and AN4221 (I2C bootloader protocol definition) and for sure the one for the controller itself "STM32L412xx".
I would like to ask, if I got things right:
- When the STM32L412CBU6 boots from system memory (its bootloader), I have to take care, that the hardware resources it uses are not making any electrical problems on my PCB. As this bootloader supports flashing from USART 1, 2 and 3, IC2 1, 2 and 3, SPI 1 and 2 and USB, there are actually something about 22 PINs it handles. Most likely they are not critical - but I have to recheck those PINs.
- As per Datasheet AN2606 the I2C3 bootloader uses I2C3_SCL pin and I2C3_SDA pin. In my case (STM32L412CBU6), this would be PIN PA7 and PB4, but the document writes PC0 and PC1 (you can have I2Cx on different PIN-Pairs), which are not present on UFQFPN48 package. If I understand this right, it just means, that the I2C3 bootloader will not be present/accessible on my package. There are no different bootloaders for different packages. Right?