一文详解IIC总线

接口/总线/驱动

1143人已加入

描述

IIC总线概述

IIC总线介绍

IIC(Inter-Integrated Circuit)集成电路总线,它是一种两线式串行通信总线,又叫I2C,使用多主从架构,由飞利浦公司在1980年推出的。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,一般可达400kbps 以上。IIC两线制包括串行数据线和时钟线,总线必须有主机控制,主机产生串行时钟,控制总线的传输方向,并产生起始和停止条件。IIC总线上有主机和从机之分,可以有多个主机和从机,从机永远不会主动给主机发消息。器件发送数据到总线上定义为发送器,期间接受总线上的数据定义为接收器,主器件和从器件都可以工作与发送和接收的状态。

IIC通信方式:串行同步半双工

主机从机都可以作为接收器和发送器使用,不同时间处于不同身份,换句话说就是同一时间只有接收或发送一种状态。

IIC总线物理拓扑结构

IIC总线

理论上可以挂无数个设备,实际上挂载设备受两线之间的干扰,有限制。

上拉电阻阻值范围:4.7K~100K

设备之间要求共地线。

IIC总线主从设备通信

IIC通信中主机如何确定和那个从机通信?

IIC通信中寻找从设备根据设备地址查找,设备地址每个设备都有,可以分为10位和7位两种,设备地址包含两个部分:一部分是可编程地址,一部分是固定地址,具体每一部分占多少位有设计厂商决定,一般看手册都能找到。

IIC总线

IIC总线和串口比较

名称 IIC总线 UART
通信方式 串行同步半双工 串行异步全双工
通信速度 标准100kbit/s,快速400k,高速3.4M 由波特率决定
主从设备 有主从之分,主机产生时钟 无主从之分

IIC总线数据帧

IIC数据帧格式

IIC标准数据帧格式:起始条件+数据位(8位:发送器发送到数据总线)+应答位(接收器发送)+停止条件 (MSB:高位 LSB:低位)

IIC总线

起始条件:SCL高电平期间,SDA由高电平变为低电平

数据位:时钟上升沿采集数据,下降沿准备数据,或者说只有在时钟低电平时间允许数据位发生变化

应答位:低电平表示应答,高电平表示非应答

停止条件:SCL在高电平期间,SDA由低电平变为高电平

传输过程和串口不同:串口是以一帧数据为单位来传输的,每帧数据都包含完整的起始位到停止位。IIC一次传输包含起始条件和停止条件,中间可以包含很多个8位数据。多个数据之间都会有应答信号,在传输最后一位数据时没有应答信号,也就表明数据传输结束了。

IIC总线时序

具体时序如下:该时序图的时间是在100kbit/s的速度下使用的,如果提高速度,对应的时间也应该缩短。

IIC总线

IIC总线

IIC总线寻址方式

IIC寻址数据格式图:

IIC总线

上图是7位地址位寻址方式

方向位:确定是读数据还是写数据

IIC总线通信最先发送的数据是:设备地址+方向位

如果是10位地址寻址方式:

先将10位中的高三位地址取出来,高位补0,先发送出去,然后再将剩下的7位,加上方向位再进行发送。也就是分两个8位数据发送。10位地址时,设备会自动将前两个8位数据判断为地址数据。

IIC总线通信方式

IIC通讯的三种方式,这里需要注意的是数据线上的应答和数据是由主机还是从机发出的,具体已在图片中标注出来。

只读数据:

IIC总线

只写数据:

IIC总线

读写切换:

IIC总线

模拟IIC总线

由于专利原因,ST公司在设计IIC接口时做得比较复杂,所以在实际使用中大部分情况都采用的是模拟IIC接口,在模拟时只需要两个普通IO口就可实现IIC通讯。

IIC模拟IO口模式选择:

SCL时钟线:由主机驱动需要较强的高低电平驱动能力,一般配置为通用推挽输出模式

SDA数据线:这里需要注意了,数据线上我们既要向外发送数据,还要接收从机的应答信号。所以这里有两种方式可选。

1,通讯时切换IO口的工作模式

配置为开漏输出

这里给大家解释一下为什么可以使用开漏输出,首先IIC通讯时硬件上已经提供了上拉电阻,不需要考虑推挽输出无法输出高电平的问题了。其次大家可以查询一下参考手册的GPIO一章中对开漏模式的描述,官方说明在配置为开漏模式时,输出数据寄存器依然工作,我们仍然可以通过读取输入数据寄存器来判断数据线的电平状态。那为什么不使用推挽呢?由于推挽输出驱动能力较强,为了避免从机出现无法更变数据线电平状况的情况出现,所以一般不采用推挽输出。

具体模拟代码,网上很多大家自行百度即可。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_05870015 2023-08-18
0 回复 举报
收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分