天天

分析I2C波形!!!

0
阅读(10369)

 一、I2C总线协议定义如下:

1 只有在总线空闲时才允许启动数据传送

2 在数据传送过程中当时钟线为高电平时数据线必须保持稳定状态不允许有跳变时

钟线为高电平时数据线的任何电平变化将被看作总线的起始或停止信号

起始信号

时钟线保持高电平期间数据线电平从高到低的跳变作为I2C 总线的起始信号

停止信号

时钟线保持高电平期间数据线电平从低到高的跳变作为I2C 总线的停止信号

应答信号

I2C 总线数据传送时每成功地传送一个字节数据后接收器都必须产生一个应答信号应答的器件在第9 个时钟周期时将SDA 线拉低表示其已收到一个8 位数据

CAT24WC01/02/04/08/16 在接收到起始信号和从器件地址之后响应一个应答信号如果器件已选择了写操作则在每接收一个8 位字节之后响应一个应答信号

当CAT24WC01/02/04/08/16 工作于读模式时在发送一个8 位数据后释放SDA 线并监视一个应答信号一旦接收到应答信号CAT24WC01/02/04/08/16 继续发送数据如主器件没有发送应答信号器件停止传送数据且等待一个停止信号

 

二、实际操作

使用模拟I2C方式来实现对AT24C16进行写操作。设备地址为0x0a,存储地址0x001a,存储数据为0x0a,0x0b.

开始状态没错,设备地址为0xa0,即为1010 0000

图中问号的地方是由于SDA输出方向改变造成的。

SCL的时钟周期大概为300u,每个数据位8bit,加上一位响应位。

从波形来分析的话,应该是可以写入才对,但是还是不行,看来只能从硬件上来找问题了。