RA4M2-SENSOR开发板的Memory存储区读写测试
本帖最后由 jinglixixi 于 2025-9-30 23:18 编辑申请原创
RA4M2-SENSOR开发板允许对Memory存储器进行读写,而Memory存储器则包括Code Flash、Data Flash及SRAM。对于RA4M2-SENSOR 开发板来说,其芯片型号为 R7FA4M2AD3CFL。它的分为两块,一块大小为8Kb,另一块为32Kb,见图1所示。
图1flash存储空间大小
对于code flash来说,其存储区域划分见图2所示。
图2 存储区域划分
为进行code flash读写测试,需使用RASC按图3进行配置并生成KEIL项目工程。
图3 配置处理
在完成配置并生成项目工程后,需为读写code flash添加以下函数:void FLASH_Init(void)
{
err = R_FLASH_HP_Open(&g_flash0_ctrl,&g_flash0_cfg);
assert(err == FSP_SUCCESS);
}
void Code_FLASH_Test(void)
{
err = FSP_SUCCESS;
uint8_t *p = CODE_FLASH_TEST_ADDR;
for(uint8_t i = 0;i < CODE_FLASH_TEST_NUM;i++)
{
write_buffer = i;
printf("buffer[ %d ]= %d \n\r",i,write_buffer );
}
// 擦除,在写入新数据前必须擦除
printf("Erase start\n\r");
__disable_irq(); // 关闭所有中断
err = R_FLASH_HP_Erase(&g_flash0_ctrl,CODE_FLASH_TEST_ADDR,1);// 0x00078000地址开始,擦除一个块
assert(err == FSP_SUCCESS);
__enable_irq();
// 写入新数据
printf("write start\n\r");
__disable_irq();
err = R_FLASH_HP_Write(&g_flash0_ctrl, (uint32_t)write_buffer, CODE_FLASH_TEST_ADDR, CODE_FLASH_TEST_NUM);
assert(err == FSP_SUCCESS);
__enable_irq();
// 读取指定地址的数据
printf("read start\n\r");
for(uint8_t i = 0;i < CODE_FLASH_TEST_NUM;i++)
{
read_buffer = *(p + i);
printf("buffer[ %d ]= %d \n\r",i,read_buffer );
}
// 对比写入和读取的数据
if (0 == memcmp(read_buffer, write_buffer, CODE_FLASH_TEST_NUM))
{
printf("Data consistency\n\r"); // 数据一致,读写正确
}
else
{
printf("Data inconsistency\n\r"); // 数据不一致
while(1);
}
}
读写测试的主程序为:void hal_entry(void)
{
err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
assert(FSP_SUCCESS == err);
FLASH_Init();
pritf("FLASH test: \n\r");
Code_FLASH_Test();
while(1);
}
经程序的编译和下载,其程序的测试结果如图4至图6所示。
图4 写入数据
图5 读取数据
图6 数据对比
此外,还可以在DeBug模式下,使用变量和存储器来进行观察。通过指定存储器地址来观察的效果如图7所示,而通过变量来观察的效果则如图8和图9所示。
图7观察存储器内容
图8 观察写入变量
图9 观察读取变量
页:
[1]