打印

i2c总线从机会产生停止位吗

[复制链接]
3399|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
有一个I2C器件,其读取数据时序如图,有一事百思不得其解,一般的I2C读写最后的停止位是由主机发出的,总线释放,可按照这个时序,主机给出读多少字节的指令,主机只要读就可以了,读完后,产生停止位。按照这个时序,停止位应该是从机产生的,可从机怎么产生的,怎么读哇?

相关帖子

沙发
NE5532| | 2013-3-9 09:31 | 只看该作者
只有主机能发送停止位,另外从这个波形,你怎么知道是从机发的?

使用特权

评论回复
板凳
ayb_ice| | 2013-3-9 09:38 | 只看该作者
时钟永远是主机发出,从机可以发数据

使用特权

评论回复
地板
JIANG_E8E|  楼主 | 2013-3-9 09:39 | 只看该作者
如果是主机发出的,主机根本不用发读命令字、开始地址、地址步长、读取数目等,读多少就是主机控制就好了,用不着这么麻烦呀,我想还是有地方没有理解这个芯片。

使用特权

评论回复
5
JIANG_E8E|  楼主 | 2013-3-9 09:47 | 只看该作者
一般的I2C程序,主机发出从地址(子地址)然后就可以写或读了,写多少、读多少由主机控制,读、写完后,发生停止位释放总线,可这个时序理解就是把主机的工作由从机去做了。

使用特权

评论回复
6
JIANG_E8E|  楼主 | 2013-3-9 09:58 | 只看该作者
能不能是从机接受完数据后,发送一个NACK信号,然后主机发出停止位。可我试了主机检测不到NACK信号。

使用特权

评论回复
7
refee| | 2013-3-9 15:06 | 只看该作者
话说碰到过没有应答位的IC,这时需要修正一下软件的应答检测……

使用特权

评论回复
8
sysdriver| | 2013-3-9 20:40 | 只看该作者
如果是单片机和24CXX器件的情形,单片机可以不发nack,单片机写数据完之后读24CXX的应答确认写进去就行了,读完数据之后直接停止通信。

如果是单片机和单片机通过I2C通信的情形,可以完全按照协议来弄

使用特权

评论回复
9
JIANG_E8E|  楼主 | 2013-3-9 21:03 | 只看该作者
这个期间太特殊了,各位还需开动脑筋

使用特权

评论回复
10
NE5532| | 2013-3-9 22:24 | 只看该作者
JIANG_E8E 发表于 2013-3-9 21:03
这个期间太特殊了,各位还需开动脑筋

我还是没有看懂你想问什么,主机在任何时候都可以发停止位,楼主这个波形没有任何理由说是从机发出了停止位。

使用特权

评论回复
11
明月小厨| | 2013-3-9 23:42 | 只看该作者
建议看周立功的有关I2C介绍,说的非常明白;

使用特权

评论回复
12
江枫渔火| | 2013-3-10 01:43 | 只看该作者
这还是结合具体的器件来讨论比较实际。为什么发那些数据到从机,这根这个器件的内部逻辑原理密切相关。

使用特权

评论回复
13
明月小厨| | 2013-3-10 06:01 | 只看该作者
主机:控制时钟,产生起始信号,产生停止信号,检测从机的应答;当然有些非标I2C器件不产生应答信号;
从机:监测起始信号,监测停止信号,发送应答信号(受控的);
数据谁发送?都可以发送,但一开始通常是主机发送数据(含地址和指令);协议可以自定;
I2C一环扣一环,错一个都不行;

使用特权

评论回复
14
明月小厨| | 2013-3-10 06:03 | 只看该作者
24CXX器件就是标准的从器件;

使用特权

评论回复
15
JIANG_E8E|  楼主 | 2013-3-10 07:58 | 只看该作者
NE5532 发表于 2013-3-9 22:24
我还是没有看懂你想问什么,主机在任何时候都可以发停止位,楼主这个波形没有任何理由说是从机发出了停止 ...

主机读的字节数是主机告诉从机的,从机控制的是否读完,那么主机什么时候知道读完所有数据了?

使用特权

评论回复
16
NE5532| | 2013-3-11 08:23 | 只看该作者
JIANG_E8E 发表于 2013-3-10 07:58
主机读的字节数是主机告诉从机的,从机控制的是否读完,那么主机什么时候知道读完所有数据了? ...

这要看协议是谁写的,如果从机是固定的器件,手册里肯定会给你说如何知道数据达到末尾,如果协议是你自己写的,想办法让主机知道,比如发特殊的数据,或者发NACK。

另外如果楼主是在读存储器,主机怎么可能不知道读到了数据末尾?数据格式是你自己定义的啊!

使用特权

评论回复
17
apple| | 2013-3-11 08:37 | 只看该作者
估计是你的理解不对

使用特权

评论回复
18
JIANG_E8E|  楼主 | 2013-3-12 18:11 | 只看该作者
NE5532 发表于 2013-3-11 08:23
这要看协议是谁写的,如果从机是固定的器件,手册里肯定会给你说如何知道数据达到末尾,如果协议是你自己 ...

版主,能留个EMAIL吗?我把资料邮给你,帮忙给看看。

使用特权

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

本版积分规则

3

主题

15

帖子

0

粉丝