I2C总线理解
读时序首先读写位开始还是写操作,要把寄存器地址写进去,然后得到回应之后才开始把读写位变成读操作后面读取数据,读完之后主机产生一个结束信号。在SCL在高电平的时候,SDA产生一个下降沿,这时就会认为触发了一个开始信号,紧接着主机就传输7位的地址,再加一位的读写位,这张图的读写位是0,表示写操作,然后传输寄存器地址,然后后面带入写入的数据,发完之后主机产生一个结束信号,也就是。同时SCL产生时钟信号,
i2c有两根线一根叫做SDA,另一根叫做SCL
SCL用于主机传输时钟信号
SDA用于主机和从机之间传输数据
每个设备都有七个地址,用于和其他从设备区分
空闲时刻SDA和SCL都是高电平
I2C时序

在SCL在高电平的时候,SDA产生一个下降沿,这时就会认为触发了一个开始信号,紧接着主机就传输7位的地址,再加一位的读写位,写操作的话这个读写位就是0,读操作的话这个读写位就是1。同时SCL产生时钟信号,每一位数据都在SCL的时钟信号下进行传输,从图上时序图我们能看到传输了9位,第九位这里是需要等待设备返回一个ACK,主机会把SDA设置为输入,来等待SCL这个ACK信号,如果设备响应了就把SDA拉低,紧接着后面就可以传输数据了。每传输一个字节后面都有一个ACK信号,来表示主设备或者从设备已经接收到这个字节数据了。当然我们要知道ACK是接收方发出的。在发送结束之后,会产生一个结束信号,这个结束信号也是主机产生的。在SCL处于高电平的时候,SDA产生一个上升沿,被视为结束信号。
写时序

这张图的读写位是0,表示写操作,然后传输寄存器地址,然后后面带入写入的数据,发完之后主机产生一个结束信号,也就是在 SCL 高的时候,把 SDA 拉高。
读时序

读时序首先读写位开始还是写操作,要把寄存器地址写进去,然后得到回应之后才开始把读写位变成读操作后面读取数据,读完之后主机产生一个结束信号。
更多推荐



所有评论(0)