【GD32L233C-START评测】8、获取MCU96位唯一ID、SRAM、FLASH大小
[复制链接]
本帖最后由 freeelectron 于 2022-2-7 12:53 编辑
相关文章:
【GD32L233C-START评测】1、优点与缺点都很明显的GD32L233C-START(开箱)
【GD32L233C-START评测】2、非阻塞方式点灯,blink,blink,blink……
【GD32L233C-START评测】3、pwm实现呼吸灯
【GD32L233C-START评测】4、串口不定长数据接收
【GD32L233C-START评测】5、Flash读写——使用内部Flash存储数据
【GD32L233C-START评测】6、硬件I2C驱动0.96吋OLED
【GD32L233C-START评测】7、硬件SPI1驱动RC522
1、关于设备电子签名
设备的电子签名中包含的存储容量信息和96位的唯一设备ID。它被存储在片上闪存的信息模块 中。96位唯一设备ID对于每颗芯片而言都是唯一的。它可以用作序列号,或安全密钥的一部分, 等等。
2、96位唯一ID
96位ID信息,地址依次为0x1FFFF7E8、0x1FFFF7EC、0x1FFFF7F0,设备出厂的时候,已经固化在mcu内部的,用户不可更改。
3、关于SRAM和FLASH大小
存储容量信息,地址为0x1FFFF7E0,设备出厂的时候,已经固化在mcu内部的,用户不可更改。
4、程序读取
#define STORAGE_INFO 0x1FFFF7E0
#define UNIQUE_ID 0x1FFFF7E8
#define UNIQUE_ID_0_31 0x1FFFF7E8
#define UNIQUE_ID_32_63 0x1FFFF7EC
#define UNIQUE_ID_64_95 0x1FFFF7F0
struct McuInfo_t
{
union
{
uint32_t Size;
struct
{
uint16_t FlashSize;
uint16_t SramSize;
};
}Storage;
uint8_t UniqueId[12];
}McuInfo;
void GetMcuInfo(void)
{
McuInfo.Storage.Size=*(uint32_t*)STORAGE_INFO;
printf("sram size=%dk\r\n\r\n",McuInfo.Storage.SramSize);
printf("flash size=%dk\r\n\r\n",McuInfo.Storage.FlashSize);
printf("unique id:[");
for(uint8_t i=0;i<12;i++)
{
McuInfo.UniqueId=*(uint8_t*)(UNIQUE_ID+i);
printf(" %02x",McuInfo.UniqueId);
}
printf("]\r\n");
}
5、实验现象
可以看出,程序读取的和调试器调试读取的一致。
|