转载-----IIC协议及其对ACK应答信号的处理
来源:互联网 发布:江歌的遇害事件知乎 编辑:程序博客网 时间:2024/05/18 13:25
1,SCL一直由Master控制,SDA依照数据传送的方向,读数据时由Slave控制SDA,写数据时由Master控制SDA。当8位数据传送完毕之后,应答位或者否应答位的SDA控制权与数据位传送时相反。
2,开始位“Start”和停止位“Stop”,只能由Master来发出。
3,地址的8位传送完毕后,成功配置地址的Slave设备必须发送“ACK”。否则否则一定时间之后Master视为超时,将放弃数据传送,发送“Stop”。
4,当写数据的时候,Master每发送完8个数据位,Slave设备如果还有空间接受下一个字节应该回答“ACK”,Slave设备如果没有空间接受更多的字节应该回答“NACK”,Master当收到“NACK”或者一定时间之后没收到任何数据将视为超时,此时Master放弃数据传送,发送“Stop”。
5,当读数据的时候,Slave设备每发送完8个数据位,如果Master希望继续读下一个字节,Master应该回答“ACK”以提示Slave准备下一个数据,如果Master不希望读取更多字节,Master应该回答“NACK”以提示Slave设备准备接收Stop信号。
6,当Master速度过快Slave端来不及处理时,Slave设备可以拉低SCL不放(SCL=0将发生“线与”)以阻止Master发送更多的数据。此时Master将视情况减慢或结束数据传送。
在实际应用中,并没有强制规定数据接收方必须对于发送的8位数据做出回应,尤其是在Master和Slave端都是用GPIO软件模拟的方法来实现的情况下,编程者可以事先约定数据传送的长度,slave不检查NACK,有时可以起到减少系统开销的效果。但是如果slave方是硬件i2c要求一定要标准的NACK,master方是GPIO软件模拟i2c并没有正确的发送NACK,就会出现“slave收不到stop”导致i2c挂死。
- 转载-----IIC协议及其对ACK应答信号的处理
- IIC协议及其对ACK应答信号的处理
- IIC ACK信号
- 再探索IIC应答信号和非应答信号
- linux关于tcp协议ack的实现--发送端对ack的处理
- linux关于tcp协议ack的实现--发送端对ack的处理
- iic ack
- 对IIC总线时序的一点理解以及ACK和NACK(NAK)
- IIC设备驱动程序(一)————IIC设备的总线及其协议
- 对DNS应答报文的解析及简单处理代码
- tcp协议的中对ack标志的理解
- Shell 对信号的处理
- 进程对信号的处理
- IIC等待应答
- I2C总线学习—查缺补漏—应答信号ACK
- I2C 调试记录之——无应答 (ACK) 信号
- I2C总线学习—查缺补漏—应答信号ACK
- IIC中的应答和非应答
- 使用表表达式修改数据
- 决策树分类器-Java实现
- 增强版ListView-RecyclerView
- SpringBoot学习系列基础Demo Mysql数据库
- [leetcode]29. Divide Two Integers
- 转载-----IIC协议及其对ACK应答信号的处理
- 深度学习菜鸟的信仰地︱Supervessel超能云服务器、深度学习环境全配置
- 过滤器
- 常用正則表達式
- Tomcat修改80端口的一系列问题
- linux centos下mysql数据库的主从复制环境搭建
- Properties文件操作
- opencv学习笔记(十八)cvSplit()、cvMerge()彩色图片通道分割与融合
- 你必须收藏的 GitHub 技巧