1 EEPROM 在项目中我一般会做几项特殊操作-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

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

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 作者:黄工的嵌入式技术 2020-03-04 14:01 次阅读

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

1I2C读写EEPROM基础原理

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

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

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

1.STM32F10x_vwin 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的中断并把它的优先级设为最高级别,使得它不能被中断。

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

    关注

    9

    文章

    1019

    浏览量

    81557
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1484

    浏览量

    123615
  • 字节
    +关注

    关注

    0

    文章

    40

    浏览量

    13726
收藏 人收藏

    评论

    相关推荐

    请问为ADC选Driver主要要看哪几项技术指标呢?

    项目中需要为ADC选款驱动器,目前的ADC准备采用ADS1259,看到有款差分放大器THS4551,其中的Application
    发表于 12-16 06:00

    退耦电容一般用多大

    的工作频率范围。一般来说,随着频率的升高,需要的退耦电容容量会逐渐减小。例如,低频电路中,可能需要较大容量的退耦电容来确保直流偏置电压的稳定;而在高频电路中,较小容量的电容就能起到良好的退耦效果。 负载情况 :电
    的头像 发表于 09-26 11:28 427次阅读

    eeprom存储原理、存储结构及读写操作

    EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)是种非易失性存储器,可以不移除电源的情况下进行读写
    的头像 发表于 08-05 17:03 2480次阅读

    差动变压器与一般变压器的异同

    差动变压器和一般变压器是两种不同类型的变压器,它们结构、工作原理、应用领域等方面都存在定的差异。 、差动变压器和一般变压器的基本概念
    的头像 发表于 08-05 09:59 2525次阅读

    Arinc 429 发送数据一般是什么

    Arinc 429 发送数据一般是什么
    发表于 07-23 09:46

    请问如何获取当前项目中所选的MCU设备?

    些特定项目中想在个通用的 .c 语言中对不同的 MCU 器件进行差异处理。 文件 是否有办法
    发表于 05-30 07:29

    PLC的工作电源一般是多少

    工业自动化领域中,PLC(Programmable Logic Controller,可编程逻辑控制器)扮演着至关重要的角色。PLC作为工业自动化系统的核心控制设备,其工作电源的稳定性和适应性直接关系到整个系统的正常运行。本文将深入探讨PLC的工作电源一般是多少,并从多
    的头像 发表于 05-28 16:41 3873次阅读

    PCBA加工报价一般的周期是多久

    PCBA(Printed Circuit Board Assembly,印刷电路板组装)报价周期的长短会受到多种因素的影响,因此无法给出确切的时间。然而,一般而言,如果资料齐全且没有特殊工艺或复杂
    的头像 发表于 05-09 09:25 520次阅读
    PCBA加工报价<b class='flag-5'>一般</b>的周期是多久

    FLASH、EEPROM的区别和扩展【硬件干货】

    数据的长期保存和掉电保存等问题,因此外扩EEPROM就是这系统常见的模块。外扩的EEPROM也可以用来存储些参数,保存些掉电后需要保存的数据等。
    的头像 发表于 02-27 08:37 1941次阅读
    FLASH、<b class='flag-5'>EEPROM</b>的区别和扩展【硬件干货】

    表面安装设计和地面图案标准的一般要求

    德赢Vwin官网 网站提供《表面安装设计和地面图案标准的一般要求.pdf》资料免费下载
    发表于 02-21 09:24 2次下载

    SPWM调制中,调制波和载波的信号波形一般各是什么?

    SPWM调制中,调制波和载波的信号波形一般各是什么? SPWM调制(正弦波脉宽调制)是种常用于交流电驱动和逆变器的调制技术,它通过调节个正弦波形的宽度(脉宽)来控制输出的交流信号
    的头像 发表于 02-05 16:48 5005次阅读

    能否项目中将单个PIN配置为Digital Out和Lin_TX?

    你好,想知道我们能否项目中将单个 PIN 配置为 Digital Out 和 Lin_TX。 就像在正常操作期间
    发表于 01-29 08:35

    车载UPS与一般UPS区别在哪里?车载有哪些优势特点?

    车载UPS与一般UPS区别在哪里?车载有哪些优势特点? 车载UPS是特殊的不间断电源系统,专门设计用于车辆上使用的电子设备。与一般的UPS相比,车载UPS有
    的头像 发表于 01-11 14:43 1309次阅读

    PLC新能源项目中的应用

    PLC许多新能源项目中都可以应用。以下是些常见的新能源项目,可以利用PLC实现自动化控制和监测。
    的头像 发表于 12-28 18:18 1715次阅读

    伺服电机效率一般是多少?

    伺服电机效率一般是多少?选型时也得考虑到这个问题吧? 变频电机一般都标功率因素,指的就是电机实际的输出功率吧? 异步伺服效率 88%; 同步伺服效率 100%,采用绝对值编码器时效率下降10%-20%.
    发表于 12-28 06:46