您好!
我希望获得以下方面的帮助:我需要在非易失性存储器中写入一些配置参数(在 μ µC 断电后不应丢失参数)。 它不是大量的数据、比如25倍或30倍、约为240字节。
我当时想使用闪存 EEPROM 来实现这一点、因为它是根据我的理解为其制作的。
因此我尝试了 HalCogen 中显示的 exemple、但它不起作用:代码停留在第一个循环中、因为状态始终为 UNINIT。
以下是以下示例代码:
void write_to _flash (void) { uint16 u16JobResult,状态; STD_ReturnType oResult=E_OK; unsigned char read_data[100]={0}; uint8 SpecialRamBlock[100]; unsigned char 模式; uint16 u16writecounter; unsigned int FeeVirtualSectorNumber; unsigned char VsState、u8EEPIndex; unsigned char u8VirtualSector; uint8 Test_Recovery; uint8 Test_Cancel; unsigned int BlockNumber; unsigned int BlockOffset、Length; unsigned char * read_ptr=read_data; unsigned int loop; /*初始化 RAM 阵列。*/ for (loop=0;loop<100;loop++) SpecialRamBlock[loop]= loop; /*初始化费用。 这将创建虚拟扇区、初始化全局变量等。*/ TI_FEE (); 操作 { TI_fee_MainFunction(); delay(); STATUS=TI_FEE _GetStatus (0); } while (Status!= IDLE); /*将块异步写入 EEP。 块大小在 ti_fee_cfg.c 文件中配置。 默认块大小为 8字节*/ BlockNumber=0x1; TI_fee_WriteAsync (BlockNumber、&SpecialRamBlock[0]); 操作 { TI_fee_MainFunction(); delay(); STATUS=TI_FEE _GetStatus (0); } while (状态!=空闲); /*同步将块写入 EEP。 写入将不会发生、因为数据是相同的。 * TI_fee_WriteSync (BlockNumber、&SpecialRamBlock[0]); /*读取长度未知的块*/ BlockOffset = 0; 长度= 0xFFFF; oResult=TI_fee_read (BlockNumber、BlockOffset、READ_PTR、Length); 操作 { TI_fee_MainFunction(); delay(); STATUS=TI_FEE _GetStatus (0); } while (状态!=空闲); /*使写入的块无效*/ TI_FEE 验证块(BlockNumber); 操作 { TI_fee_MainFunction(); delay(); STATUS=TI_FEE _GetStatus (0); } while (状态!=空闲); /*设置组7的格式*/ TI_FEE 格式(0xA5A5A5A5U); }
我猜我已经正确安装了闪存 API、并将代码链接到"C:\ti\Hercules \f021闪存 API\02.01.01\F021_API_CortexR4_BE_L2FMC_V3D16.lib"
我在 HalCogen 没有做过任何事情,除了启用收费司机。 我正在使用 FreeRTOS。
任何线索都很有帮助。
我确实阅读了很多主题、但未找到如何使其正常工作的答案。 有关这方面的文件不是很清楚,即使我的需求是非常基本的,我也无法弄清楚。
谢谢
Audry