开发板的demo里面提供了如何读取芯片的UID,UID是芯片的唯一识别码,存在芯片的SIM模块里,其实很简单类似从flash读数据,下面来看看SIM模块都包括哪些

这里包括了系统选项寄存器、系统设备识别寄存器、时钟门控制寄存器、flash配置寄存器和UID等。

这就是UID的地址,我们只需读这个地址里的数据就好。
看看程序里怎么写的吧,


SIM_BASE_PTR = 0x40047000u为模块的首地址,根据结构体定义的UIDMH、UIDML、UIDL成员所在的位置即可定位到相应的地址偏移。
所以只需把变量赋值就是芯片的UID。
因为高中低位都是32位的长度,所以定义的结构体
typedef struct {
INT32U uiSIM_UIDMH;
INT32U uiSIM_UIDML;
INT32U uiSIM_UIDL;
} UIDs;用来接收芯片的UID。
来看下demo的效果:

虽然这个实验很简单,对用户来说没什么大用,但可以作为产品的唯一标识哦,就和芯片绑定啦。
*******************可以了解下设别识别寄存器 SIM_SDID
我的是26151505
根据资料分析下:
2:KL2x Family (USB)
6:KLx6 Subfamily
1:0001 KL family
5:SRAM Size-0101 16 KB(资料写是32K的SRAM)
1:Device Revision Number
5:Device Die Number
0:保留
5:64-pin
经过查找 KL26Z128V4这款芯片的SRAM就是16K。如用到此芯片的要细心查看datasheet哦。
|