0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 作者:黄工的嵌入式技术 2020-03-04 14:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

1I2C读写EEPROM基础原理

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

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

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

1.STM32F10x_模拟I2C读写EEPROM

2.STM32F10x_硬件I2C读写EEPROM

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

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

2

EEPROM底层驱动

真正实际做过项目的人都知道,好的底层驱动,会给上层应用开发带来很大便利,节省开发时间,以及减少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。

4

STM32硬件I2C问题

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

问题描述

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

暂时解决办法

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • EEPROM
    +关注

    关注

    9

    文章

    1149

    浏览量

    86578
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1568

    浏览量

    132124
  • 字节
    +关注

    关注

    0

    文章

    44

    浏览量

    14434
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    没有研发团队时,手电项目灯珠方案一般怎么推进?

    更慢 所以想请教下大家:如果是手电项目,而且客户自己没有完整研发团队,一般会怎么把前面的灯珠选型、参数定义、光学匹配这些事情推进下去? 常见做法会是: 先从标准型号开始点点试?
    发表于 04-05 15:41

    光缆的使用年限一般是好久呢

    光缆的使用年限一般为20至30年,具体年限受材料、制造工艺、应用场景、安装环境及维护条件等因素影响。以下是详细分析: 普通光缆:设计寿命通常为20年,这是行业普遍接受的标准。正常使用条件下,普通
    的头像 发表于 03-13 10:06 690次阅读

    一般pcb测试需要做哪些项目检查?

    一般PCB测试旨在确保电路板的电气性能、物理完整性和可靠性,避免生产缺陷。实际生产过程中,常见项目涵盖外观检查、电气测试和可靠性验证等多方面。作为国内领先的PCB测量仪器、智能检测设备等专业
    的头像 发表于 03-11 11:31 4255次阅读
    <b class='flag-5'>一般</b>pcb测试需要做哪些<b class='flag-5'>项目</b>检查?

    谷景DLCHX工字电感智能插座项目中的应用

    全球供应链格局深度调整的背景下,电感的国产化替代已成为众多企业提升供应链韧性、控制成本、确保交期的战略选择。近期,谷景成功协助上海某智能设备客户,完成其智能插座项目中关键电感元件的国产化替代,从技术匹配到风险预防,全程护航项目
    的头像 发表于 02-28 09:19 1040次阅读

    rt-thread软件定时器大家一般怎么用?

    请教各位,rt-thread软件定时器大家一般怎么用 ? 按文档说明 软定时器是个单独的任务里运行,不能在定时器里做会导致延时的操作,所以
    发表于 01-12 09:39

    单片机如何进行加解密钥操作一般使用哪种形式,具体流程是什么样子的?

    目前单片机如何进行加解密钥操作一般使用哪种形式,具体流程是什么样子的?
    发表于 12-04 06:09

    请问瞬时功耗一般怎么测?

    瞬时功耗一般怎么测?
    发表于 12-02 07:07

    把CW32L010用FLASH模拟EEPROM

    文件 eeprom.c,添加到项目中去,下面是和别的程序怎么配合: #include \"CW32L010.h\" #include \"eeprom.h\"
    发表于 11-24 07:40

    军用光缆一般有几根线

    军用光缆的线芯数量通常为1至6芯,并可根据实际需求定制更高芯数。这设计特点源于其特殊的使用场景与性能要求,具体分析如下: 、军用光缆的核心设计逻辑 军用光缆(如野战光缆)专为战场环境设计,需满足
    的头像 发表于 11-04 11:02 1227次阅读

    FCC认证周期一般多久?

    和电磁环境造成有害干扰。二、不同类型FCC认证的周期区别FCCSDoC(Supplier’sDeclarationofConformity,自我声明)适用对象:一般
    的头像 发表于 11-03 17:35 11次阅读
    FCC认证周期<b class='flag-5'>一般</b>多久?

    FCC认证周期一般多久

    FCC认证周期取决于产品类型、测试复杂度以及认证方式(自我声明或由授权机构办理)。一般来说,从样品测试到获得证书的时间大致2~8周之间。以下是详细说明:、FCC认证简介FCC认证是美国联邦通信
    的头像 发表于 11-03 17:14 1231次阅读
    FCC认证周期<b class='flag-5'>一般</b>多久

    测量绝缘电阻一般用什么仪器

    测量绝缘电阻一般用绝缘电阻测试仪,俗称兆欧表或摇表,是专用核心仪器。 常用仪器类型 手摇式兆欧表:手动摇柄产生直流高压,结构简单、成本低,适合常规低压设备测量。 数字式绝缘电阻测试仪:自动输出高压,数字显示结果,精度高、操作省力,适配高低压设备及高精度需求。
    发表于 11-03 15:13

    功率分析仪的校准周期一般是多久?

    的校准周期标准及特殊场景调整建议: 、核心校准类型与通用周期 功率分析仪的校准需分 “实验室定期溯源校准”(法定 / 资质要求,确保精度溯源)和 “现场日常链路校准”(用户自主操作,适配实际测量环境),两类周期差异显著:
    的头像 发表于 09-25 17:31 1119次阅读

    电能质量在线监测装置硬件故障检测的一般流程是什么?

    电能质量在线监测装置硬件故障检测的一般流程遵循 “安全优先、先易后难、先外后内、排除法 + 验证法” 的核心逻辑,从 “故障现象确认” 到 “故障定位” 再到 “维修验证”,形成闭环操作,确保高效、准确排查故障,同时避免二次损坏或安全风险。
    的头像 发表于 09-19 18:00 1315次阅读

    树莓派项目中10款最佳的DIN导轨外壳!

    ?模块化承包商、电源和灯光控制器都集成个紧凑的DIN外壳中。张图片胜过千言万语。本文中,将讨论如何将树莓派安装在DIN导轨上。所有
    的头像 发表于 06-14 08:34 1066次阅读
    树莓派<b class='flag-5'>项目中</b>10款最佳的DIN导轨外壳!