IIC通信详解

本文详细介绍了IIC通信协议的信号机制,包括起始和结束信号、数据采样以及应答信号(ACK/NAK)。在SCL高电平时,SDA数据必须保持稳定以避免被误判为开始或结束信号。同时,文章阐述了读写时序,解释了主机和从机在不同操作中的角色和应答方式。IIC协议通过这样的设计确保了总线的有效通信。
摘要由CSDN通过智能技术生成

对于这种常用通信协议中的细节,时间长不使用总是记不清,今写下笔记。

一、信号

1、起始信号:

当时钟总线SCL为高电平时,数据线SDA由高电平向低电平跳变。

2、结束信号:

当SCL线为高电平时,SDA线从低电平向高电平跳变。

注:开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态,其它器件不能再产生开始信号。主器件在结束信号以后退出主器件角色,经过一段时间过,总线被认为是空闲的。

3、数据采样

IIC总线数据传送采用时钟脉冲逐位串行传送方式,在SCL的低电平期间,SDA线上高、低电平能变化,在高电平期间,SDA上数据必须保护稳定

为什么IIC要求在SCL高电平期间要SDA总线上数据保持稳定呢?
因为当SCL高电平期间,SDK由低到高的变化会被认为是结束信号;SDA由高到底的变化会被认为是起始信号。

3、应答信号(ACK/NAK)

第9个脉冲期间,主机释放SDA总线,此时产生ACK和NAK信号。
当SCL为高电平,SDA是低电平时为ACK;
当SCL为高电平,SDA是高电平时为NAK;

应答信号并不是只有主机应答从机,具体需要根据情况而定,如:
当主机写数据时:从机应答ACK,表示主机可以继续发送,从机回复NAK表示从机停止接受
当主机读数据时:主机回复ACK,表示可以继续读取,主机回复NAK表示主机不再读。

为什么信号高低电平变化这么规定?
在电路设计中,通常下SCL和SDK总线是需要外加上拉电阻的。因此,其常态下表现为高电平。因此,如果当设备需要动作是,需要将高电平拉低。反之,当设备无动作时,由于外部上拉电阻的原因,总线此时默认是高电平
此处盗个图
在这里插入图片描述

二、时序

1、读时序

在这里插入图片描述
在这里插入图片描述
(逻辑分析仪波形中由于从机只有一个寄存器地址,所以没有必要发送)
1、主机发送起始信号
2、主机发送地址及读命令(第8位是1)
3、从机返回ACK表示已经准备好
4、从机开始发送数据,主机返回ACK
5、从机继续发送数据,主机返回NAK,表示主机停止接收
6、主机返回结束信号,结束此次通信

2、写时序

在这里插入图片描述
在这里插入图片描述
(逻辑分析仪波形中由于从机只有一个寄存器地址,所以没有必要发送)
1、主机发送起始信号
2、主机发送地址及写命令(第8位是0)
3、从机返回ACK表示已经准备好
4、主机开始发送一字节数据,从机回复ACK
5、主机继续发送一字节数据,从机回复NAK,表示停止接收
6、主机返回结束信号,结束此次通信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值