EEPROM驱动代码常见操作

发布时间:2023-04-06  

相信很多读者都使用过类似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。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    stlink驱动安装教程设置流程;ST-Link是ST公司推出的一种专用于对STM32系列单片机进行调试和编程的工具,它可以通过USB接口与计算机建立连接并进行调试和编程操作。在使用ST-Link......
    索中包括这个位置”。 然后“浏览”到USB驱动所在的目录,确认“下一步”,系统自动安装USB驱动,并“完成”。   此时,在“计算机管理”中,有一个新硬件名称“libusb-win32 devices  ”,列表......
    线把开发板连接到电脑上面,然后通过“我的电脑”右键点击属性,然后点击设备管理器,在”其他设备“处出现了一个感叹号(因为电脑无法识别它),下载CH340-CH341驱动安装即可。 驱动安装......
    低功耗、手机应用软件“ST BLE Sensor” 实验1:STM32固件下载和演示测试 连接B-L475-IOT01A 用Micro USB线连接到B-L475-IOT01A 连接之后,驱动会自动安装......
    OS及任天堂Switch等不同平台内置的网络驱动程序,透过这个免驱动安装( Driverless)的特点,可轻松地实现便利的即插即用(Plug and Play)连网功能。 本文引用地址:USB以太......
    、Linux/Android/Chrome OS及任天堂Switch等不同平台内置的网络驱动程序,透过这个免驱动安装( Driverless)的特点,可轻松地实现便利的即插即用(Plug and Play......
    /Android/Chrome OS及任天堂Switch等不同平台内置的网络驱动程序,透过这个免驱动安装( Driverless)的特点,可轻松地实现便利的即插即用(Plug and Play)连网......
    汽车主动安全系统的那些事儿;“安全”一直是车主对车辆考核的重要指标。车辆安全分可以从主动安全和被动安全两个方面进行分类。今天就来说说汽车主动安全系统的那些事儿。 什么是主动安全系统? 主动安......
    完成后断开USB,然后安装上位机软件。    上位机软件安装完成后,再次插入USB会自动安装驱动。 打开上位机软件就可以开始使用了。 ......
    /Android/Chrome OS及任天堂Switch等不同平台内置的网络驱动程序,透过这个免驱动安装( Driverless)的特点,可轻松地实现便利的即插即用(Plug and Play)连网功能。 USB......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>