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挂死。

在此我只发表对I2C确认信号(即所谓应答信号)的看法,至于它的一整套时序就不多罗嗦了。
1) MASTER向SLAVE发送数据:
MASTER没向SLAVE端发送8位数据后,就会将SDA置1,等待SLAVE端的确认;SLAVE端如果正确接受到数据,就会自动将SDA置0。我们程序员所能做的只能是检测确认信号,即每发送完8位数据后就检测一次SDA的状态,如果是0,则让程序继续往下执行,如果是1则强迫MASTER将刚才的8位数据再发送一遍;当然,如果SDA一直是1,也就是SLAVE一直未能正确接受到数据,我们也不能一直让MASTER反复发送,要做TIMEOUT处理,以防系统死机!
2) MASTER从SLAVE读取数据:
MASTER从SLAVE端读取数据,情况与发送数据有所区别,在读到最后8位数据时,要将SDA置1,也就是做UNACK动作,让系统知道读取数据到此结束;这个置1动作由程序员来做,而不是MASTER本身,因为数据读到哪里结束,只有我们程序员知道!
3) 说明:MASTER 指主控制端,在一般系统中就是我们常说的单片机了;SLAVE是指具备I2C协议的专用IC,比如ATMEL的24系列(24C16、14C32等)和PHILPS的SAA711X系列(VIDEO DECODER)。

再探索IIC应答信号和非应答信号相关推荐

  1. 信号系统|信号的分类|确定信号与随机信号 连续信号与离散信号 周期信号与非周期信号 能量信号与功率信号 奇异信号

    目录 信号所有分类: 一.确定信号与随机信号 二.连续信号与离散信号 三.周期信号与非周期信号 四.能量信号与功率信号 五.奇异信号 信号所有分类: 1.确定信号与随机信号 2.连续信号与离散信号 3 ...

  2. 周期信号与非周期信号

    目录 1.周期信号与非周期信号 2.周期信号 3.非周期信号 4.性质​​​​​​​ 1.周期信号与非周期信号 2.周期信号 信号在一段可测量的时间内完成一种模式,并且在随后同样长的时段内不断重复这种 ...

  3. 相干信号与非相干信号

    相干信号: 两束满足相干条件的信号称为相干信号, 相干条件(Coherent Condition): 这两束信号在相遇区域:①振动方向相同: ②振动频率相同: ③相位相同或相位差保持恒定 相干积分: ...

  4. 平稳信号、非平稳信号

    时间序列的平稳性,一般指宽平稳,即时间序列的均值和方差为与时间无关的常数,其协方差与时间间隔有关而也与时间无关.简单地说,就是一个平稳的时间序列指的是:遥想未来所能获得的样本时间序列,我们能断定其均值 ...

  5. IIC中的应答和非应答

    IIC中的应答和非应答 应答是I2C非常重要的机制,是不一定要弄清.它在工作中涉及的范围包括总线仲裁(多主).正常的数据通信.这个问题在常见总线里是比较特别的,应当深入详细地了解.让我们先整理一下这个 ...

  6. 平稳/非平稳信号举例

    平稳和非平稳都是针对随机信号说的. 平稳信号是指分布参数或者分布律随时间不发生变化的信号. 非平稳信号是指分布参数或者分布律随时间发生变化的信号. 常见的平稳信号:一段短的语音信号(10~30ms) ...

  7. 利用 FFT 运算恢复原来的信号,PSD和原来信号之间的关系

    明:利用FFT运算实现信号的重构 一. 信号建模 % Use Fourier transforms to find the frequency components of a signal burie ...

  8. IIC通信从机无应答(读取数据始终为0XFF)

    在做项目的时候遇到的问题,IIC通信时读取数据始终为0XFF 下面从写数据开始介绍 向从机写数据步骤为: 开始信号->发送从机地址->等待应答->发送寄存器地址->等待应答-& ...

  9. 小波变换比傅里叶变换好在哪里_小波变换与傅里叶变换详解——代码下载——非平稳信号与平稳信号的滤波效果对比

    小波变换与傅里叶变换有什么区别吗?小波变换与傅里叶变换哪个好?我们通过小波变换与傅里叶变换的详细解读.小波变换与傅里叶变换的区别.傅里叶变换缺点方面来解析 小波变换与傅里叶变换的区别 傅立叶分析中,以 ...

最新文章

  1. Java---定义一个“点”(Point)类用来表示三维空间中的点(有三个坐标)
  2. [转载]C#流,字节数组,字符串
  3. 27 款经典的CSS 框架
  4. MySQL中SELECT语句简单使用
  5. P3545HUR-Warehouse StoreP4053建筑抢修(反悔贪心、堆)
  6. matlab levy,Levy Flight 模型及Matlab实现
  7. DataTable.ImportRow()与DataTable.Rows.Add()的区别
  8. 字符流读取的全部方法
  9. linux函数删除某文件,Linux环境下用C++删除指定文件
  10. Atitit  基于meta的orm,提升加速数据库相关应用的开发
  11. linux背光命令,在Linux下开启背光Led键盘的背光
  12. jquery进度条插件
  13. android 日记 app推荐,用这些 APP 来记录生活,再也不用担心无法坚持写日记
  14. php漂浮广告代码,JS随机漂浮广告代码具体实例
  15. pc微信多开hook版本3.2.1.123
  16. 算法时间复杂度符号分析(O、o、Ω、ω、Θ)
  17. 什么是 HTTPS 的证书信任链?自己给自己发行不行?
  18. 论文阅读-AKS_CoRR_2011
  19. 窥视Google Chrome OS
  20. PHP写的二维码签到,大家支持一下吧!

热门文章

  1. openwrt 配置网桥 vlan 多个wan口 以及web界面配置总结
  2. 开发板——屏幕控制(LCD和触摸屏)
  3. 虹软2023自动驾驶算法岗机试
  4. CIO40知识星球—读书系列4( 人文与哲学)
  5. java报序列错误和违反唯一约束条件的错误
  6. excel行列互换_办公软件操作技巧043:如何在excel中实现行列转置
  7. windows XP 注册表
  8. 免费学习 SwiftUI
  9. 推进快递产业融合,齐聚2023上海国际快递展-快递物流展
  10. php调用拼多多api模板,PHP调用拼多多API模板