打印
[Atmel]

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

[复制链接]
687|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
传输数据包

    当一个带有方向设置为写地址包成功地传输后,INTFLAG.MB将被设置并且I2C主机能通过写DATA.DATA

来开始传输数据.I2C主机传输数据通过I2C总线同时连续监视总线包冲突.如果一个冲突被检测,I2C主机失

去总裁并且STATUS.ARBLOST设置.如果传输成功,I2C主机自动接收一个从从机发的ACK比特并且

STATUS.RXNACK将被清零.INTFLAG.MB将被设置在两个情况下,不用管总裁的结果.
在I2C主机总线中断开始测试STATUS.ARBLOST和处理仲裁丢失状态是推荐的做法。这是可以做到的,因为

没有什么区别,处理数据包的地址和仲裁。在下一个数据包传输到来之前,每个数据包传输后

STATUS.RXNACK必须被检查.如果NACK被从从机给出,I2C主机不允许连续传输数据包。

接收数据包(SCLSM=0)

当INTFLAG.SB被设置,I2C主机已经接收了一个数据包。I2C主机必须通过发ACK或NACK回答。发NACK意味着没有成功地执行,由于在传输期间总裁可能丢失。由于这个原因,丢失的总裁装导致INTFLAG.SB没有设置到完成。相反,INTFLAG.MB将用来指示一个总裁的变化。处理丢失的总裁同数据比特传输一样。

接收数据包(SCLSM=1)

当INTFLAG.SB被设置,I2C主机已经接收了一个数据包并且传输了ACKACT比特。从这点讲,ACKACT必须被设到下一个ACK的正确值,并且能连续读DATA并且如果没有在smart模式,可执行命令。

高速模式

高速传输是一个我步骤过程如下图所示。首先,一个主机码(0000 1nnn 这里nnn是一个独一地二的主机码)被传输在高速模式,跟随一个NACK由于没有从机应答。总裁只在全速主机码相位执行。主机码是通过向地址寄存器(ADDR)写主机码并把高速比特位(ADDR.HS)写0来传输的。

当主机码和NACK被传输,主机写中断将被声明。这时,从机地址可以被写到ADDR寄存器伴着ADDR.HS比特设置为1.在高速模式下,主机将要产生一个重复开始跟在从机地址后边。总线将保持高速模式直到停止产生。如果一个重复开始被期望,ADDR.HS比特必须再被写1跟着新地址被传输。




传输高速模式要求I2C高机配置为高速模式(SPEED=0b10)并且SCL时钟扩展模式(SCLSM)比特设为1.


相关帖子

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

本版积分规则

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

2398

主题

6950

帖子

67

粉丝