对于物联网的应用或者产品版本管理等场合,芯片的信息读取是用户非常关心的问题。本文介绍了瑞萨RA家族单片机读取Unique ID、Part Number和Mask Version信息的方法。
我们可以使用如下三个地址中存储的内容来获得相关信息,其地址如下:
<center><img src="http://mcu.eetrend.com/files/2022-07/wen_zhang_/100561846-260379-1.jpg&…; alt=“关于RA MCU如何读取Unique ID和Device Part Number" /></center>
注:FMIFRT寄存器的地址为0x407F_B19C。
<p><strong>关于FMIFRT寄存器:</strong></p>
<ul>
<li>
<p>FMIFRT是一个只读寄存器,存储Unique ID寄存器、Part Number寄存器和MCU Version寄存器的基址。</p>
</li>
<li>
<p>应该以32位单位读取FMIFRT。 </p>
</li>
<li>
<p>FMIFRT寄存器的地址为0x407F_B19C。</p>
</li>
</ul>
<center><img src="http://mcu.eetrend.com/files/2022-07/wen_zhang_/100561846-260380-2.png&…; alt=“关于RA MCU如何读取Unique ID和Device Part Number" /></center>
以下分别介绍如何通过程序代码读出Unique ID、Part Number和Mask Version,这里以RA2L1为例。
(1)Unique ID寄存器地址和读出方法
<center><img src="http://mcu.eetrend.com/files/2022-07/wen_zhang_/100561846-260381-3.png&…; alt=“关于RA MCU如何读取Unique ID和Device Part Number" /></center>
直接通过FSP的API“R_BSP_UniqueIdGet”就可以读出128位的Unique ID;
参考下面的命令:
<pre style="overflow-x:auto; background-color:#e9e9e9;">const bsp_unique_id_t* unique_id = R_BSP_UniqueIdGet();</pre>
(2)Part Number寄存器地址和读出方法
<center><img src="http://mcu.eetrend.com/files/2022-07/wen_zhang_/100561846-260382-4.png&…; alt=“关于RA MCU如何读取Unique ID和Device Part Number" /></center>
FSP中没有读取Part Number的API,所以需要使用以下代码。
首先定义Part Number寄存器的地址和保存Part Number数组的结构体。
<pre style="overflow-x:auto; background-color:#e9e9e9;">#define BSP_FEATURE_BSP_PART_NUMBER_POINTER (0x01001C10U)
typedef struct st_bsp_part_number
{
union
{
uint32_t part_number_words[4];
uint8_t part_number_bytes[16];
};
} bsp_part_number_t;</pre>
然后在用户代码中执行下面的命令,即可将Part Number读出。
<pre style="overflow-x:auto; background-color:#e9e9e9;">const bsp_part_number_t* part_number = BSP_FEATURE_BSP_PART_NUMBER_POINTER;</pre>
(3)MCU Version寄存器地址和读出方法
<center><img src="http://mcu.eetrend.com/files/2022-07/wen_zhang_/100561846-260383-5.png&…; alt=“关于RA MCU如何读取Unique ID和Device Part Number" /></center>
FSP中也没有读取MCU Version的API,所以需要使用以下代码。
首先定义MCU Version寄存器的地址:
<pre style="overflow-x:auto; background-color:#e9e9e9;">#define BSP_FEATURE_BSP_MASK_REVISIOM_POINTER (0x01001C20U)</pre>
然后在用户代码中执行下面的命令,即可将MCU Version读出。
<pre style="overflow-x:auto; background-color:#e9e9e9;">const uint8_t* mask_version = BSP_FEATURE_BSP_MASK_REVISIOM_POINTER;</pre>
调试状态下读出的结果如下(以RA2L1为例):
<center><img src="http://mcu.eetrend.com/files/2022-07/wen_zhang_/100561846-260384-6.png&…; alt=“关于RA MCU如何读取Unique ID和Device Part Number" /></center>
<center><img src="http://mcu.eetrend.com/files/2022-07/wen_zhang_/100561846-260385-7.png&…; alt=“关于RA MCU如何读取Unique ID和Device Part Number" /></center>
<center><img src="http://mcu.eetrend.com/files/2022-07/wen_zhang_/100561846-260386-8.png&…; alt=“关于RA MCU如何读取Unique ID和Device Part Number" /></center>
产品型号是用ASCII码编写的,这里以RA2L1为例做以下说明。
<center><img src="http://mcu.eetrend.com/files/2022-07/wen_zhang_/100561846-260387-9.jpg&…; alt=“关于RA MCU如何读取Unique ID和Device Part Number" /></center>
来源:<a href="https://mp.weixin.qq.com/s/v1CkrkLPeakZJNUrEcmd7Q">瑞萨MCU小百科</a>
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。