先简单介绍一下IIC总线协议。IIC总线是philips公司推出的新一代串行 通信标准总线。它仅靠两根线实现全双工通信:SDA(数据线),SCL(时钟线)。
写时序如下: start+device_id+ack+waddr+ack+wdata+ack+stop
读时序如下: start+device_id+ack+raddr+ack+start+ack+rdata+nack+stop
IIC读写时序注意: 1、start :在时钟SCL为高电平期间,数据线SDA由高电平拉低,启动IIC总线;
2、device_id:IIC总线是个多主控总线,主机和任何一个从设备之间都可以形成主线,最后一位表示读写操作码,0-写,1-读;
3、ack :写操作码发送完主机释放总线,从机返回一个应答信号告诉主机写入数据完成;
4、stop :在时钟SCL为高电平期间,数据线SDA由低电平拉高,关闭IIC总线;
5、由于IIC总线支持连续写,故写完地址之后不需要再发送起始信号;这也正是与SCCB最大的不同之处;
6、无论读写,应答位总线都需要释放,至于 如果不释放会不会对时序产生破坏影响还不清楚,有待验证;
(摘自百度)总结来说:SCCB无ACK,对应的是Don't care;由于SCCB不支持多字节,NA必须为高电平;SCCB没有重复起始的概念,读周期中,当主机发送完寄存器地址后,必须发送停止信号。不然在发送读命令后,从机不能产生Don't care响应信号。
3
|
|
|
|