完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,我现在在对xmc7200codeflash区写数据的时候发现只能按512Bytes大小写去,但数据手册里描述的支持64bits写入。SDK里面的Cy_Flash_ProgramRow里面的函数里:
flashContext.opcode = CY_FLASH_OPCODE_PROGRAM_ROW | CY_FLASH_BLOCKING_MODE; flashContext.arg1 = CY_FLASH_DATA_LOC_SRAM;(CY_FLASH_DATA_LOC_SRAM=0x100,这个字段不是定义数据长度的么?) flashContext.arg2 = rowAddr; flashContext.arg3 = (uint32_t)data; 请问如果我要写长度64bits的数据应该如何操作呢? |
|
相关推荐
1个回答
|
|
XMC7200的codeflash主要操作是以512字节为单位的。但是,你可以使用以下步骤来写入一个64位的数据:
1. 首先,将64位的数据拆分为8个字节(64位/ 8位=8个字节)。 2. 将拆分后的每个字节写入到对应的512字节的块中。这意味着每个512字节块只写入了8个字节,其余字节应设置为0。 3. 即使只写入了8个字节,仍然需要将整个512字节的块进行擦除和编程。这是因为,对于XMC7200的codeflash来说,只能以512字节的方式进行擦除和编程。 以下是一个示例代码,用于将64位的数据写入到XMC7200的codeflash中: ```c #include "cy_flash.h" void write64bitData(uint64_t data, uint32_t rowAddr) { uint8_t buffer[512] = {0}; // Split 64-bit data into 8 bytes for (int i = 0; i < 8; i++) { buffer[i] = (data >> (i * 8)) & 0xFF; } // Erase and program 512-byte block cy_flash_context_t flashContext; flashContext.opcode = CY_FLASH_OPCODE_PROGRAM_ROW | CY_FLASH_BLOCKING_MODE; flashContext.arg1 = CY_FLASH_DATA_LOC_SRAM; flashContext.arg2 = rowAddr; flashContext.arg3 = (uint32_t)buffer; Cy_Flash_ProgramRow(&flashContext); } ``` 请注意,在实际使用中,你可能还需要添加错误处理和完成后的操作。 希望对你有所帮助! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
72 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
509 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
546 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
545 浏览 0 评论
1008 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 12:57 , Processed in 0.517149 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号