打印
[Atmel]

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

[复制链接]
880|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddllxxrr|  楼主 | 2015-4-30 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
传输地址包

I2C主机开始一个总线传输通过写ADDR.ADDR带有I2C从机地址和方向比特。如果总线忙,I2C主机将等待直到

总线变成空闲在连续操作之前。当总线是空闲,I2C主机将在总线上执行一个开始状态。I2C主机将传输一个

地址包用地址写到ADDR.ADDR.

当地址包被I2C主机传出后,将进入四个情况的一个,依据总裁和传输方向。

情况1:总裁丢失或总线错误在地址包传输期间

如果在传输地址包时总裁丢失,主机在中断标志寄存器的总线比特(INTFLAG.MB)和状态寄存器的总裁丢失比

特(STATUS.ARBLOST)都被设置。串行数据输出SDA被禁止,并且SCL被释放,停止时钟延伸。这个的影响I2C主

机不再被允许执行任何操作在总线上直到总线又空闲。总线错误的行为类似于仲裁丢失状况。由于这个原因

,MB中断标志和状态寄存器中的主机总线错误比特一起被设置,除了STATUS.ARBLOST。

主机状态寄存器中接收非应答比特位(STATUS.RXNACK)将总是含有最后接收的应答或非应答指示。

软件通常会通知应用程序的状态并清除中断标志前退出中断程序。这时没有其它的标志被清了,因为下一次

addr.addr寄存器写入所有的旗帜将被自动清除。

情况2:地址包传输完成-没有收到应答

如果没有从机响应地址包,那么INTFLAG.MB中断标志被设置并且STATUS.RXNACK被设置。在这时时钟延迟被激

活,防止总线上的进一步活动。

丢失的ACK响应指示出I2C从机是忙于其它任务或休眠中,因些,不能响应。在这个事件上,下一步能被执行

一个停止状态(推荐)或通过重复开始状态重发地址包。然而,丢失应答的原因可能是错误的从机地址或都I2C

从机由于一些原因没有连接或者损坏了。如果用SMBus逻辑,从机必须应答地址,并且没有应答意味着在总线

上从机不可用。


情况3:写地址包传输完成,主机在总线上设置

如果I2C主机接收到的相应从机的应答信号,INTFLAG.MB设置并且STATUS.RXNACK被清除。在这时时钟延迟被

激活,以防止过多的总线活动。

由于这个原因,软件的实施变得高度依赖于协议。三个可能的行为能使I2C操作继续。三个选择是:

。数据传输操作通过写数据字节到DATA.DATA来初使化
。通过写ADDR.ADDR传输一个地址包。在地址包之前,一个重新启动状态将自动被插入
。执行一个停止状态,因此终止交易。


情况4:读地址包传输完成,主机在总线上设置

如果I2C主机从从机接收一个应答,I2C主机处理从从机接收下一个字节。当第一个数据字节被接收,在中断

标志寄存器中的从机在总线比特(INTFLAG.SB)被设置并且STATUS.RXNACK被清0.这时时钟延迟被激活,以防止

总线上多余的操作。

由于这个原因,软件的实施变得高度依赖于协议。三个可能的行为能使I2C操作继续。三个选择是:

。让I2C主机通过第一个应答继续读数据。这个自动读DATA.DATA当smart模式使能.
。传输一个新地址包。
。中断传输通过执行一个停止状态










相关帖子

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

本版积分规则

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

2399

主题

6963

帖子

68

粉丝