EEPROM,在项目中我一般会做几项特殊操作

发布者:csZhou最新更新时间:2021-01-25 来源: eefocus关键字:EEPROM  项目 手机看文章 扫描二维码
随时随地手机看文章

图片


    类似AT24C0x这类使用I2C读写的EEPROM,相信很多人都使用过。但后台还是有很多相关的问题,今天写点相关内容给大家。


1I2C读写EEPROM基础原理

市面上大部分使用I2C通信的EEPROM,控制时序和读写流程都相同,或类似。我们最常见的就是AT24C0x这类EEPROM。


I2C通信原理,这个问题关注我较早的朋友看过我分享的内容,应该很多使用MCU进行底层开发,或者学习底层的朋友都知道I2C通信原理。


如果还有不明白I2C通信基础的朋友,可以回看一下我之前分享的文章:

1.STM32F10x_模拟I2C读写EEPROM


2.STM32F10x_硬件I2C读写EEPROM


以前写文章没怎么注重排版,阅读体验不是很好,但内容应该还是写到位了。


还有,文中的参考代码在我“底部菜单”下载区可以找到。


2EEPROM底层驱动

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


而大部分初学者,或者应届毕业生从事相关开发,一般很少考虑代码的移植性,复用性,或者说容错处理等问题。


下面,我简单列两点我在项目中,对EEPROM常用的几项操作。


1.写,再读,验证写入成功

这种方法很好理解:写入之后,再次读去这部分数据,进行一一匹配,验证是否与写入数据一致。


一般我是会重复操作3次,也就是说:写入,再读取,如果超过3次都还失败,那么我则放弃写入,认为写入失败,或芯片异常。


这个方法可以简单解决因异常导致写入失败的问题。


2.添加校验信息

在上面一层读验证基础上,对保存一些参数,我一般还会:在参数末尾添加类似“和校验”,或“CRC校验”。


假如你连续存储一个有10字节的参数(数据结构),如果因异常修改了中间某一个字节参数,你读出来进行校验,发现不对,则认为这个参数无效。


添加这个校验的目的相信从上面我举例已经明白,就是解决多字节参数中某个字节被恶意修改,导致这个参数无效的问题。


3.EEPROM在多任务中添加互斥锁

使用过操作系统的朋友都知道,多线程访问一个资源,一般都存在互斥的关系。简单的说:一个资源,在同一时刻,只能被一个线程操作。


那EEPROM举例:线程A在网EEPROM写10字节数据,刚6个字节时,线程B想要抢占,往EEPROM写入数据。你觉得线程A应不应该放弃I2C总线,让线程B写入呢?


答案肯定是不允许的,所以,就有了互斥锁这么一说。也就是等先占用I2C总线的线程操作完,才释放总线,让其他线程进行操作。


这三点应该是我比较常用了,网上还有其他一些相关的容错处理机制,感兴趣的不妨搜索一下。


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


3硬件、软件I2C

我们代码应该使用硬件I2C? 还是软件模拟I2C?


这个问题有许多朋友都在问,说句实话,遇到这类有争议的问题,我一般还是保持中立。


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


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


4STM32硬件I2C问题

相信很多朋友都知道这个问题,在官网也能找到相关说明,这里再描述一下吧。


问题描述

如果没有在传输当前字节之前处理EV7、 EV7_1、 EV6_1、 EV2、 EV8和EV3事件,有可能产生问题,如收到一个额外的字节、两次读到相同的数据或丢失数据。


暂时解决办法

当不能在传输当前字节之前和当改变ACK控制位送出相应脉冲之前,处理EV7、EV7_1、EV6_1、EV2、EV8和EV3事件时,建议如下操作:

1.使用I2C的DMA模式,除非作为主设备时只接收一个字节。

2.使用I2C的中断并把它的优先级设为最高级别,使得它不能被中断。


这里就想简单说下,很多人看到STM32的I2C有bug,就在在网上恶意吐槽,或者开骂。


有的人看不惯,或者不允许别人有一点点错误。同样,我分享的内容有些人觉得不好就开始恶语攻击了。


这类人我其实很不解,别人芯片有bug,你不能接收,不用就行了,还非得到处说着说那。


哦,抱歉,一下写来偏离主题了,就到这里吧,希望上面内容对大家有帮助。


关键字:EEPROM  项目 引用地址:EEPROM,在项目中我一般会做几项特殊操作

上一篇:关于USART波特率、TIM的外设预分频值
下一篇:CRC校验、STM32中CRC计算单元、CRC应用

推荐阅读最新更新时间:2024-11-08 14:58

南京欣铨集成电路半导体测试项目开工
    据eeworld网消息,日前,台积电配套项目、欣铨(南京)集成电路有限公司半导体测试项目开工仪式在浦口开发区举行。   该项目位于浦口经济开发区桥林园区,秋韵路以北、春羽路以东地块,总占地面积约80亩,总投资为1.35亿美元。投资方欣铨科技股份有限公司成立于1999年,是台湾一家专业的半导体测试厂,主要从事存储器、逻辑与混合信号集成电路的测试工程开发及测试生产。项目预计于11月投产,将建设总建筑面积约27500平方米的厂房,购置测试机、针测机、探针卡分析仪、芯片自动检测机、烧烤炉等相关设备600台(套),建设IC测试生产线2条,初期产品将以手机用通讯芯片为主。      据了解,欣铨近几年进行全球化布局,包括在新加坡及韩国
[半导体设计/制造]
木林森井冈山项目新进展,启动第四期半导体生产项目
今日早间,木林森(下称“公司”)发布公告,公司与井冈山经济技术开发区管委会(以下简称“井冈山经开区”)经友好协商,签订了《木林森高科技产业园第四期项目合作框架协议》。 据公告显示,公司在井冈山经济技术开发区投资建设的项目,目前一、二、三期项目已基本达到序时进度;现启动第四期半导体生产项目;该项目主要从事半导体封装测试、生产、销售。 据悉,去年3月份,木林森公告称,公司与井冈山经开区签订了《木林森覆铜板生产项目合作框架协议》,项目计划总投资30亿元(其中包括设备、土地、厂房投资),主要从事线路板用覆铜板研发、生产、销售工作。 木林森表示,我国LED产业呈高速增长态势,初步形成了比较完整的研发和产业体系,产业总体规模持续壮
[电源管理]
50亿光通信项目落户四川丹棱 建成后产值200亿
    2013年8月1日消息,据丹棱县人民政府网站信息显示,总投资50亿的 光通信 高新产业基地项目落户四川丹棱县。   7月29日,眉山丹棱县举行光通信高新产业基地项目签约仪式,签约仪式上,丹棱县与温州中光科技有限公司、四川威力机械制造有限公司签订投资协定。该项目总投资50亿元,项目占地两千亩,分五期建设,主要生产纳米氧化锆新材料、光通信系列、光机电一体化产品、特种陶瓷系列产品。项目全部建成之后产值将达200亿元。   据悉,今年5月,丹棱县县长朱莉一行曾到中光科技有限公司考察,先后参观了精加工车间、检测车间、跳线车间、分路器车间。
[手机便携]
Microchip推出单I/O总线串行EEPROM系列
  2008年5月6日,Microchip Technology Inc.今天宣布推出最新的总共10款具备单I/O总线接口的串行EEPROM器件系列。新器件支持Microchip待批专利的UNI/O存储器件协议。11XX010、11XX020、11XX040、11XX080及11XX160是业内首批能支持从10kHz至100kHz范围内任意数据速率的单I/O EEPROM器件,也是唯一具有3引脚SOT-23封装的1KB、2KB、4KB、8KB及16KB的EEPROM器件(还具有其他高引脚数封装)。新器件及总线集强大功能和低引脚封装于一身,可帮助设计人员有效减小系统体积并降低成本。   现今的消费电子产品在日渐轻巧的同时具备越来越
[新品]
理想丰满现实骨感 Google暂停模块化手机项目
    在2013年10月,当时还在Google旗下的Moto移动提出了一个叫做Project Ara的计划,旨在将手机各个部件模块化,从而让用户能更方便对手机进行升级。尽管在这3年的时间中,有关于Project Ara即将上市的传闻不停传出,甚至在今年 5 月份的Google I/O 上,Google还宣布自己正在与合作伙伴全力开发Project Ara项目,但现在有消息传出:Google目前已经暂停了Project Ara项目的开发工作。这款模块化手机的前景渺茫。   Project Ara立项之初的立项还是丰满的。项目成立旨在让智能手机像PC攒机一样自由选择与替换甚至移除任何的零组件,包括处理器、屏幕、键盘、电池及其他手
[手机便携]
英飞凌主导并协调大型研究项目,为高度自动化联网汽车开发超级计算机
【2023 年 04 月 11日,德国慕尼黑讯】 英飞凌科技股份公司表示,内置在汽车中的高性能计算机,能够尽可能快速、可靠地处理所有可用的数据和信息,以便车辆能够安全地行驶,这是自动化联网汽车的关键所在 。曼海姆-CeCaS研究项目的宗旨就是要开发相应的车用超级计算平台。该项目由来自业内和高校的 30 家研究合作伙伴共同参与,并且已被德国联邦政府纳入旨在推动汽车与移动出行行业实现数字化转型的大规模资助计划之中。整个项目由英飞凌负责领导和协调。近日,各方代表齐聚英飞凌慕尼黑总部 Campeon 大楼,出席了项目启动仪式。 英飞凌科技汽车电子事业部总裁 Peter Schiefer 表示:“驾驶辅助系统如此广受欢迎,意味着
[物联网]
英飞凌主导并协调大型研究<font color='red'>项目</font>,为高度自动化联网汽车开发超级计算机
STM8L 读写EEPROM(24LC64)
使用24LC64(24XX64)是低功耗应用的EEPROM,存储容量 8K byte(64K bit),IIC 最大时钟频率400 KHz(24FC64达到1MHz),低功耗CMOS技术:工作电流 1 mA(典型)、 待机电流 1 μ A(典型),32字节的页写缓冲器,超过100万擦/写周期,数据保存 200年。 24C02只有8字节的页写缓冲器,操作的地址只有8位,而24LC64操作的地址包含高8位和低8位。两者的数据手册去区别如下: 1、AT24C02页写时序: 2、24LC64页写时序: STM8L的程序设计如下: (1)数据的页写操作: (2)数据的连续读取:
[单片机]
STM8L 读写<font color='red'>EEPROM</font>(24LC64)
国润储能朔州低碳机场全钒液流项目入选2024年服贸会优秀成果案例
2024年服贸会我省共有9家企业13项技术(项目)入选服贸会成果发布,其中优秀案例4项、新品发布7项、重要项目2项;2家企业参加现场发布,7家企业参加线上发布。成果发布是服贸会多层次活动框架体系的重要组成部分,2024年服贸会成果发布在服贸会成果发布厅举办新产品 ...
[新能源]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved