|
每一片 STM32 芯片内部拥有一个独一无二的 Unique Device ID, 96 Bit.
这个 ID 号可以提供给开发者很多优越的功能, 例如:
1. 可以把 ID 做为用户最终产品的序列号,帮助用户进行产品的管理。
2. 在某些需要保证安全性的功能代码运行前,通过校验此 ID,保证最终产品的某些功能的安全性。
3. 用 ID 配合加解密算法,对芯片内部的代码进行加加密,以保证用户产品的安全性和不可复制性。
这项功能相信对那些不希望自己的产品不被别人抄袭来说肯定是个非常不错的。
下面我就先大家介绍如何读出这个 ID:
这个 ID 号是放在片内 Flash 中的固定的位置,直接读取出来就行了. 96 位的独特 ID 位于地址 0x1FFFF7E8 ~ 0x1FFFF7F4 的系统存储区, 由 ST 公司在工厂中写入 (用户不能修改) 用户可以以字节、半字、或字的方式单独读取其间的任一地址.
(一) 配置好串口, 用于调试演示, 这一部份前面的章节我们已经介绍过了.
可以参考贴子:
智能充电器入门教程 六: 基于 DMA 的 ADC
当然也可以直接下载我们的例程去读这部分的程序.
(二) 读取 Unique Device ID
u32 Dev_Serial0, Dev_Serial1, Dev_Serial2;
Dev_Serial0 = *(vu32*)(0x1FFFF7E8);
Dev_Serial1 = *(vu32*)(0x1FFFF7EC);
Dev_Serial2 = *(vu32*)(0x1FFFF7F0);
(三) 仿真调试
(1) 使用Keil uVision3 通过 JLINK 仿真器连接实验板,使用智能充电器开发板附带的串口线,连接实验板上的 UART1 和 PC 机的串口,打开实验例程目录下的ADC.Uv2例程,编译链接工程;
(2) 在 PC 机上运行 windows 自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序;
(3) 点击MDK 的Debug菜单,点击Start/Stop Debug Session;
(4) 全速运行程序, 显示结果如下所示。
Welcome to MYSTM32 Website
www.mystm32.com/bbs
Charger STM32F103C8T6 Unique Device ID:
066C0039 31313458 43104747
备注: 其中最后一行的数字就是我的智能充电器中 STM32F103C8T6 的 Unique Device ID. 您的 ID 当然肯定会和我的不一样哦.
(原文件名:1.jpg)
基于 MDK3.50 以上版本的工程文件下载:
点击此处下载 ourdev_506526.rar(文件大小:473K) (原文件名:Example8-UID.rar) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|