IIC总线学习笔记

一、绪:

       IIC通信的SDA线上第一个字节,是主机发送的,前7位是欲呼叫的从机地址,第8位用于确定通信方向,若为“0”,则表示主机给从机发数据;若为“1”,则表示向从机要数据。

      (1). 这个字节会发送给所有器件,下面所有器件收到该字节后会对照自身的地址码,若相同,则会成为本次通信的从机。同时其他器件也知道了此时总线被占用,进入休眠状态;
      (2). 被呼叫的从机会发送应答信号“0”(ACK信号)回应主机;
      (3). 接下来发送方(既可以是主机,也可以是从机,取决于主机发送第一个字节的第8位是 0     或 1)会开始发送数据给接收方,接收方只会返回ACK应答信号,若发送方收到非应答信号 “1”,会重复发送或发送停止信号;
      (4). 通信完成后,主机发送停止信号释放总线。

二、IIC总线实现

IIC的3个信号:

(1). 起始信号SCL为高电平,SDA由高电平跳变为低电平;
(2). 终止信号SCL为高电平,SDA由低电平跳变为高电平;
(3). 空闲状态SCLSDA都是高电平;


        IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位。发送方发送完一个字节数据后,接收方须发送1位应答信号来回应发送方,即SDA线上一帧有9位,若第9位接收方发送“1”表示非应答,发送“0”表示应答。因为有9位,所以SCL线在一帧内有9个高电平(待会看完第6点后,就会明白为什么SCL是9个高电平了);

        数据发送过程中,发送方什么时候发送高低电平?SCL为低电平期间发送方才能发送高或低电平到SDA线上;SCL为高电平时,SDA上的电平状态要与前一时刻相同,即在SCL为低电平时,若SDA由高电平转为低电平,则在下一时刻SCL为高电平时,SDA要保持低电平。这是因为当SCL高电平时,是接收器从SDA上读取数据的时刻,不能被干扰。以上是数据发送过程,需与停止信号区分;

三、典型的IIC时序

有以下3种情况:

1.主机发送起始信号 --> 从机应答 --> 主机发送数据 --> 从机应答......主机发送数据---从机应答或不应答---主机发送停止信号;

2.主机发送起始信号---从机应答---从机发送数据---主机应答......从机发送数据---主机不应答---主机发送停止信号;


3.主机发送起始信号---从机应答---主机发送数据---从机应答......主机发送数据---从机应答或不应答---主机发送开始信号---从机应答---从机发送数据---主机应答......从机发送数据---主机不应答---主机发送停止信号;

        需要注意的是,第3种情况中,主、从机互换发送方/接收器身份时,主机没有发停止信号,而是直接发起始信号。这是因为,如果主机发停止信号,相当于释放了SDA总线,那么其他主机就有可能占线,所以直接发起始信号能一直占有总线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值