打印
[Atmel]

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

[复制链接]
561|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ddllxxrr 于 2015-5-7 19:20 编辑

接收地址包(SCLSM=1)
当SCLSM是1,I2C从机只能延伸SCL线在一个应答之后依据下图:



当I2C从机配置正确,它将等待一个开始条件被检测。当一个开始条件被检测,紧跟着地址包将被接收并且被

地址匹配逻辑检测。如果接收的地址不匹配,包将丢弃并且I2C从机等待一个新的开始状态。如果地址匹配,

应答确认(CTRLB.ACKACT)自动发出并且地址匹配比特在中断标志寄存器(INTFLAG.AMATCH)被设置。SCL将被延

伸直到I2C从机清除INTFLAG.AMATCH。因为I2C从机延迟时钟通过强迫SCL为低,软件给出没有限制的时间来响

应地址。

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

被接收。


如果状态寄存器中传输冲突比特(STATUS.COLL)被设置,它指示出发给从机最后包的地址有一个包冲突。一个

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

个指款。冲突遵守SMBus 地址解析协议。

当地址包被从I2C主机接收后,一个1将被写到INTFLAG.AMATCH来清除它。


接收传输数据包(SCLSM=0)

在I2C从机接收地址包之后,它将根据方向不是等待数据包被接收就是通过发一个数据包到DATA.DATA。当一

个数据包被接收或者发出,INTFLAG.DRDY将要被设置。然后,如果I2C从机接收数据,它将发送一个应答信号

根据CTRLB.ACKACK

情况1:数据接收

INTFLAG.DRDY被设置,并且SCL延迟低电平这期间SW交互

情况2:数据发送

当一个比特传输结束,INTFLAG.DRDY中断标志被设置。如果NACK被接收,I2C从机必须期待一个停止或一个重

复开始被接收。I2C从机必须释放数据线来允许I2C主机产生一个停止或重复开始。

在停止检测,在中断标志寄存器(INTFLAG.PREC)停止接收比特将被设置并且I2C从机将返回一个空闲状态。




相关帖子

沙发
中国微电脑网| | 2015-5-7 10:30 | 只看该作者
好吧,我就跟你读一点!

使用特权

评论回复
板凳
han0097| | 2015-5-7 10:38 | 只看该作者
不明所以!

使用特权

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

本版积分规则

2398

主题

6950

帖子

67

粉丝