打印
[Atmel]

每天跟我读点资料:SAM D21数据手册(185)

[复制链接]
840|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddllxxrr|  楼主 | 2015-5-5 20:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
接收地址包(SCLSM=0)

当SCLSM是0,I2C从机延伸SCL依据下图。当I2C从机是正确地配置,它将等待开始状态被检测。当一个开始状

态被检测,后继的地址包将被接收并且被地址匹配逻辑检测。如果接收到的地址不匹配,这个包将拒绝并且

I2C从机等待一个新的开始状态。当一个开始状态及可用的地址包被检测出I2C从机在中断标志寄存器地址匹

配比特(INTFLAG.AMATCH)被设置。SCL将被延伸直到I2C从机清除INTFLAG.AMATCH。因为I2C从机保持时钟通过

强制SCL为低,软件给予足够长的时间响应地址。

传输的方向的检测是通过读状态寄存器读/写方向比特(STATUS.DIR),并且比特将被更新当有效的地址包被接

收。

如果在状态寄存器(STATUS.COLL)中的传输冲突比特被设置,这指示了最后包到I2C从机的有一个包冲突。一

个冲突导致SDA和SCL线被释放,没有对软件有任何声明。接下来AMATCH中断是,由于,前一个包冲突的指示

。冲突遵守SMBus地址解决方案(ARP).

在地址包被从I2C主机接收后,两种情况之一将要发生根据传输方向。

情况一:地址包接收---读标志设置

STATUS.DIR比特是1,指示一个I2C主机读操作。SCL线被强迫拉低,延伸总线时钟。如果应答被发出,I2C从

机硬件将要在中断标志寄存器设置数据准备好比特(INTFLAG.DRDY),指示数据需要被传输。如果非应答被发出

,I2C从机将等待一个新的开始状态和地址匹配。

典型地,软件将立刻通过发应答或非应答比特来应答地址包。I2C从机命令 CTRL.CMD = 3 能被用来读和写的

操作由于命令执行依据STATUS.DIR比特。

写一个1到INTFLAG.AMATCH也将导致一个应答/非应答被送出到相应的CTRLB.ACKACT比特。


情况二:地址包接收---写标志设置

STATUS.DIR比特被清除,指示一个I2C主机写操作,SCL线被强制拉低,延伸总线时钟。如果一个应答被发送

,I2C从机将等待数据接收,数据,重复开始或停止能被接收。

如果非应答被发送,I3C从机将等待一个新的开台状态和地址匹配。

典型地,软件将立刻通过发送应答/非应答应答地址包。I2C从机命令CTRLB.CMD=3能被用来读和写操作,这

依据STATUS.DIR。

写一个1到INTFLAG.AMATCH也将导致一个应答/非应答被发送到相应的CTRLB.ACKACT比特。





相关帖子

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

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2399

主题

6963

帖子

68

粉丝