本文章以8XC552(飞利浦的一款微操控器)的IIC总线串行串行输入输出结构为例,深化了解IIC总线协议:
IIC总线的串行输入输出结构确保了IIC总线的数据寄存器中能保存总线上的最新数据。SDAT和ACK组成一个9为的移位寄存器,它组成一个环状结构。串行输出的一起不断采入总线上的数据。ACK标志位由总线操控,并可以由CPU存取(存入1对应的对错应对,存入0对应的应对)。在SCL线上的时钟脉冲的上升沿,串行数据经过ACK标志位存入SDAT,串行数据在SCL时钟脉冲下降沿沿BSD7移出当一个字节数据移入SADT后,SDAT中的数据有用,操控逻辑在第9个时钟脉冲周期送出应对位。
为什么I%&&&&&%总线进行数据发送时,时钟信号为高电平期间,数据线上的数据有必要坚持数据安稳???这是由于会在高电平期间收集总线上的数据,假如此刻总线上的数据不安稳,会导致收集的数据和发送的数据不一致,然后封闭发送(相似裁定失利)。协议规则只要在时钟信号为低电平期间,数据线上的高电平或低电平才答应改变,这是由于BSD7中的数据是在时钟下降沿宣布的,且不会在时钟脉冲低电平期间收集总线上的数据。
在CPU对SDAT写入时,SDAT7装入BSD7,这是向SDA线上发送的第一位数据,9个时钟脉冲后SADT中的8位数据发送到SAD线上,应对位出现在ACK中,这样发送到总线上的数据又回来到SDAT中。
SDA寄存器,包括个待发送的数据或一个刚收到的数据字节,发送时,数据总是从右向左移位。数据移出时,总线上的数据一起移入,移位寄存器的这种结构确保了总线竞赛失利时数据不会丢掉。它以并行的方法与内部总线相连,以串行方法与SDA相连。发送数据时,由内部总线装入到SDAT中,发送时,数据以串行从串行通道回来SDAT中。接纳时,装入新接纳的SDA线上的数据。