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

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

3天内不再提示

如何更好地去掌握I2C通信?

FPGA之家 来源:最后一个bug 作者:bug菌 2021-06-26 10:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1

I2C通信理解

很多朋友在进行IIC通信协议开发的时候比较迷茫,可能长时间没有用了,就有所忘却,也算正常,不过如果重新围着通信时序图看来看去,那还是比较麻烦的,比如IIC的起始电平条件、停止电平条件、以及数据保持即更新条件等等:

pYYBAGDWjiqAS32cAACEH8DUvpI273.jpg

虽然每个器件对IIC通信的波形要求不是太相同,但IIC的通信时序容忍度非常高,基本上相关参数和驱动都是通用的。 IIC数据的传输过程,在SCL通信同步时钟节拍的控制下,主机发送数据主动使得总线电平发生变化,供从机检测接收,而当从机接收到数据以后接着主动的拉低SDA来作为应答信号通知主机,如果没有拉低则表示非应答。

之前很多朋友都不太理解IIC的主机是怎么检测到从机应答的,似乎从SDA线上的波形看都好像是主机发送出来的,所以在进行通信波形解析的时候注意一下。

2

IIC数据帧

对于通信的应用,重要的并不是所谓的电平变化,而更多的是要了解如何传递数据帧,掌握好数据帧的传递过程和方式。

而不同厂商的数据帧稍微有所差异,比如7位地址、8位地址和10位地址,但总体上大同小异,大家可以参考对应的芯片手册进行学习,这里以最常用的7地址位跟大家介绍:

IIC是一种主从通信方式,通信发起者为主机,主要熟悉三种数据帧传递过程:

1、单次或连续向从机写数据

poYBAGDWjjGAb8TFAACepW_ZgAI156.jpg

至于通信数据域内的数据含义,由通信双方共同约定即可,也就是协议的制定。

2、单次或连续向从机读数据

pYYBAGDWjjiAfe1cAACfPqtDGa8051.jpg

读数据的过程主机发送的读写标志位发生变化,在数据部分从机主动控制总线发送数据给主机,然后主机来进行应答,刚好与IIC写数据相反。

3、通讯过程读写切换

poYBAGDWjj6ASQCPAADART5ualo608.jpg

在通信过程中需要进行读写切换时不需要发送停止,而是应答以后重新发一次起始和从机地址及读写状态,接着进行下面的数据处理即可。

最后再啰嗦一下 : 对于IIC总线不要忘记通信IO上拉,同时注意电平上的匹配,不然可能会损坏芯片~

责任编辑:lq6

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

    关注

    0

    文章

    29

    浏览量

    9428

原文标题:玩转I2C通信把握好这两点~

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    I2C总线-通信线缆长度的影响及改进措施

    I2C总线确实不适合远距离通信,尤其是需要使用线缆与I2C接口器件进行通信,这里的“不适合”并不是说不可以,这也是本文的重点。一般使用I2C
    发表于 01-21 06:03

    I2C 为什么只要两根线就能搞定通信

    到目前为止,我们已经讨论了SPI通信和UART通信的基础知识,现在让我们讨论本系列的最后一个协议,即集成电路间协议(I2C)。如果您曾经构建过使用OLED显示器、气压传感器或陀螺仪/加速度计模块
    的头像 发表于 01-04 09:14 2018次阅读
    <b class='flag-5'>I2C</b> 为什么只要两根线就能搞定<b class='flag-5'>通信</b>?

    基于FPGA的I2C控制模块设计

    I2C_WRITE_WDATA.v模块实现I2C写时序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的头像 发表于 12-26 09:48 5862次阅读
    基于FPGA的<b class='flag-5'>I2C</b>控制模块设计

    基于FPGA的I2C通信协议设计

    I2C(Inter-Integrated Circuit)是一种由飞利浦半导体(现为恩智浦半导体)在1980年代初开发的同步、串行、半双工的总线型通信协议。主要用于近距离(同一块印刷电路板(PCB
    的头像 发表于 12-26 09:44 6338次阅读
    基于FPGA的<b class='flag-5'>I2C</b><b class='flag-5'>通信</b>协议设计

    ISO164x热插拔双向I2C隔离器:特性、应用与设计要点

    ISO164x热插拔双向I2C隔离器:特性、应用与设计要点 在电子工程师的日常设计中,可靠的通信隔离器件至关重要。ISO164x热插拔双向I2C隔离器凭借其卓越的性能和丰富的特性,成为了众多应用场
    的头像 发表于 12-17 14:15 959次阅读

    如何在CW32 MCU上优化I2C通信

    在嵌入式系统中,CW32 MCU的I2C接口通常用于与各种外设(如EEPROM、传感器等)进行数据通信。为了实现高效、稳定的I2C通信,必须考虑频率调节和数据完整性的问题。本文将聚焦于
    发表于 11-27 06:25

    SPI、I2CI2S、UART:通信协议解释

            在嵌入式开发中,最常用的几种通信接口无非就是SPI、I2CI2S、UART。名字看起来差不多,但应用场景和特性却大不相同。为什么都叫串行通信,结构却不一样?为什么有的
    的头像 发表于 11-18 10:53 705次阅读

    基于芯源CW32F030 MCU的I2C通信及应用

    CW32F030 MCU的I2C通信功能。I2C作为嵌入式系统中重要的通信接口,广泛应用于与外部传感器、存储器等设备的连接与数据交换。掌握
    发表于 11-18 08:29

    SPI、I2CI2S、UART:通信协议对比表

    在嵌入式开发中,最常用的几种通信接口无非就是SPI、I2CI2S、UART。名字看起来差不多,但应用场景和特性却大不相同。很多初学者容易混淆:为什么都叫串行通信,结构却不一样?为什么
    的头像 发表于 11-17 10:53 2081次阅读
    SPI、<b class='flag-5'>I2C</b>、<b class='flag-5'>I2</b>S、UART:<b class='flag-5'>通信</b>协议对比表

    深入剖析I2C协议

    I2C是由Philips开发的简单的双向两线总线,在深入浅出理解SPI协议中,我们区分了单工,半双工,全双工协议数据流向的区别,根据特征,I2C协议属于半双工协议(即同一时刻,数据单向流动)。此外
    的头像 发表于 08-21 15:10 3862次阅读
    深入剖析<b class='flag-5'>I2C</b>协议

    I2C通信异常问题怎么解决?

    我们在进行I2C通信,发现当写数据时SCL和SDA会有下降沿重合的情况,导致通信失败,请帮忙分析下如何处理? I2C通信代码如下: sta
    发表于 08-12 07:45

    I2C总线通信,为什么要进行电气隔离?

    I2C总线采用双向二线制,支持多主机多从机通信,具备高可靠性、抗干扰能力强,广泛应用于嵌入式系统中。
    的头像 发表于 08-11 11:04 2651次阅读
    <b class='flag-5'>I2C</b>总线<b class='flag-5'>通信</b>,为什么要进行电气隔离?

    第十八章 I2C通信测试

    本章介绍了I2C协议,其物理层用SDA和SCL双线,支持多设备:协议层含起始/停止信号、应答机制等。还讲解W55MH32的I2C外设及初始化,并进行了通信测试代码的分析。
    的头像 发表于 06-19 17:07 1451次阅读
    第十八章 <b class='flag-5'>I2C</b><b class='flag-5'>通信</b>测试

    CYPD3177 I2C通信无应答怎么解决?

    SOC端通过I2C与CYPD3177进行通信,在读芯片ID时(0x0002寄存器),主机发送数据后无应答。目前SOC端和CYPD3177只连接了两根I2C线,一根地线和3.3V供电。硬件连接是否有问题?软件配置在读ID前是否需要
    发表于 05-12 07:10

    简单了解I2C接口

    在电子电路的复杂世界里,各种电路模块设备需要相互通信才能协同工作 ,I2C接口就像是电路模块设备间的沟通桥梁,今天就带大家深入了解它。
    的头像 发表于 05-08 14:15 2793次阅读
    简单了解<b class='flag-5'>I2C</b>接口