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

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

3天内不再提示

IIC通讯实现过程

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-09-28 15:09 次阅读

IIC(Inter Integrated Circuit)两根线,一条时钟线SCL和一条数据线SDA,所以是半双工通信,主从模式,支持一对多。

poYBAGMz8vSAe-nYAABtT1FCkDA845.png

假设主机A给从机B发数据(A.SCL接B.SCL,A.SDA接B.SDA),根据应用,A可以同时接B,C,D。空闲时,SDA和SCL上的电平都为高电平。

起始和停止

起始条件S:当SCL高电平时,SDA由高电平向低电平转换;停止条件P:当SCL高电平时,SDA由低电平向高电平转换。起始和停止条件一般由主机产生,总线在起始条件后处于busy的状态,在停止条件的某段时间后,总线才再次处于空闲状态。

poYBAGMz8wuAc0FKAACXBuxOWoA490.png

空闲时SDA和SCL上的电平都为高电平。A先把SDA拉低,等SDA变为低电平后再把SCL拉低(以上两个动作构成了I2C的起始位),此时SDA就可以发送数据了,与此同时,SCL发送一定周期的脉冲,SDA发送数据和SCL发送脉冲的要符合的关系是:SDA必须在SCL是高电平时保持有效,在SCL是低电平时发送下一位(SCL会在上升沿对SDA进行采样)。

传输与响应

一次传8位数据,8位数据传输结束后A释放SDA,SCL再发一个脉冲(这是第九个脉冲),触发B将SDA置为低电平表示确认(该低电平称为ACK)。最后SCL先变为高电平,SDA再变为高电平(以上两个动作称为结束标志),如果B没有将SDA置为0,则A停止发送下一帧数据。

整体时序

I2C总线上的每个设备都有唯一地址,数据包传输时先发送地址位,接着才是数据。一个地址字节由7个地址位(可以挂128个设备)和1个指示位组成(7位寻址模式),0表示写,1表示读。一般芯片手册I2C地址都是7位地址,有些与某个引脚的电平相关,主机控制最后读写位。实际项目一般都是采用I2C库,有的库要求传入的是8位的写的地址,有的是7位,由接口函数再区分读写补位。当然,最愚蠢的办法是从0到255定时循环读某个寄存器地址,读到正确值时的地址就是正确的从机地址。

poYBAGMz8x6AWuqnAAEXyiJToS4554.png

一般情况下使用I2C库,除了配置从机地址,其他的起始、结束等时序等其实不太关注,只需要配置时钟频率,一般看从机最大支持多少,以及主机的系统时钟,太高会偶尔出现错误,再没有时间要求的情况下,时钟越低越稳定。

审核编辑:汤梓红

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

    关注

    36

    文章

    5944

    浏览量

    175477
  • 通讯
    +关注

    关注

    9

    文章

    902

    浏览量

    34889
  • IIC
    IIC
    +关注

    关注

    11

    文章

    300

    浏览量

    38311
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    17057
收藏 人收藏

    评论

    相关推荐

    labview 与 西门子S7200modbus通讯实现

    求labview 与 西门子S7200modbus通讯实现
    发表于 01-02 16:33

    单片机IIC通讯实

    `  IIC通讯在单片机开发中是比较常见的一种通讯协议,也有很多网友对其进行了详细分析,但是作者发现网友大多是对IIC进行理论上的讲解,很少有具体分析
    发表于 01-14 16:56

    基于stm32的串口通讯实过程是怎样的

    基于寄存器与基于固件库的stm32 LED流水灯例子的编程方式有什么差异?基于stm32的串口通讯实过程是怎样的?
    发表于 09-29 07:33

    IIC总线通讯实现具体分为哪几种呢

    不讲原理(网上详细讲原理的有很多),只讲其代码实现。对于单片机使用者来说,IIC总线通讯实现具体分两种,一种是硬件实现,另一种是软件模拟,硬件实现
    发表于 12-09 06:14

    STM32的IIC通讯过程该怎样去实现

    什么是I2C呢?其完整的传输流程是怎样的呢?STM32的IIC通讯过程该怎样去实现呢?
    发表于 02-10 07:17

    MM440变频器与plc的通讯实现

    本内容提供了MM440变频器与plc的通讯实现 详细介绍了各个步骤及实现方法
    发表于 04-18 16:10 138次下载
    MM440变频器与plc的<b class='flag-5'>通讯实现</b>

    RS232+RS485实现通讯实验板

    本文介绍一种将 RS232,RS485,及红外接口集成在一起的PC机--单片机多功能通讯实验板,用于实现PC机与单片机间的串口通信、红外通信及PC机与PC机间的通讯实验。
    发表于 09-20 11:39 3700次阅读
    RS232+RS485<b class='flag-5'>实现</b><b class='flag-5'>通讯实</b>验板

    java_串口通讯实

    java_串口通讯实例说明
    发表于 11-09 17:48 75次下载

    基于掌上电脑电动车信息终端通讯实现的研究

    信息显示,故障再现是电动车辆的开发过程中一个重要的研究课题。显示终端和信号采集前端的通讯实现是这个课题的一个重要研究技术。结合采用联想电脑天玑和嵌入式操作系统Windows CE开发而成的电动车辆信息终端,介绍一种简单、高效信息终端的
    发表于 04-18 14:12 5次下载

    AVR单片机串口USART与PC通讯实

    AVR单片机串口USART与PC通讯实
    发表于 12-29 20:55 36次下载

    矿用通风机监测系统设计及通讯实现付胜

    矿用通风机监测系统设计及通讯实现_付胜
    发表于 03-15 08:00 0次下载

    临震电磁信息监测仪网络通讯实现瞿旻

    临震电磁信息监测仪网络通讯实现_瞿旻
    发表于 03-15 08:00 0次下载

    一文解读IIC总线的FPGA实现原理及过程

    本文首先介绍了IIC总线概念和IIC总线硬件结构,其次介绍了IIC总线典型应用,最后详细介绍了IIC总线的FPGA实现原理及
    发表于 05-31 10:56 6722次阅读
    一文解读<b class='flag-5'>IIC</b>总线的FPGA<b class='flag-5'>实现</b>原理及<b class='flag-5'>过程</b>

    两个S7-200-PLC之间Modbus通讯实现(从站)

    两个S7-200-PLC之间Modbus通讯实现(从站)方法。
    发表于 04-25 11:24 28次下载

    STM32串口1通讯实验程序下载

    STM32串口1通讯实验程序下载
    发表于 12-30 10:34 83次下载