本文介绍了瑞萨RA家族单片机读取Unique ID、Part Number和Mask Version信息的方法。
我们可以使用如下三个地址中存储的内容来获得相关信息,其地址如下:
| 项目 |
RA2E1/RA2E2/RA2L1 |
RA2A1/RA4M1/RA4W1/RA6M1/RA6M2/RA6M3/RA6T1 |
RA4M2/RA4M3/RA6M4/RA6M5/RA6T2/RA4E1/ RA6E1 |
| Unique ID (16bytes) |
0x0100_1C00 |
FMIFRT+14h (0x407F_B1B0) |
0x0100_8190 |
| Part number (16bytes) |
0x0100_1C10 |
FMIFRT+24h (0x407F_B1C0) |
0x0100_80F0 |
| Mask version (1byte) |
0x0100_1C20 |
FMIFRT+44h (0x407F_B1E0) |
0x0100_81B0 |
| FMIFRT注 |
No |
Yes |
No |
注: FMIFRT寄存器的地址为0x407F_B19C。
关于FMIFRT寄存器
- FMIRT 寄存器内置于 RA2A1、RA4M1、RA4W1、RA6M1、RA6M2、RA6M3 和 RA6T1 中。
- FMIFRT是一个只读寄存器,存储Unique ID寄存器、Part Number寄存器和MCU Version寄存器的基址。
- 应该以32位单位读取FMIFRT。
- FMIFRT寄存器的地址为0x407F_B19C。

以下分别介绍如何通过程序代码读出Unique ID、Part Number和Mask Version,这里以RA2L1为例。
(1)Unique ID寄存器地址和读出方法

直接通过FSP的API “R_BSP_UniqueIdGet”就可以读出128位的Unique ID;
参考下面的命令:
const bsp_unique_id_t* unique_id = R_BSP_UniqueIdGet();
(2)Part Number寄存器地址和读出方法

FSP中没有读取Part Number的API,所以需要使用以下代码。
首先定义Part Number寄存器的地址和保存Part Number数组的结构体。
#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;
然后在用户代码中执行下面的命令,即可将Part Number读出。
const bsp_part_number_t* part_number = BSP_FEATURE_BSP_PART_NUMBER_POINTER;
(3)MCU Version寄存器地址和读出方法

FSP中也没有读取MCU Version的API,所以需要使用以下代码。
首先定义MCU Version寄存器的地址:
#define BSP_FEATURE_BSP_MASK_REVISIOM_POINTER (0x01001C20U)
然后在用户代码中执行下面的命令,即可将MCU Version读出。
const uint8_t* mask_version = BSP_FEATURE_BSP_MASK_REVISIOM_POINTER;
调试状态下读出的结果如下(以RA2L1为例):


产品型号是用 ASCII 码编写的,这里以RA2L1为例做以下说明。
