eeprom存储器只能按字写,读可以按字和字节读

gongxijie 2014-11-12 09:14:38
存储器写入的时候只能按字(u32)写,但是操作存储器的地址接口参数是字节(u8 *)的,这就有一个问题是,如果操作地址不是按字对齐,并且写入数据长度不是字的倍数,就会出差错。通常想法是,如果不是按字对齐地址,就把这个整字读出来,然后把字节数据拼接进去。请问谁能有更高效的代码?
...全文
562 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dirk 2014-11-18
  • 打赏
  • 举报
回复
地址接口参数是字节(u8 *),注意,这是指针。虽然原则上讲,你可以指向任意一个地址,但是既然你写入是4字节对齐的,你读取的首地址不按4字节对齐,那么意义是什么?
用户 昵称 2014-11-14
  • 打赏
  • 举报
回复
既然硬件限制了必须4字节读写,那么就没有更好的办法,这种eep估计是特殊的flash,或新工艺。
w74839520 2014-11-14
  • 打赏
  • 举报
回复
我以前用的是片区的读写,有时候有问题换成200 300这样的地址就好了。希望可以帮到你
用户 昵称 2014-11-14
  • 打赏
  • 举报
回复
跨页读写flash都能做到,跨4字节更容易吧。
sprawling 2014-11-13
  • 打赏
  • 举报
回复
引用 6 楼 gongxijie 的回复:
[quote=引用 3 楼 sprawling 的回复:] 一般先在内存里面做个备份,然后在必要的时候刷到eeprom里面去。
那也得考虑eeprom地址对不对齐的问题啊[/quote] 对于arm,只要你不是声明成pack的,默认都是4byte对齐的,当然,你要声明align(4)也是可以的
zhxianbin 2014-11-13
  • 打赏
  • 举报
回复
在数据结构的设计上确保是 4B 的整数倍,不足的补齐
gongxijie 2014-11-13
  • 打赏
  • 举报
回复
引用 3 楼 sprawling 的回复:
一般先在内存里面做个备份,然后在必要的时候刷到eeprom里面去。
那也得考虑eeprom地址对不对齐的问题啊
gongxijie 2014-11-13
  • 打赏
  • 举报
回复
引用 4 楼 zhxianbin 的回复:
eeprom 可以随机读写吧
这个eeprom只能按字写,不能按字节写,读可以
zhxianbin 2014-11-12
  • 打赏
  • 举报
回复
eeprom 可以随机读写吧
woshi_ziyu 2014-11-12
  • 打赏
  • 举报
回复
一般不允许进行跨页边界读写 只能在设计上进行控制
sprawling 2014-11-12
  • 打赏
  • 举报
回复
一般先在内存里面做个备份,然后在必要的时候刷到eeprom里面去。
gongxijie 2014-11-12
  • 打赏
  • 举报
回复
引用 1 楼 woshi_ziyu 的回复:
一般不允许进行跨页边界读写 只能在设计上进行控制
我已经做了控制,上层函数控制页写,可以写多页,底层函数只能在一页内写。

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧