打印
[PIC®/AVR®/dsPIC®产品]

24C02的读写时序

[复制链接]
870|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主


IIC总线信号类型
IIC总线在传送数据过程中共有3种类型信号:开始信号、结束信号和响应信号

开始信号(S):SCL为高电平时,SDA由高电平向低电平跳变,表示起始信号,开始传送数据
结束信号(P):SCL为高电平时,SDA由低电平向高电平跳变,表示结束信号,结束传送数据
响应信号(ACK):接收器在接收到8位数据后,在第9个时钟周期,拉低SDA电平。即接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传 递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

使用特权

评论回复
沙发
玛尼玛尼哄|  楼主 | 2023-11-24 16:53 | 只看该作者
I2C总线的主机与从机之间是如何通信的呢?
I2C总线的主机与从机之间的通信主要和I2C的时序有关。在通信开始的时候SCL与SDA都置为高电平,此时为总线空闲时间。当SCL为高电平期间SDA的电平被拉低,标志这总线的启动。当SCL为高电平期间SDA的电平被拉高,标志这总线的终止。在进行数据传送时,SCL为高电平期间,SDA上的数据必须保持稳定,只有在SCL的信号为低电平时,SDA上的高电平才允许变化。所以只要我们根据芯片手册正确的写好IIC的时序,按时序发送器件地址(不同的器件的地址不同)以及数据,就可以使主机与从机之间通信。

使用特权

评论回复
板凳
玛尼玛尼哄|  楼主 | 2023-11-24 16:54 | 只看该作者
I2C总线的仲裁
总线上可能挂接有多个器件,有时会发生两个或多个主器件同时想占用总线的情况,这种情况叫做总线竞争。I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。总线竞争的仲裁是在两个层次上进行的。首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可靠性。由于是利用I2C总线上的信息进行仲裁,因此不会造成信息的丢失。

使用特权

评论回复
地板
玛尼玛尼哄|  楼主 | 2023-11-24 16:54 | 只看该作者
I2C总线的其他注意点
1、进行数据传送时,在SCL为高电平期间,SDA线上电平必须保持稳定,只有SCL为低时,才允许SDA线上电平改变状态。并且每个字节传送时都是高位在前。
2、对于应答信号,ACK=0时为有效应答位,说明从机已经成功接收到该字节,若为1则说明接受不成功。
3、如果从机需要延迟下一个数据字节开始传送的时间,可以通过把SCL电平拉低并保持来强制主机进入等待状态。
4、主机完成一次通信后还想继续占用总线在进行一次通信,而又不释放总线,就要利用重启动信号Sr。它既作为前一次数据传输的结束,又作为后一次传输的开始。
5、总线冲突时,按“低电平优先”的仲裁原则,把总线判给在数据线上先发送低电平的主器件。
6、在特殊情况下,若需禁止所有发生在I2C总线上的通信,可采用封锁或关闭总线,具体操作为在总线上的任一器件将SCL锁定在低电平即可。
7、SDA仲裁和SCL时钟同步处理过程没有先后关系,而是同时进行的。

使用特权

评论回复
5
huangcunxiake| | 2023-11-25 17:51 | 只看该作者
大部分的单片机I2C都是按照这个系列芯片的读写时序做的硬件I2C

使用特权

评论回复
6
Bowclad| | 2023-11-27 14:13 | 只看该作者
硬件iic速度比模拟的快

使用特权

评论回复
7
Stahan| | 2023-11-30 23:29 | 只看该作者
这个是标准的iic时序吧

使用特权

评论回复
8
星辰大海不退缩| | 2023-12-1 08:16 | 只看该作者
Stahan 发表于 2023-11-30 23:29
这个是标准的iic时序吧

是的应该是标准IIC

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

3022

帖子

2

粉丝