历史上的今天
返回首页

历史上的今天

今天是:2024年10月21日(星期一)

正在发生

2018年10月21日 | STM32学习之:读取芯片的唯一标识ID

2018-10-21 来源:eefocus

产品唯一的身份标识的作用:


    ●  用来作为序列号(例如USB字符序列号或者其他的终端应用);


    ●  用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性;


    ●  用来激活带安全机制的自举过程;


     96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。按照用户不同的用法,可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。嘿嘿,要注意大端小端模式哟~~~


以下是相关代码:


* 函数名:Get_ChipID


 * 描述  :获取芯片ID


 * 输入  :无


 * 输出  :无


 * 说明  :96位的ID是stm32唯一身份标识,可以以8bit、16bit、32bit读取


           提供了大端和小端两种表示方法


void Get_ChipID(void)


{


#if 1


    u32 ChipUniqueID[3];


     地址从小到大,先放低字节,再放高字节:小端模式


     地址从小到大,先放高字节,再放低字节:大端模式


 ChipUniqueID[2] = *(__IO u32*)(0X1FFFF7E8);  // 低字节


 ChipUniqueID[1] = *(__IO u32 *)(0X1FFFF7EC); // 


 ChipUniqueID[0] = *(__IO u32 *)(0X1FFFF7F0); // 高字节


 printf("######## 芯片的唯一ID为: X-X-X  rn",ChipUniqueID[0],ChipUniqueID[1],ChipUniqueID[2]);


          //此条语句输出32位


#else   //调整了大小端模式,与ISP下载软件的一致


    u8 temp[12];   


    u32 temp0,temp1,temp2;


    temp0=*(__IO u32*)(0x1FFFF7E8);    //产品唯一身份标识寄存器(96位)


    temp1=*(__IO u32*)(0x1FFFF7EC);


    temp2=*(__IO u32*)(0x1FFFF7F0);


    temp[0] = (u8)(temp0 & 0x000000FF);


    temp[1] = (u8)((temp0 & 0x0000FF00)>>8);


    temp[2] = (u8)((temp0 & 0x00FF0000)>>16);


    temp[3] = (u8)((temp0 & 0xFF000000)>>24);


    temp[4] = (u8)(temp1 & 0x000000FF);


    temp[5] = (u8)((temp1 & 0x0000FF00)>>8);


    temp[6] = (u8)((temp1 & 0x00FF0000)>>16);


    temp[7] = (u8)((temp1 & 0xFF000000)>>24);


    temp[8] = (u8)(temp2 & 0x000000FF);


    temp[9] = (u8)((temp2 & 0x0000FF00)>>8);


    temp[10] = (u8)((temp2 & 0x00FF0000)>>16);


    temp[11] = (u8)((temp2 & 0xFF000000)>>24);


    printf("######## STM32芯片ID为: %.2X%.2X%.2X%.2X-%.2X%.2X%.2X%.2X-%.2X%.2X%.2X%.2X rn",


  temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9],temp[10],temp [11]); //串口打印出芯片ID


#endif


}


 * 函数名:Get_ChipInfo(void)


 * 描述  :获取芯片Flash 大小


 * 输入  :无


 * 输出  :无


 * 说明  :


void Get_ChipInfo(void)


{


   uint32_t ChipUniqueID[3];


  u16 STM32_FLASH_SIZE;


   ChipUniqueID[0] = *(__IO u32 *)(0X1FFFF7F0); // 高字节


   ChipUniqueID[1] = *(__IO u32 *)(0X1FFFF7EC); //


   ChipUniqueID[2] = *(__IO u32 *)(0X1FFFF7E8); // 低字节


   STM32_FLASH_SIZE= *(u16*)(0x1FFFF7E0);    //闪存容量寄存器  


   printf("rn########### 芯片的唯一ID为: %X-%X-%X n",


           ChipUniqueID[0],ChipUniqueID[1],ChipUniqueID[2]);  


   printf("rn########### 芯片flash的容量为: %dK n", STM32_FLASH_SIZE);


   printf("rn########### 烧录日期: "__DATE__" - "__TIME__"n");


      //输出使用固件库版本号


  printf("rn########### 代码固件库版本: V %d.%d.%d n",__STM32F10X_STDPERIPH_VERSION_MAIN,__STM32F10X_STDPERIPH_VERSION_SUB1,__STM32F10X_STDPERIPH_VERSION_SUB2);  


}


推荐阅读

史海拾趣

Central Semiconductor公司的发展小趣事

Central Semiconductor一直致力于创新分立元器件的研发和生产。公司凭借其深厚的技术积累和市场洞察力,成功开发出一系列具有节省空间、电气规格灵活等特点的创新产品。这些产品不仅满足了客户对高性能、高可靠性的需求,也为Central在竞争激烈的市场中赢得了良好的声誉。

此外,Central还注重根据客户的特殊需求进行定制开发。无论是筛选电气规格、特殊晶圆扩散还是开发定制元器件,Central都能迅速响应并提供满足客户需求的解决方案。这种以客户为中心的服务理念也为Central赢得了众多客户的信任和合作。

APTA Group Inc公司的发展小趣事

APTA Group Inc在企业管理方面同样敢于创新。公司引入了一套先进的管理系统,通过数据分析和智能化决策,大大提高了工作效率和决策准确性。同时,公司还注重员工培训和激励,打造了一支高效、专业的团队。这些创新的管理举措,为APTA的稳健发展提供了坚实保障。

API Technologies公司的发展小趣事

作为一家有社会责任感的企业,API Technologies不仅关注经济效益,也积极履行社会责任。公司注重环保和可持续发展,在生产过程中采取了一系列环保措施,降低能耗和排放。同时,公司还积极参与社会公益活动,回馈社会,为社区的繁荣和发展做出了贡献。

这些故事展示了API Technologies在电子行业中的发展历程和取得的成就。通过不断创新、全球化布局、品质管理和履行社会责任,公司逐渐成为了电子行业的佼佼者。

EMI Filter Company公司的发展小趣事

Panasonic作为电子行业的巨头,对EMI滤波器市场也早有布局。他们采取的是多元化的产品战略,针对不同行业和应用场景,推出了多种类型的EMI滤波器。无论是用于消费电子产品的片式滤波器,还是用于工业设备的大功率滤波器,Panasonic都能提供高质量的产品。这种多元化的产品战略,使得Panasonic在EMI滤波器市场上占据了重要的地位。他们的产品广泛应用于家电、汽车电子、工业自动化等领域,为全球电子行业的发展做出了重要贡献。

Econais公司的发展小趣事

为了加速产品的市场推广和应用,Econais积极寻求与行业内其他优秀企业的合作。XXXX年,Econais与Xively公司达成战略合作,共同为工业、商业和住宅市场提供一站式的物联网解决方案。通过这次合作,Econais的WiSmart Wi-Fi用户能够无缝连接到Xively云,为各种物联网应用提供强有力的支持。

Embedded Planet公司的发展小趣事

Embedded Planet公司自成立之初就注重技术创新和与业界领导者的合作。通过持续研发,公司成功开发出一款革命性的嵌入式系统解决方案,这一解决方案能够显著提升设备的性能和效率。同时,Embedded Planet积极与卓联半导体公司合作,共同推出了一款伪线模块,该模块能够大幅度降低通过分组网络传送TDM业务的网络设备的复杂性,并缩短开发时间。这一创新产品得到了市场的广泛认可,也为公司赢得了更多的合作机会。

问答坊 | AI 解惑

ADSL线路测试技术

作为一种基于普通电话双绞线的传输技术,ADSL对物理传输线路有很大的依赖性。环路的特征将对ADSL服务的质量和性能级别产生决定性影响。首先在业务开通时会遇到如何选择ADSL线路,某条线路能否开通ADSL业务,可以开通的速率是多少,影响传输质量的原 ...…

查看全部问答>

请问rtl8309如何控制其PHY寄存器

RTL8309的资料好少,我在网络上有找到通过SMI接口协议来操作寄存器的,能通过主芯片和8309之间的I2C来进行通信,然后控制寄存器吗?…

查看全部问答>

我两台机器的网卡都是百兆网卡,测速软件报告网速最高只有 26 Mbps,为什么呢?

我两台机器的网卡都是百兆网卡,我用测试软件测试了一下网速,能达到 26 Mbps,离 100 Mbps 还有很远呢!这是为什么呢? 我用的是直连网线。 我很关心 怎样能让测试结果非常接近 100 Mbps ? …

查看全部问答>

请问如何对BusHound中的URB数据进行分析?

Bus Hound 5.00 capture. Complements of www.perisoft.net   Device - Device ID (followed by the endpoint for USB devices)             (34) USB Composite Device      ...…

查看全部问答>

有什么方法可使PB编译出不含Thumb指令

如题,开发板不支持thumb指令,所以编译出来的 BX指令转为thumb 时,就会不能执行,有没有什么方法 不要编译出转为thumb指令的方法…

查看全部问答>

link的时候出现重定义的问题,请教各位高手

在vdsp下面的问题,编译的时候都通过了,link的时候出里几百个类似下面的错误,有没有人能给我说说怎么改啊,谢谢! [Error li1050]  \'_g_nFrame\': Multiply defined symbol in processor \'p0\'.        & ...…

查看全部问答>

被MSP430F2013的SPI搞死了

本来打算用2013做16位AD,然后将数据用SPI传送给149的,做的时候才发现,2013的资料实在是太少了,特别是中文资料,反复看了例程,网上的,TI的,到现在还没有能通讯上,哎,2013这个东东怎么看都和先前的片子不一样,149,133资料多,好用,看来2xxx的麻烦死了. ...…

查看全部问答>

“char code reserve [3] _at_ 0x23;”是什么语法规则?

安装了uVision4之后,打开有个示例程序: /*------------------------------------------------------------------------------HELLO.C Copyright 1995-2005 Keil Software, Inc.------------------------------------------------------------- ...…

查看全部问答>