1 低层时序
①. 底层时序
******** 低层时序:
①.空闲: scl clk都是高电平
②.起始位: 一个时间段,这个段时间内,SCL高电平, SDA 出现下降沿 , 接收方收到以后,知道了,下一个周期就是传递数据!
③.停止位: 主设备,所有数据发送完毕以后,一个时间段,这个段时间内,SCL高电平, SDA 出现上升沿 ,停止位
2. ④.数据传输:
如果主设备写如数据,数据放入寄存器以后, 主设备有主动权,一个bit一个bit传输的也是,首先主设备把数据的一个bit位放入放入,然后clk拉高,下一个位,拉高
如果从设备回复数据,数据放入寄存器以后, 从设备有主动权,一个bit一个bit传输的也是,首先从设备把数据的一个bit位放入,然后clk拉高,下一个位,拉高
⑤. ACK 8位传输结束以后,
9位, 主设备把scl拉高, sda从设备写0或者1
主设备释放主动权, scl的,从设备拉高, 主设备读取sda bit位
如果scl一直为高,从设备没有收到, 主设备发送数据失败
2. 高层时序
******** 高层时序: 【参考 S5PV210_UM_REV1.1.pdf 】
2.3.2 DATA TRANSFER FORMAT 【886】
- Write Mode Format with 7-bit Addresses
S: 开始 ,
Slave Address 7bits R/W: 主设备发送从设备地址,确定要和哪个重设备通信, 7位设备地址 , 还有一位表示都还是写
A : 从设备回复收到 , A就是ACK的意思,要么是1,要是0,1表示收到数据 0表示无响应
DATA(1Byte) : 主设备发送 数据 , 主设备把数据写入寄存器即可
A: 从设备收到以后回
P: 通信结束
Read Mode Format with 7-bit Addresses
S
Slave Address 7 bits
A
DATA : 从设备给主设备回复数据,从设备自动把数据写入寄存器,主设备来读即可
A: 主设备发送 A ,结束
P: 暂停
- 组设备是广播方式发送,比如挂着4个从设备,都可以收到广播地址,收到地址后,和自己的地址比对,确定是不是自己!!
-- 上面可以用gpio来模拟i2c, i2c 速率很慢,现在用控制器来做的嵌入式里面,不用管理 ,单片机没有i2c控制器,用gpio来模拟