怎样识别I2C通信波形
先复习一下i2c总线协议:
1. 启始条件
Scl高电平sda下降沿的时候start.
2. 停止条件
Scl高电平sda 上升沿的时候stop.
3. 空闲状态表现为SDA和SCL都一直保持高电平状态。
4. 数据传输, 基本的顺序应该是下面这个样子:
然后看波形吧
黄色是时钟信号,绿色是数据信号。
顺序从左向右看。I2c的传输顺序是msb最先。(最左边最先最右边最后)。
启始信号之后是一个0,3个1,时钟线高电平的时候数据线有效。后面的数据都这样的读。接下来是3个0,再一个1. 所以启始之后的第一个字节是0b01110001=0x71,根据通信协议start信号之后的第一个字节是从器件的地址(高7位)+读写位(第8位,0为写,1为读)。分析下来这次的操作是对slave 0x38的读操作,与代码相符。8位数据之后是个ack。再接着是数据+ack。Stop信号没有截出来。