电子说
对于物联网的应用或者产品版本管理等场合,芯片的信息读取是用户非常关心的问题。本文介绍了瑞萨RX家族单片机读取Unique ID的方法。
对于RX族MCU来讲,读取Unique ID分为以下两种方式:
注:由于Unique ID存储在闪存的非编址区域中,用户无法改写,所以需要使用Unique ID读取命令读取寄存器值来获取。
1、RX110、RX111、RX113、RX130、RX13T:使用使用Firmware Integration Technology(FIT)的Unique ID读取(UID)模块来获得MCU的Unique ID。
UID模块能够读取存储在非编址区域中的32字节Unique ID,并将其存储在指定区域中。以下将该模块称为UID FIT模块。具体可以扫描下方二维码查看参考应用笔记(需要登录后查看):
https://www2.renesas.cn/jp/zh/oauth2/default/v1/authorize?client_id=0oa2ixjskq8o2hdJB357 response_type=code scope=openid%20email%20phone%20profile%20MyRenesasUserInfo redirect_uri=https%3A//www2.renesas.cn/openid-connect/renesas-okta state=GT4jM6d9Q-UuNCLokJdUeayOpaGTqYTCHQ6VOBpzjEY
UID FIT模块利用闪存的自编程功能从非编址区域读取Unique ID。定序器首先进入ROM P/E模式,由于在该模式下无法读取ROM中的值,因此程序将会被传送到RAM并在RAM中执行。读取Unique ID后,程序会再次返回到ROM中继续执行程序。
在工程中UID FIT模块可以通过API函数的调用来实现。
读取唯一ID的步骤如下:
● 调用R_UID_Open()函数。
将程序从ROM转移到RAM。
● 调用R_UID_Read()函数。
跳转到RAM。
进入P/E模式(该模式下无法读取ROM)。
执行Unique ID读取命令。
返回读取模式(该模式下可以读取ROM)。
通过跳转返回到ROM。
UID FIT模块的处理示例如下所示:
注意,该模块有以下限制:
ROM或E2 DataFlash中的区域不能指定为存储读取的Unique ID的区域。
RX130的Unique ID读出结果参考如下:
UIDR0: 0x32UIDR8: 0xff UIDR16: 0x1cUIDR24: 0xff
UIDR1: 0x23UIDR8: 0xffUIDR17: 0x0eUIDR25: 0xff
UIDR2: 0x7aUIDR10: 0xffUIDR18: 0x19UIDR26: 0xff
UIDR3: 0xf3UIDR11: 0xffUIDR19: 0xffUIDR27: 0xff
UIDR4: 0xffUIDR12: 0xffUIDR20: 0xffUIDR28: 0xff
UIDR5: 0xffUIDR13: 0xffUIDR21: 0xffUIDR29: 0xff
UIDR6: 0xffUIDR14: 0xffUIDR22: 0xffUIDR30: 0xff
UIDR7: 0xffUIDR15: 0xffUIDR23: 0xffUIDR31: 0xff
2、除RX110、RX111、RX113、RX130、RX13T以外的RX MCU:通过寄存器UIDR0、UIDR1、UIDR2和UIDR3可以获取MCU的唯一ID。
因iodefine.h中的定义不同,对于RX65N、RX24T、RX231等,请使用以下代码:
unsigned long id[4] = {0, 0, 0, 0};
id[0] = FLASHCONST.UIDR0;
id[1] = FLASHCONST.UIDR1;
id[2] = FLASHCONST.UIDR2;
id[3] = FLASHCONST.UIDR3;
对于RX140等,请使用以下代码:
unsigned long id[4] = {0, 0, 0, 0};
id[0] = FLASH.UIDR0;
id[1] = FLASH.UIDR1;
id[2] = FLASH.UIDR2;
id[3] = FLASH.UIDR3;
几个RX MCU的Unique ID读出结果参考如下:
RX65N(R5F565NEDDFP)
UIDR0:0x3647384e
UIDR1:0x20203830
UIDR2:0x00380001
UIDR3:0x0f041189
RX24T(R5F524TAADFP)
UIDR0:0x1b011001
UIDR1:0x31352a09
UIDR2:0x3d0006ff
UIDR3:0x574b2500
RX140(R5F51406ADFN)
UIDR0:0x1a071501
UIDR1:0x09391b0b
UIDR2:0x3a0003ff
UIDR3:0x574b1500
RX231(R5F52318ADFP)
UIDR0:0x0b031101
UIDR1:0x59061d11
UIDR2:0x0b0015ff
UIDR3:0x574b2b00
来源:瑞萨MCU小百科
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !