网站怎样上线,网站启用cdn加速,近期国际热点大事件,前端开发软件有哪些简介
I2C#xff08;Inter IC Bus#xff09;是由Philips公司开发的一种通用数据总线#xff0c;由两根通信线#xff1a;SCL#xff08;Serial Clock#xff09;和SDA#xff08;Serial Data#xff09;组成。是一种同步、半双工带数据应答的通信协议#xff0c;支持…简介
I2CInter IC Bus是由Philips公司开发的一种通用数据总线由两根通信线SCLSerial Clock和SDASerial Data组成。是一种同步、半双工带数据应答的通信协议支持总线上挂载多个设备可实现一主多从和多主多从。下面从硬件电路时序基本单元时序等方面来了解I2C通信协议的工作原理。
硬件电路 这是I2C的接线图所有设备的SDA接一起SCL接一起设备的SCL和SDA都配置成开漏输出模式SCL和SDA各添加一个上拉电阻阻值一般为4.7KΩ左右。
配置成开漏输出模式可以解决总线冲突I2C是多主设备和多从设备共用一条总线的如果一个设备想将总线拉高一个设备想将总线拉低那么就发生了冲突还有可能导致设备损坏。开漏输出加上拉电阻很好的解决了这个问题开漏输出输出低电平才有驱动能力输出高电平是高阻态的总线要处于高电平只能通过上拉电阻来实现。只要有一个设备输出了低电平总线就是低电平只有所有设备都输出高电平总线才处于高电平。
时序基本单元
起始条件
SCL高电平期间SDA从高电平切换到低电平。
终止条件
SCL高电平期间SDA从低电平切换到高电平。 当从机捕获到这个SCL高电平SDA下降沿信号时就会进行自身的复位等待主机的召唤。 然后在SDA下降沿之后主机要再把SCL拉低一方面是占用这个总线另一方面是为了方便这些基本单元的拼接就是之后除了起始和终止条件每个时序单元的SCL都是以高电平开始低电平结束。 起始和终止都是由主机产生的在总线空闲状态时从机不允许主动去操作总线。
发送一个字节
SCL低电平期间开始条件后主机会把SCL拉低主机将数据的最高位放到SDA线上然后释放SCL从机将在SCL高电平期间读取数据位SCL高电平期间SDA不允许有数据变化依次循环上述过程8次即可发送一个字节。
接收一个字节
SCL低电平期间从机将数据的最高位放到SDA线上然后释放SCL主机将在SCL高电平期间读取数据位SCL高电平期间SDA不允许有数据变化依次循环上述过程8次即可接收一个字节主机在接收之前需要释放SDA
发送应答
主机在接收完一个字节之后在下一个时钟发送一位数据数据0表示应答数据1表示非应答
接收应答
主机在发送完一个字节之后在下一个时钟接收一位数据判断从机是否应答数据0表示应答数据1表示非应答主机在接收之前需要释放SDA
时序
指定地址写
对于指定从机地址为1101000的设备在其内部0x19地址的寄存器中写入0xAA这个数据
指定地址读
起始-指定设备地址(1101000)-写入-寄存器地址(0001100)-重新启动-指定设备地址(1101000)-读-数据(10101010)