1 怎么读取STM32单片机型号、FLASH大小以及全球唯一UID?
- step1 通过读取DBGMCU_IDCODE11:0获得PID;
- step2 通过PID确定型号,例如STM32F1xx;
- step3 通过型号,确定FLASH容量存储器地址;
- step4 通过地址,获得FLASH容量;
- step5 通过型号,确定UID地址,访问地址可获得全球唯一UID;
上述5步即可读取产品名称,容量大小以及UID!
2 有问题如下
2.1 所有STM32系列的DBGMCU_IDCODE的地址均为0xE004 2000?
目前确定F1、F2、F3、F4为该地址,F0地址为0x40015800,查询官方参考手册结果如下。
0x40015800:
STM32F0x1/STM32F0x2/STM32F0x8
STM32F030x4/x6/x8/xC and STM32F070x6/xB
0xE004 2000:
STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx:
STM32F303xB/C/D/E, STM32F303x6/8, STM32F328x8, STM32F358xC, STM32F398xE
STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439
STM32F72xxx and STM32F73xxx
STM32F75xxx 和 STM32F74xxx
STM32F76xxx and STM32F77xxx
STM32F301x6/8 and STM32F318x8
STM32F302xB/C/D/E and STM32F302x6/8
STM32F401xB/C and STM32F401xD/E
STM32F469xx and STM32F479xx
2.2 DBGMCU_IDCODE可以通过应用程序访问吗?
可以!查询官方描述如下:
This code is accessible using the JTAG debug pCat.2ort (4 to 5 pins)
or the SW debug port (two pins) or by the user software.
It is even accessible while the MCU is under system reset.
串口ISP时需要获得Bootloader版本才可以选择正确的擦除命令,虽然通过PID无法直接查找获得,但所有STM32系列可通过统一的GET命令获得Bootloader版本号。
3 STM32各系列与FLASH容量寄存器地址、UID寄存器地址对应关系
