I2C 波形读取方法
I2c信息读取指南
一、 基本信号判断
1 总线空闲判断 SCL 和 SDA 全为高
2 开始信号判断 :SCL 为高时 SDA 产生一个下跳沿
3 地址、数据、应答,读写标示电平的识别:SCL 为高电平脉冲时SDA上的电平即为地址、数据、应答电平
4 i2c读 : 高电平
5 i2c 写 : 低电平
6 应答(ACK):低电平
7 非应答(NAK):高电平
8 停止信号 : SCL 为高时 SDA 产生一个上升沿
9 数据传输方向: 数据传输先高字节后低字节。即先传第七位,然后第六位。。。。。。。。。第0位。
二、I2c协议包描述 首先是起始信号 然后是七位的slave 地址
然后是读写标志位(0 写 1 读) 然后是设备的应答(0 ack 1 nak)如果此时是1 则设备存在问题,i2c错误 然后是一个或多个字节的数据。每个数据有8位,后跟一个应答。此时如果是主机读数据则应答位由主机发出。如果是写数据则应答位由设备发出。 然后是停止位。如果是主机读,则在收到最后一个字节后发一个nak并发stop信号释放总线。如果是主机写,则在发出最后一个字节并受到ack后发stop信号释放总线。
三、获取i2c波形数据: 从start信号到stop信号或restart信号之间的数据线在clk信号的高电平脉冲上的电平的集合。
四、从I2c 波形数据读取i2c信息 1 获得设备地址 :数据位的前七位 2 获取数据传输方向: 第8位(高读,低写) 3 获取是否应答: 9的倍数位(低ack,高 nak)即每一个数据紧跟的那一位 4 获取传输的数据: 第10+7(n-1)位到10+7n 位是传输的数据 n 指的是传输的第n个数据 Note : 1 如果是读操作,stop信号前必须要有nak ,否则i2c错 2 丛机应答nak则i2c错 3 如何解析传输的数据依赖于设备定义。(比如ov2640,第一个字节是寄存器地 址,第二个字节是数据。它只有两个数据)
五、读波形的步骤: 1 根据三提供的方法获取波形数据 2 根据波形数据获取i2c信息
六 、复合i2c概念 所谓复合i2c是指主机完成一次传输后不发stop信号,接着发start信号开始下一次传输。 这样的格式在某些设备中要求(设备spec中有详细的说明)。