打印

I2C总线模块 -- I2C总线操作模式(主模式)

[复制链接]
1021|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如果不设置从模式,则I2C接口只是主模式,忽略所有外部产生开始条件。下面给出了主模式的操作过程:
       1.为了启动传输,CPU写从设备地址和方向字节到I2C_D,设置I2C_MCSR位为0,开始产生(或者1位,重新产生)。
        在单主模式环境下,成功产生开始条件。如果从设备ACK这些字节,才能发送或者接收数据。
       2.  当正在发送字节时,主设备接收到来自从设备的用于每个字节的ACK/NACK。
ACK来自从设备,表示从设备能接收其它字节;
NACK来自从设备,表示从设备不能接收其它字节;
沙发
雾霾和青山|  楼主 | 2015-7-24 08:59 | 只看该作者
当正在接收字节时,主设备ACK/NACK所接收到的每个来自从设备的数据。
ACK来自从设备,表示主设备需要更多地字节;
NACK来自从设备,表示主设备正在接收字节;
当数据传输完成后,CPU发布一个停止命令。I2C接口产生一个停止命令,然后进入空闲状态。
        代替一个停止条件,CPU能发布一个重新启动命令,立即启动另一个传输。

图片14.png (64.03 KB )

图片14.png

使用特权

评论回复
板凳
peace555| | 2015-7-24 09:02 | 只看该作者
固定功能I2C模块不支持主模式下的零字节传输。在主模式下,如果在开始条件后,立即设置停止条件,则只有在发送地址域后(在用于数据写的地址后主机也发送0xFF数据字节),模块产生停止/重新启动条件。当产生停止/重新启动条件后,时钟线保持为低。为了避免这种条件,不要在启动后,立即设置停止/重新开始条件,传输至少一个字节,并且在NAK或者ACK后,设置停止/重新启动。
         不要断电或者禁止固定功能I2C模块,此时总线还是活动的,这将停止总线。取而代之的是,一直等待,直到总线空闲,即,释放所有的SCL和SDA线,并且上拉。

使用特权

评论回复
地板
peace555| | 2015-7-24 09:05 | 只看该作者
通过设置I2C_CFG位为1,使能主模式后,就可以使能多主模式。
        在多主模式下,CPU和以单主模式一样的行为开始传输。然而,在产生启动条件前,主机必须监控I2C_MCSR总线空闲位,一直等到总线空闲为止。
        当产生开始条件后,可能产生其它结果,导致CPU延迟或者放弃传输:

使用特权

评论回复
5
波越| | 2015-7-26 19:56 | 只看该作者
顶一下,I2C主要是先把协议看懂,这个很重要

使用特权

评论回复
6
huihui520| | 2015-7-26 19:58 | 只看该作者
主模式和从模式的区别,要看仔细了

使用特权

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

本版积分规则

40

主题

283

帖子

0

粉丝