器件通信协议系列文章之 I2C

传感器技术 2020-06-09 00:00



“如何与模块进行通信,试试 I2C 如何?


“I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由 NXP(原 PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。连接到总线的 IC 数量只是受到总线的最大负载电容 400pf 限制。


I2C 支持 0kHz~5MHz 的设备:


普通模式(100kHz)、快速模式(400kHz)、快速模式+(1MHz)、高速模式(3.4MHz)和超高速模式(5MHz)。


两根数据线:SDA,SCL,均为漏级开路结构。一般接上拉电阻,形成“线与”逻辑(只要一方为低电平,则此线即为低电平)。当 SDA,SCL 为高电平时,表示总线空闲。一般来说,主机发起传输之前都要检查总线的电平状态(称为仲裁),以确定是否进行数据传输(当总线上只有一个主机时,可以不用)。如果 I/O 口既能输入也能输出,可以配置成开漏输出,但是必须外接拉电阻;如果 I/O 不能配置成开漏输出,则可以转换 I/O 输入输出方向,输出采用推挽输出,输入使用上拉输入即可。注意使用转换方向的方式时必须先转换方向之后才开始释放总线。


支持多主控,但是同一时间只能有一个主控。每个设备都有自己的设备地址(共 7bit,有的是 10bit),用于区分挂在在总线上的设备,广播地址 0x00。最低位用于读写控制位,1 表示读数据,0 表示写数据。



开始信号


当开始进行一次数据传输时,需要向从设备发送一个开始信号,表示数据传输开始。


SCL 为高电平期间,SDA 由高到低表示开始信号。



结束信号


当结束一次传输时,需要发送结束信号


SCL 为高电平期间,SDA 由低到高表示结束信号。


(若主机在对一个从机操作之后,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址)



数据位


当传输数据位时,在 SCL 为低时改变 SDA,在 SCL 为高时保持 SDA 稳定。高位先传输。



应答位


数据的第 9 位为应答位。


应答:第 9 个 CLK 时钟为高电平期间,如果 SDA 为为低电平,则为应答信号。


非应答:第 9 个 CLK 时钟为高电平期间,如果 SDA 为为高电平,则为非应答信号。


主机每向从机发送一个字节数据,从机都需要发送一个应答信号,而主机每接收一个字节都需要发送一个应答信号,当主机不准备接收下一个字节时,发送一个非应答信号,也就是说,非应答信号是由主机发送的,从机只能发送应答信号。应答位的数据状态则遵循“谁接收谁产生”的原则,即总是由接收器产生应答位


可以通过发送设备地址后由应答位确定该设备是否存在。


注意:任何在 SCL 为高电平期间的 SDA 上的电平改变都会被认为是起始或者停止信号,所以数据线 SDA 必须要在时钟线 SCL 为低电平时改变


如下为传输一个字节的情况:



所有数据传输的发起者都是主设备,从设备只能被动接受主设备的请求。


实际上发送一个字节之后就马上发送停止信号一般是不能实现一次完整的数据传输的,那么正常传输流程应该是怎样的呢?


因为 I2C 总线上可能挂在了很多设备,所以首先需要在总线上发送一个设备地址,并且指明本次传输的方向。然后又因为一个设备里面有很多寄存器,所以还要再发送一个寄存器地址,最后才是发送寄存器的内容。


• 发送数据(橘色为从机发送应答位)



• 接收数据(灰色部分为主机应答)



以上这些理论知识只是和 I2C 有关的,实际使用的时候根据驱动器件的不同又会有所不同。比如 AT2402,只能连续发送 8 个字节的寄存器内容(类似 8 字节缓存),下次再发送的话需要重新发送开始信号,另外,进行下一次数据的传输时,需要延时一段时间,让器件将 8 字节缓存的内容实际写入 EEPROM 中才可,否则会将缓存内容覆盖,导致写入错误。



通过编写 I2C 驱动程序,并利用 KEIL 的仿真功能可以得到如下波形:



这是一个发送设备地址 0xA0 的波形,因为没有从机,所以在第 9 个 CLK 的高电平期间 SDA 为高。当总线上有设备地址为 0xA0 的从机时,SDA 应被从机设置为低电平。


以上知识实际上是比较简单的,基础的,适合用于单主机的情况下,如果是多主机通信,远比单主机复杂的多,涉及到时钟同步和总线仲裁,有兴趣的同学可以自行研究。


更多关于 I2C 的问题,可以查阅《I2C 总线规范》。


关于总线死锁问题:


“总线死锁主要是因为主从设备中的主机异常复位造成从机始终处于应答状态(应答状态时 SDA 为低电平,只有在 SCL 变为低电平的时候,才会变为高电平,从而释放 SDA),解决方案可在链接中找到。”



STM32 的硬件 I2C 有缺陷,但是可以通过一些方法避免,具体寻找网上的方法。



以上部分文字摘自网上,已用引号进行标记。


------------------------------------------------------------------------------------------Osprey 2018-09-02


一直以为可以连续写入数据,每写入一个数据加入写入延时,给 EEPROM 写入时间,当写完最后一个数据之后发送一个写入停止信号即可,可实际是上是必须要有一个停止信号,EEPROM 在收到这个停止信号后才会进行写写入操作,否则必然导致写入出错。正是因为有这样错误的认识,所以在读取数据的时候读出的数据和自己想要的数据不一致,而这个数据刚好用于指针索引,好巧不巧的是因为这指针错误的指向,刚好将某个函数指针地址改变了,导致程序一直运行不正常。后来花了半天时间调试,才发现了函数指针数据被更改。但是我又奇怪为什么我的程序又能运行(正是因为能运行而不是直接死在某一个地方,才让自己寻找 bug 的方向错了)。后来才想通,虽然我的函数指针指向错误,运行出错,但是因为我开启了看门狗,所以当函数运行出错后,程序无法喂狗,导致成程序自动复位,又重新运行了,但是表明上看程序又运行到起来了,实际上呢,它已经从程序的最开始重新运行了。记录此教训,以提醒后来人。


还有一点就是单字节写入数据效率特别低,如果写入数据超过两个字节,在内存足够的情况下,最好开启一个页缓冲区,以加快写入速度。但是如果你认为写入数据是你可以接受的,那么不需要这个页缓冲区了,毕竟一旦加入页缓冲,也是要加入不少逻辑去维护的。


再介绍一个页写入的算法,之前看了一些页写入的算法,发现实在是太麻烦了。我就在想肯定有一种更为简单的算法的,直到这次更新笔记的时候才偶然发现了该算法。



自行理解吧,不是很难的逻辑思路。


来源:鱼鹰谈单片机



免责声明:本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认版权并按国家标准支付稿酬或立即删除内容!本文内容为原作者观点,并不代表本公众号赞同其观点和对其真实性负责。

 
  

为您发布产品,请点击“阅读原文”

 
传感器技术 制造业的未来是智能化,智能化的基础就是传感器; 互联网的方向是物联网,物联网的基石也是传感器; 关注传感器技术,获得技术资讯、产品应用、市场机会,掌握最黑科技,为中国工业导航。
评论 (0)
  • 随着电子元器件的快速发展,导致各种常见的贴片电阻元器件也越来越小,给我们分辨也就变得越来越难,下面就由smt贴片加工厂_安徽英特丽就来告诉大家如何分辨的SMT贴片元器件。先来看看贴片电感和贴片电容的区分:(1)看颜色(黑色)——一般黑色都是贴片电感。贴片电容只有勇于精密设备中的贴片钽电容才是黑色的,其他普通贴片电容基本都不是黑色的。(2)看型号标码——贴片电感以L开头,贴片电容以C开头。从外形是圆形初步判断应为电感,测量两端电阻为零点几欧,则为电感。(3)检测——贴片电感一般阻值小,更没有“充放
    贴片加工小安 2025-04-29 14:59 209浏览
  • 浪潮之上:智能时代的觉醒    近日参加了一场课题的答辩,这是医疗人工智能揭榜挂帅的国家项目的地区考场,参与者众多,围绕着医疗健康的主题,八仙过海各显神通,百花齐放。   中国大地正在发生着激动人心的场景:深圳前海深港人工智能算力中心高速运转的液冷服务器,武汉马路上自动驾驶出租车穿行的智慧道路,机器人参与北京的马拉松竞赛。从中央到地方,人工智能相关政策和消息如雨后春笋般不断出台,数字中国的建设图景正在智能浪潮中徐徐展开,战略布局如同围棋
    广州铁金刚 2025-04-30 15:24 179浏览
  • 文/郭楚妤编辑/cc孙聪颖‍越来越多的企业开始蚕食动力电池市场,行业“去宁王化”态势逐渐明显。随着这种趋势的加强,打开新的市场对于宁德时代而言至关重要。“我们不希望被定义为电池的制造者,而是希望把自己称作新能源产业的开拓者。”4月21日,在宁德时代举行的“超级科技日”发布会上,宁德时代掌门人曾毓群如是说。随着宁德时代核心新品骁遥双核电池的发布,其搭载的“电电增程”技术也走进业界视野。除此之外,经过近3年试水,宁德时代在换电业务上重资加码。曾毓群认为换电是一个重资产、高投入、长周期的产业,涉及的利
    华尔街科技眼 2025-04-28 21:55 157浏览
  • 文/Leon编辑/cc孙聪颖‍2023年,厨电行业在相对平稳的市场环境中迎来温和复苏,看似为行业增长积蓄势能。带着对市场向好的预期,2024 年初,老板电器副董事长兼总经理任富佳为企业定下双位数增长目标。然而现实与预期相悖,过去一年,这家老牌厨电企业不仅未能达成业绩目标,曾提出的“三年再造一个老板电器”愿景,也因市场下行压力面临落空风险。作为“企二代”管理者,任富佳在掌舵企业穿越市场周期的过程中,正面临着前所未有的挑战。4月29日,老板电器(002508.SZ)发布了2024年年度报告及2025
    华尔街科技眼 2025-04-30 12:40 202浏览
  • 一、gao效冷却与控温机制‌1、‌冷媒流动设计‌采用低压液氮(或液氦)通过毛细管路导入蒸发器,蒸汽喷射至样品腔实现快速冷却,冷却效率高(室温至80K约20分钟,至4.2K约30分钟)。通过控温仪动态调节蒸发器加热功率,结合温度传感器(如PT100铂电阻或Cernox磁场不敏感传感器),实现±0.01K的高精度温度稳定性。2、‌宽温区覆盖与扩展性‌标准温区为80K-325K,通过降压选件可将下限延伸至65K(液氮模式)或4K(液氦模式)。可选配475K高温模块,满足材料在ji端温度下的性能测试需求
    锦正茂科技 2025-04-30 13:08 212浏览
  • 在智能硬件设备趋向微型化的背景下,语音芯片方案厂商针对小体积设备开发了多款超小型语音芯片方案,其中WTV系列和WT2003H系列凭借其QFN封装设计、高性能与高集成度,成为微型设备语音方案的理想选择。以下从封装特性、功能优势及典型应用场景三个方面进行详细介绍。一、超小体积封装:QFN技术的核心优势WTV系列与WT2003H系列均提供QFN封装(如QFN32,尺寸为4×4mm),这种封装形式具有以下特点:体积紧凑:QFN封装通过减少引脚间距和优化内部结构,显著缩小芯片体积,适用于智能门铃、穿戴设备
    广州唯创电子 2025-04-30 09:02 211浏览
  • 网约车,真的“饱和”了?近日,网约车市场的 “饱和” 话题再度引发热议。多地陆续发布网约车风险预警,提醒从业者谨慎入局,这背后究竟隐藏着怎样的市场现状呢?从数据来看,网约车市场的“过剩”现象已愈发明显。以东莞为例,截至2024年12月底,全市网约车数量超过5.77万辆,考取网约车驾驶员证的人数更是超过13.48万人。随着司机数量的不断攀升,订单量却未能同步增长,导致单车日均接单量和营收双双下降。2024年下半年,东莞网约出租车单车日均订单量约10.5单,而单车日均营收也不容乐
    用户1742991715177 2025-04-29 18:28 211浏览
  • 在CAN总线分析软件领域,当CANoe不再是唯一选择时,虹科PCAN-Explorer 6软件成为了一个有竞争力的解决方案。在现代工业控制和汽车领域,CAN总线分析软件的重要性不言而喻。随着技术的进步和市场需求的多样化,单一的解决方案已无法满足所有用户的需求。正是在这样的背景下,虹科PCAN-Explorer 6软件以其独特的模块化设计和灵活的功能扩展,为CAN总线分析领域带来了新的选择和可能性。本文将深入探讨虹科PCAN-Explorer 6软件如何以其创新的模块化插件策略,提供定制化的功能选
    虹科汽车智能互联 2025-04-28 16:00 181浏览
  • 你是不是也有在公共场合被偷看手机或笔电的经验呢?科技时代下,不少现代人的各式机密数据都在手机、平板或是笔电等可携式的3C产品上处理,若是经常性地需要在公共场合使用,不管是工作上的机密文件,或是重要的个人信息等,民众都有防窃防盗意识,为了避免他人窥探内容,都会选择使用「防窥保护贴片」,以防止数据外泄。现今市面上「防窥保护贴」、「防窥片」、「屏幕防窥膜」等产品就是这种目的下产物 (以下简称防窥片)!防窥片功能与常见问题解析首先,防窥片最主要的功能就是用来防止他人窥视屏幕上的隐私信息,它是利用百叶窗的
    百佳泰测试实验室 2025-04-30 13:28 287浏览
  • 贞光科技代理品牌紫光国芯的车规级LPDDR4内存正成为智能驾驶舱的核心选择。在汽车电子国产化浪潮中,其产品以宽温域稳定工作能力、优异电磁兼容性和超长使用寿命赢得市场认可。紫光国芯不仅确保供应链安全可控,还提供专业本地技术支持。面向未来,紫光国芯正研发LPDDR5车规级产品,将以更高带宽、更低功耗支持汽车智能化发展。随着智能网联汽车的迅猛发展,智能驾驶舱作为人机交互的核心载体,对处理器和存储器的性能与可靠性提出了更高要求。在汽车电子国产化浪潮中,贞光科技代理品牌紫光国芯的车规级LPDDR4内存凭借
    贞光科技 2025-04-28 16:52 240浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦