完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
小弟最近在玩一块新唐M058S的片子,实验的dataflash功能。程序是读数据,再++,写进去。本意是每次上电或者复位从上次数值开始,可是发现,每次断电,第一次读出的数据都是从FFFF。很奇怪这样?
#define DATA_FLASH_TEST_BASE (FMC->DFBADR) #define DATA_FLASH_TEST_END (FMC->DFBADR + 0x1000) int32_t VerifyData(uint32_t u32StartAddr, uint32_t u32EndAddr, uint32_t u32Pattern) { uint32_t u32Addr; uint32_t u32Data; for(u32Addr = u32StartAddr; u32Addr < u32EndAddr; u32Addr += 4) { u32Data = FMC_Read(u32Addr); if(u32Data != u32Pattern) { return -1; } } return 0; } |
|
相关推荐
1个回答
|
|
这是因为M058S的Data Flash默认情况下是被擦写过的状态,所以在第一次读出时会是0xFFFF。解决这个问题的方法是在程序初始化时,需要进行Data Flash的擦除操作。可以使用以下代码进行擦除:
FMC->ISPCMD |= FMC_ISPCMD_PAGE_ERASE; //选择擦除模式 FMC->ISPADDR = u32PageAddr; //设置擦除地址 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk; //开始擦除 while(FMC->ISPTRG && FMC->ISPCON & FMC_ISPCON_ISPEN_Msk); //等待擦除完成 需要注意的是,擦除操作是会消耗Data Flash的寿命的,所以需要适量使用。另外如果要保存数据,可以考虑使用其他存储方式,比如EEPROM或者外部Flash等。 |
|
|
|
只有小组成员才能发言,加入小组>>
661 浏览 0 评论
1083 浏览 1 评论
2454 浏览 5 评论
2779 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2615 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
638浏览 9评论
636浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
765浏览 6评论
610浏览 5评论
651浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 03:31 , Processed in 1.553282 second(s), Total 80, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号