历史上的今天

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

正在发生

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

发布者:ohp991养生的香菇 来源: eefocus关键字:STM32  读取芯片  唯一标识ID 手机看文章 扫描二维码
随时随地手机看文章

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


    ●  用来作为序列号(例如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);  


}


关键字:STM32  读取芯片  唯一标识ID 引用地址:STM32学习之:读取芯片的唯一标识ID

上一篇:STM32学习之:stm32中C语言的数据类型
下一篇:STM32学习笔记:FSMC详述

推荐阅读

到目前为止,我们已经能够编写较复杂的ARM汇编程序了,遗憾的是这些程序是运行在ads自带的虚拟开发板ARMUL下的,(在axd界面下,单击options->configure target,可见到如下的目标板配置界面)而我们最终的目的是要让程序运行在实际的硬件产品上,并能控制硬件。本文将初步介绍如何建立真实硬件的开发和调试环境,编写控制硬件的程序的方法。第一部分内容...
RPA全称Robotic Process Automation,即机器流程自动化,机器的作用是用来替代人工操作大量高重复、标准化的日常事务,但这里的机器并非实体,而是虚拟性的软件,因此也可称为软件流程自动化。区别于常规人为操控的一般软件和程序,RPA是一种数字化支持技术,主要利用用户界面(UI)和表面层功能的组合来创建脚本,自动执行常规、可预测的数据转录工作,...
10月21日上午消息,距离iPhone 12和12 Pro正式发售还有三天时间,全球媒体已经放出了相关的评测内容,我们来汇总一下。  The Verge的Nilay Patel表示,由于iPhone 12现在具有跟Pro型号相同的OLED显示屏,因此iPhone 12和iPhone 12 Pro之间的差异“根本上比去年小得多”(去年的iPhone 11使用LCD材质屏幕)。除了OLED之外,这两款设备...
现代汽车的电动化转型还是非常成功的,虽然它是全球第一家大规模召回纯电动的汽车企业,但是这个事情基本算是尘埃落定可以翻篇了。 受到缺芯影响,9月份现代汽车全球销量为279,307辆,下降了24%。但是为了数据过得去,芯片大部分被分配给新能源汽车——现代汽车新能源车型的销量为16,400辆(同比增长 27%),占总销量的5.9%,创历史新高。 所以今天谈谈...

史海拾趣

问答坊 | AI 解惑

“柴米油盐酱醋茶”:常见工程师职场问题攻略

俗话说:“开门七件事,柴米油盐酱醋茶”,其实,工程师在职场打拼,也得面对类似的情形。在生活中,如果缺少“柴米油盐”,那你将面对无味单调的生活,同样,在职场里,如果处理不好这些“柴米油盐”,你也将在你的职业生涯品尝苦涩和辛酸,这里, ...…

查看全部问答∨

IP地址问题

大家好,有个问题我一直想不通.就是因特网上的IP地址问题.假如杭州的一台电脑和北京的一台电脑通过互联网相互通信,他们是怎样找到对方的?…

查看全部问答∨

TDPUDPdebug 以太网调试工具

TDPUDPdebug 以太网调试工具…

查看全部问答∨

请教高手lm324电路分析

附件电路中lm324起到什么作用 [ 本帖最后由 simonprince 于 2009-5-29 13:16 编辑 ]…

查看全部问答∨

运放使用单电源遇到的问题(checked)

本帖最后由 辛昕 于 2018-4-8 22:56 编辑 关于这个帖子,其实本来有挺多话说的。 不过,忽然想想,这个帖子最大的教训就是: “其实,错的事情就不用多解释了,多描述了,要不然,就会造成这种困扰”。 是的——错的方法有千千万,记住那么几 ...…

查看全部问答∨

大家碰到过wince exfat的bug吗

我在sd卡上实现的rom文件系统和hive注册表,现在发现有的sd卡正常,有的sd卡进入系统后sd上的目录和文件看不到,但实际上系统应该已经认出来了(否则windows目录都看不见怎么系统跑起来了),把sd重格一下就正常了。 这是什么原因呢,在pc上都是正常 ...…

查看全部问答∨

卖板子,挣钱买房子.

本人做了块小板子,很细腻的乳白色塑料外壳,外观和DSP仿真器差不多。 有12个I/O口(DB25),可配置成8个I/O(TTL) + 4个A/D转换。 另外有两个3线串口(一个DB9),一个10M网口(RJ45),9-24V直流供电。 用料讲究,板上保险丝、整流二级管、I/O限流滤波等细 ...…

查看全部问答∨

开关控制5个灯循环用PLC控制

开关控制5个灯循环点亮,每按一次亮一灯,其余灯不亮,按第六次所有灯全亮。第七次全灭,请问该程序用PLC如何实现?…

查看全部问答∨

哪位老总能组织一次高端的DIY活动《脑电波芯片》

哪位老总能组织一次高端的DIY活动《脑电波芯片》 脑电波芯片 标签: ThinkGear AM芯片ThinkGear AM芯片,由美国Neurosky(中文名:神念科技: http://www.neurosky.com/zh-Hans/default.aspx)公司研发的世界第一款的脑电图传感器,因为采用了干 ...…

查看全部问答∨

共享TI 工程师制作的MSP430仿真器EZFET DIY设计

共享一个TI 工程师制作的EZFET设计参考,从此MSP430仿真器再也不用愁了。EZFET TI官网有工艺非常的好参考设计,支持市面上绝大多数MSP430以及FRAM。下面是TI 工程师动手做的板子,供大家参考 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved