首页 / 行业
关于1I²C读写EEPROM基础原理
2022-03-09 17:14:00
相信很多读者都使用过类似AT24C0x这种使用I²C读写的EEPROM,在项目中,使用不当就容易导致数据丢失,或者异常的情况。
今天就来讲讲关于EEPROM的内容。
1I²C读写EEPROM基础原理
市面上大部分使用I2C通信的EEPROM,控制时序和读写流程都基本相同。
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。
原文标题:嵌入式开发 | EEPROM驱动代码常见操作
文章出处:【微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。
审核编辑:彭菁最新内容
手机 |
相关内容
写flash芯片时为什么需要先擦除?
写flash芯片时为什么需要先擦除?,擦除,芯片,充电,初始状态,存储单元,数据,Flash芯片是一种非易失性存储器技术,用于存储数据并实现固半导体主控技术:驱动自动驾驶革命的
半导体主控技术:驱动自动驾驶革命的引擎,自动驾驶,交通,自动驾驶系统,数据,车辆,自动,随着科技的不断进步,自动驾驶技术已经成为现实Arbe 4D成像雷达以高分辨率雷达技
Arbe 4D成像雷达以高分辨率雷达技术和先进处理技术消除“幽灵刹车”问题,刹车,成像,分辨率,系统,目标,数据,Arbe 4D成像雷达是一种清华大学研发光电融合芯片,算力超商
清华大学研发光电融合芯片,算力超商用芯片三千余倍,芯片,研发,商用,测试,计算,科学研究,近日,清华大学发布了一项重要科研成果,他们成工业物联网数据采集:从Modbus到MQTT
工业物联网数据采集:从Modbus到MQTT,数据采集,物联网,模式,网关,协议,数据,工业物联网(Industrial Internet of Things,IIoT)的核心任务射频前端芯片GC1103在智能家居无线
射频前端芯片GC1103在智能家居无线通信IoT模块中应用,模块,芯片,无线通信,智能家居,支持,数据交换,射频前端芯片GC1103是一种低功耗面向6G+AI,鹏城云脑的演进
面向6G+AI,鹏城云脑的演进,鹏城,人工智能,数据存储,脑可,智能终端,智能,随着科技的不断进步,人们的生活方式也在不断改变。6G+AI(人工平头哥首颗SSD主控芯片镇岳510问世
平头哥首颗SSD主控芯片镇岳510问世,将率先在阿里云数据中心部署,数据中心,芯片,平头,需求,可靠性,稳定性,近日,平头哥首颗SSD主控芯片