打印
[其它应用]

EEPROM驱动代码常见操作有哪些?

[复制链接]
1767|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
麻花油条|  楼主 | 2023-10-11 14:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 麻花油条 于 2023-10-11 14:29 编辑

相信很多读者都使用过类似AT24C0x这种使用I²C读写的EEPROM,在项目中,使用不当就容易导致数据丢失,或者异常的情况。
今天,我们就来讲讲关于EEPROM的内容。
1I²C读写EEPROM基础原理

市面上大部分使用I2C通信的EEPROM,控制时序和读写流程都基本相同。

I²C通信原理,说简单不简单,但说难也不难,主要理解基础原理和时序即可。可以参看我分享的文章:
通信教程 | I²C基础原理及通信协议
通信教程 | 详述I²C总线时序
通信教程 | I²C几种速度及区别
2EEPROM底层驱动

真正实际做过项目的人都知道,好的底层驱动,会给上层应用开发带来很大便利,节省开发时间,以及减少bug发生率

而大部分初学者,或者应届毕业生从事相关开发,一般很少考虑代码的移植性,复用性,或者说容错处理等问题下面,我简单列两点我在项目中,对EEPROM常用的几项操作。1、先写再读,验证写入成功这种方法很好理解:写入之后,再次读去这部分数据,进行一一匹配,验证是否与写入数据一致。一般我是会重复操作3次,也就是说:写入,再读取,如果超过3次都还失败,那么我则放弃写入,认为写入失败,或芯片异常这个方法可以简单解决因异常导致写入失败的问题。2、添加校验信息在上面一层读验证基础上,对保存一些参数,我一般还会:在参数末尾添加类似“和校验”,或“CRC校验”假如你连续存储一个有10字节的参数(数据结构),如果因异常修改了中间某一个字节参数,你读出来进行校验,发现不对,则认为这个参数无效。添加这个校验的目的相信从上面我举例已经明白,就是解决多字节参数中某个字节被恶意修改,导致这个参数无效的问题3、EEPROM在多任务中添加互斥锁使用过操作系统的朋友都知道,多线程访问一个资源,一般都存在互斥的关系。简单的说:一个资源,在同一时刻,只能被一个线程操作。拿EEPROM举例:线程A在往EEPROM写10字节数据,刚6个字节时,线程B想要抢占,往EEPROM写入数据。你觉得线程A应不应该放弃I2C总线,让线程B写入呢?答案肯定是不允许的,所以,就有了互斥锁这么一说。也就是等先占用I2C总线的线程操作完,才释放总线,让其他线程进行操作。这三点应该是我比较常用了,网上还有其他一些相关的容错处理机制,感兴趣的不妨搜索一下。

我这里就不贴代码了,因芯片型号不同,应用不同,代码就存在差异。但我们目的:在保证满足应用的同时,需考虑代码的移植、复用,以及容错

3I²C选择硬件、软件?我们的代码应该使用硬件I2C,还是软件模拟I2C?

这个问题有许多朋友都在问,说句实话,遇到这类有争议的问题,一般来说,需要结合项目实际情况,比如速度、实时性、移植性等。

我遇到这类问题,一般会根据实际情况而定。比如:你的I2C产品要提供给一些不同平台用户,进行二次开发,我觉得软件IO模拟比较好,方便用户嘛。

假如你们公司开发的产品都使用STM32这家公司芯片开发I2C产品,我觉得,你代码可以使用硬件I2C。


使用特权

评论回复
沙发
duo点| | 2023-10-12 10:03 | 只看该作者
具体的操作可能会因所使用的EEPROM型号和设备而略有不同。在编写EEPROM驱动代码时,最好参考EEPROM设备的规格书或数据手册。

使用特权

评论回复
板凳
LOVEEVER| | 2023-10-21 12:36 | 只看该作者
好的底层驱动,会给上层应用开发带来很大便利

使用特权

评论回复
地板
小小蚂蚁举千斤| | 2023-10-24 09:21 | 只看该作者
使用I2C通信的EEPROM,控制时序和读写流程都基本相同,可移植性强

使用特权

评论回复
5
小夏天的大西瓜| | 2023-10-28 21:29 | 只看该作者
建议如果有I2C直接硬件编写

使用特权

评论回复
6
LOVEEVER| | 2023-11-2 08:43 | 只看该作者
在保证满足应用的同时,需考虑代码的移植、复用,以及容错。

使用特权

评论回复
7
tpgf| | 2023-11-4 16:06 | 只看该作者
现在的eeprom大部分都是iic读写的吗

使用特权

评论回复
8
磨砂| | 2023-11-4 17:00 | 只看该作者
eeprom的底层驱动我们并不需要关系吧

使用特权

评论回复
9
观海| | 2023-11-4 17:27 | 只看该作者
只要是使用iic的操作 流程都是一样的

使用特权

评论回复
10
八层楼| | 2023-11-4 21:02 | 只看该作者
iic最高的数据传输速度是多少啊

使用特权

评论回复
11
晓伍| | 2023-11-4 21:41 | 只看该作者
校验的话都有哪些校验方式可供选择呢

使用特权

评论回复
12
drer| | 2023-11-4 22:25 | 只看该作者
如果写入失败的话如何进行处理呢

使用特权

评论回复
13
AdaMaYun| | 2023-11-6 21:13 | 只看该作者
如果过程中发生错误如何解决

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

279

主题

1458

帖子

2

粉丝