大家好,又见面了,我是你们的朋友全栈君。
–>物理结构:
–>通信原理:通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。
–>iic总线协议:
1】起始和结束信号总是由主设备产生。
起始信号:SCL高电平空闲,SDA由高变低;(SDA拉低后SCL再拉低)
结束信号:SCL高电平空闲,SDA由低变高;(SCL拉高后SDA再拉低)
2】数据传输:SDA的数据在SCL高电平期间被写入从机。所以SDA的数据变化要发生在SCL低电平期间。
3】应答位由从设备发出。
一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位, 此时才认为一个字节真正的被传输完成。并不是所有的字节传输都必须有一个应答位,比如:当从设备不能再接收主设备发送的数据时,从设备将回传一个否定应答位。
4】从设备地址选取:I2C总线上的每一个设备都对应一个唯一的地址,主从设备之间的数据传输是建立在地址的基础上,也就是说,主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程一样,只不过大多数从设备的地址是7位的,然后协议规定再给地址添加一个最低位用来表示接下来数据传输的方向,0表示主设备向从设备写数据,1表示主设备向从设备读数据。
数据格式:每一小包数据由9位bit组成。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131054.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...