woshi_ziyu
发表于: 2016-5-5 14:38:10 | 显示全部楼层

STM32F4系列MCU都有一个96位的唯一设备标识符UID,该标识符可以用作序列号(例如 USB 字符串序列号或其它终端应用程序)以及FLASH代码的安全验证。在STM32F446xx用户手册RM0390的34.1章节第1316页中介绍了STM32F446RE的唯一设备ID寄存器的地址基址是0x1FFF7A10。

unique_id.jpg


在mbed中新建基于NUCLEO-F446RE平台的空模板工程,然后导入mbed_src函数库。新建main.cpp文件,在文件中输入以下代码:

  1. #include "mbed.h"

  2. // unique ID test

  3. // change this UID address to suit your model of CPU (see datasheet)
  4. // for STM32F446RE - see chapter 34.1 page 1270 of the following document
  5. //
  6. // [url]http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/DM00096844.pdf[/url]
  7. //
  8. unsigned long *uid = (unsigned long *)0x1FFF7A10;

  9. Serial pc(USBTX, USBRX); // tx, rx

  10. int main() {
  11.    while(1)
  12.    {
  13.        pc.printf("\r\nUnique ID: %08X %08X %08X \r\n", uid[0], uid[1], uid[2]);
  14.        }
  15. }
复制代码

点击工具栏的Compile and Download按钮,编译成功后生成bin文件,并且自动下载到本地计算机中。

将NUCLEO-F446RE开发板连接到计算机,设备管理器中会多出一个虚拟串口,并且在计算机中多出一个mbed的可移动磁盘。打开串口调试工具,选择该虚拟串口,并设置参数为9600波特率、8位数据位、无校验以及1位停止位。将生成的bin文件放到mbed可移动磁盘中,NUCLEO-F446RE开发板烧写成功后自动重启。串口工具将显示该开发板的设备标识符UID,在接收区域显示:Unique ID: 00270048 33345105 30373031 。

20160505193127.jpg


跳转到指定楼层
huaiqiao
发表于: 2016-5-27 11:28:43 | 显示全部楼层

MDK的程序怎么读ID啊,我是试过可以通过仿真器,ISP的方式读出来。
回复

使用道具 举报

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

本版积分规则

主题 37 | 回复: 55



手机版|

GMT+8, 2024-11-22 15:19 , Processed in 0.055851 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表