前馈科技

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 381|回复: 0

I2C时序

[复制链接]

97

主题

97

帖子

539

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
539
发表于 2022-12-22 23:23:49 | 显示全部楼层 |阅读模式
对从设备写入数据
当主设备通过I2C总线向从设备写入数据时,主设备需首先在总线上发送带有从设备地址的起始条件,并且最后一位设置为0(R/W位),该位表示写入。 从设备发送应答位后,主设备将发送它希望写入的寄存器的寄存器地址。 从设备将再次确认,让主设备知道它准备好了。 在此之后,主设备将开始将数据发送到从设备的寄存器,直到主设备发送了所需的所有数据(有时这只是一个字节),主设备将以STOP条件终止传输
iic1.png

对从设备读取数据
对从设备的读取与写入非常相似,但需要一些额外的步骤。 为了对从设备读取,主设备必须首先向从设备指示它希望从哪个寄存器读取。 这是由主设备以与写入类似的方式开始传输,通过发送R/W位等于0(表示写入)的地址,然后是希望从中读取的寄存器地址。 一旦从设备确认该寄存器地址,主设备将再次发送START条件,然后是从设备地址,R/W位设置为1(表示读取)。 这次,从设备将确认读取请求,主设备释放SDA总线,但将继续向从设备提供时钟。 在通讯的这一部分期间,主设备将成为主接收器,从设备将成为从发送器。
主设备将继续发送时钟脉冲,但将释放SDA线,以便从设备可以传输数据。 在每个数据字节结束时,主设备将向从设备发送ACK,让从设备知道它已准备好接收更多数据。 一旦主设备收到了预期的字节数,它就会发送一个NACK,向从设备发出信号以停止通信并释放总线。然后主设备将以STOP条件结束通讯。
iic2.png

在每个数据字节或地址字节传输完成后,还有一个来自接收方的ACK/NACK位。
当在ACK/NACK相关时钟周期期间SDA线保持低电平时,这被解释为ACK。ACK位表示字节数据传输有效,可以发送下一个字节。
在接收方发送ACK之前,发送方必须释放SDA线。使得接收器能够在ACK/NACK相关时钟周期的低相位期间下拉SDA线。
当在ACK/NACK相关时钟周期期间SDA线保持高电平时,这被解释为NACK。 有几个条件会导致生成NACK:
• 通信方无法接收或发送,因为它正在执行某些实时功能,并且尚未准备好开始与主站通信。
• 在传输期间,接收方获取它不理解的数据或命令。
• 在传输期间,接收方不能再接收任何数据字节。
• 主接收器完成读取数据并通过NACK向从设备指示。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|计算机控制

GMT+8, 2024-4-29 22:46 , Processed in 0.054632 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表