IIC总线接口基础知识
从《单片机原理及应用》抄录的笔记
1、IIC总线架构
IIC总线只有两根连线:
- 一根数据线SDA
- 一根时钟线SCL
所有连接线IIC总线上的器件其数据线都连接到SDA线上,其时钟线都连接到SCL上。
IIC总线的基本架构如图所示(Rp约5.1kΩ):
2、IIC总线的特点
1)采用2线制
2)传输速率高
标准模式传输速率为100kbps,快速模式为400kbps,高速模式为3.4Mbps。
# bps的解释
- 是bits per second的缩写,即比特率、比特/秒、位/秒、每秒传送二进制位数,是数据传输速率的常用单位,通常用来衡量带宽的单位。
- 另外软件上显示的速度则是指每秒传输的字节数(Byte),通常用B(大写)表示。
- 数据传输(如上面的bps)的衡量单位K是十进制含义,数据存储(如下面的内存换算)的K是2进制的含义。
1MB=1024KB=1024*1024B,1B(字节)=8b(位)
1M带宽即指1Mbps=1000kbps=1000/8 kBps = 125kBps——注意大小写b:前两个是小写b,后两个是大写B
也就是说生活中的100M宽带,理论传输速率应该是12.5MBps(最直观的就是手机上面显示的实时网速),但是因为各种原因,实际的传输速率一般不会达到12.5MBps。
3)支持多主和主/从两种工作方式
各主方式时,要求各主单片机配备IIC总线标准接口。(80C5单片机没有IIC总线标准接口,只能工作于主/从方式)
3、IIC总线的数据传输
在IIC总线上,每一位数据位的传输都与时钟脉冲相对应。
逻辑0和逻辑1的信号电平取决于相应的电源电压,使不同的半导体制造工艺,如CMOS、NMOS等类型的电路都可以接入总线。对于数据传输,IIC总线协议规定了如下信号时序:
1)起始和停止信号
起始和停止信号如图所示:
- SCL为高电平期间,SDA由高电平向低电平的变化表示起始信号
- SCL为高电平期间,SDA由低电平向高电平的变化表示停止信号。
起始和终止信号如下图所示。
总线空闲时,SCL和SDA两条线都是高电平。
SDA线的起始信号和停止信号由主机发出。
在起始信号后,总线处于被占用的状态;在停止信号后,总线处于空闲状态。
2)字节格式
传输字节数没有限制,但每个字节必须是8位长度。
先传最高位(MSB),每个被传输字节后面都要跟随应答位(即一帧共有9位)。
字节传送时序如图所示:
从器件接收数据时,在第9个时钟脉冲要发出应答脉冲,但在数据传输一段时间后无法继续接收更多的数据时,从器件可以采用“非应答”通知主机,主机在第9个时钟脉冲检测到SDA线无有效应答负脉冲(即非应答)则会发出停止信号以结束数据传输。
与主机发送数据相似,主机在接收数据时,它收到最后一个数据字节后,必须向从器件发出一个结束传输的“非应答”信号。然后从器件释放SDA线,以允许主机产生停止信号。
( ——将单片机称作主机,扩展的器件称为从器件)
3)数据传输时序
对于数据传输,IIC总线协议规定:
-
SCL由主机控制,从器件在自己忙时拉低SCL线以表示自己处于“忙状态”。
-
字节数据由发送器发出,响应位由接收器发出。
-
SCL高电平期间,SDA线数据要稳定,SCL低电平期间,SDA线数据允许更新(看下面的图,SDA每次改变高低电平都是在SCL为低电平期间)。
数据传输时序图如下图所示:
4)寻址字节
主机发出起始信号要先传送1个寻址字节:7位从器件地址,1位传输方向控制位(用“0”表示主机发送数据,“1”表示主机接收数据)。
格式为:
D7~D1位组成从器件的地址。D0位是数据传送方向位。
主机发送地址时,总线上的每个从器件都将这7位地址码与自己的地址进行比较。如果相同,则认为自己正在被主机寻址。
器件地址由固定部分和可编程两部分组成。