请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28388D 工具与软件:
您好、 Skyler Baumer
我们使用闪存扇区12来存储校准信息。 有关如何将数据写入闪存和从闪存读取数据、我们会参考闪存 API 指南。
从闪存 API 读取数据未在用户指南中提供。 但是、我们在从闪存读取数据时遇到问题。
具体来说、当 CALIB_DATA_SIZE 设置为128或256时、数据可按预期正确读取。 另一方面、当 CALIB_DATA_SIZE 设置为大于2048时、最初的几个位置被正确复制、但之后的位置包含垃圾数据。
用于读取闪存并将其复制到 RAM 的代码:
#define CALIB_DATA_SIZE 128 #define CALIB_RAM_CONFIG_ADDRESS 0x0000E000 void LoadConfigFromFlash(void) { uint32 i = 0; // Initialize Read Buffer uint16 Calib_Read_Buffer[CALIB_DATA_SIZE] = {0}; uint16 *Calib_Pointer; Calib_Pointer = (uint16 *) (CALIB_SECTOR_START_ADDR); // Transfer contents of flash sector to Read Buffer for(i=0;i<CALIB_DATA_SIZE;i++) { Calib_Read_Buffer[i] = *(Calib_Pointer++); } // Copy data to RAM memcpy((void *)CALIB_RAM_CONFIG_ADDRESS, Calib_Read_Buffer, CALIB_DATA_SIZE); }
是否有标准 API 可用于从闪存中读取扇区数据、或者您能否提供一个从闪存中读取数据的示例代码?