3309|5

565

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【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、实验现象

可以看出,程序读取的和调试器调试读取的一致。

 

 

 

此帖出自GD32 MCU论坛

最新回复

感谢分享!McuInfo.UniqueId=*(uint8_t*)(UNIQUE_ID+i);有问题吧?应该是 McuInfo.UniqueId=*(uint8_t*)(UNIQUE_ID+i);   详情 回复 发表于 2022-1-27 18:41
点赞 关注
个人签名stm32/LoRa物联网:304350312
 

回复
举报

7608

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

union和struct用的好,哈哈

此帖出自GD32 MCU论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

565

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
freebsder 发表于 2022-1-24 21:10 union和struct用的好,哈哈

此帖出自GD32 MCU论坛
 
个人签名stm32/LoRa物联网:304350312
 
 

回复

111

帖子

0

TA的资源

一粒金砂(中级)

4
 

感谢分享!McuInfo.UniqueId=*(uint8_t*)(UNIQUE_ID+i);有问题吧?应该是

McuInfo.UniqueId[i]=*(uint8_t*)(UNIQUE_ID+i);

此帖出自GD32 MCU论坛

点评

谢谢指正  详情 回复 发表于 2022-1-27 19:21
 
 
 

回复

565

帖子

0

TA的资源

一粒金砂(高级)

5
 
serialworld 发表于 2022-1-27 18:41 感谢分享!McuInfo.UniqueId=*(uint8_t*)(UNIQUE_ID+i);有问题吧?应该是 McuInfo.UniqueId=*(uint8_t*) ...

谢谢指正

此帖出自GD32 MCU论坛
 
个人签名stm32/LoRa物联网:304350312
 
 

回复

565

帖子

0

TA的资源

一粒金砂(高级)

6
 

 修正一下:

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[i]=*(uint8_t*)(UNIQUE_ID+i);
		printf(" %02x",McuInfo.UniqueId[i]);
	}
	printf("]\r\n");
}

 

此帖出自GD32 MCU论坛
 
个人签名stm32/LoRa物联网:304350312
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表