I2C控制器寄存器基地址MBASE由VHDL代码中常量BASE ADDRESS决定,基地址为地址总线的高16位,低8位地址将决定哪一个寄存器被寻址。此I2C控制器寄存器共有如下4个。 (1)MADR:地址寄存器(地址为MBASE+$8Dh) ■Bit7~Bit1:从设备地址(R/W)。 ■Bit0:保留。 (2)MBCR:控制寄存器(地址为MBASE+$8Fh) ■Bit7:EN(R/W),I2C控制器使能位。“1”使能I2C控制器,0”复位并禁止I2C控制器。在对MBCR其他位操作之前,此位必须被首先设置为“1”。 ■Bit 工业电子中的CoolRunner-Ⅱ I2C控制器是嵌入式系统中常见的一种通信接口,它遵循I2C协议,用于设备间的低速串行通信。I2C控制器寄存器是实现I2C功能的核心组件,它们负责管理和控制I2C总线上的交互。下面我们将详细探讨这些寄存器及其功能。 I2C控制器寄存器的基地址MBASE由VHDL代码中的常量BASE ADDRESS设定,它决定了地址总线的高16位。低8位地址用来决定要访问哪个具体的寄存器。寄存器主要有以下四个: 1. MADR(地址寄存器):位于MBASE+0x8Dh。该寄存器的Bit7~Bit1用于设置从设备地址,这是主设备向从设备发送数据时的寻址部分。Bit0被保留,不用于实际通信。 2. MBCR(控制寄存器):位于MBASE+0x8Fh。此寄存器的各个位具有关键功能: - Bit7: EN (R/W) - I2C控制器使能位。置位“1”启用控制器,清零“0”则复位并禁止控制器。在操作其他位前,需先设置此位为“1”。 - Bit6: IEN (R/W) - 中断允许位。置位“1”允许中断,当状态寄存器的MIF位被置位时,中断发生;清零“0”则禁止中断,但不会清除当前的中断请求。 - Bit5: STA (R/W) - 主/从模式选择位。从“0”变为“1”会在主模式下产生START信号,清除此位会发出STOP,并切换到从模式。但总线仲裁失败时不产生STOP。 - Bit4: TX (R/W) - 发送/接收模式选择位。置位“1”为主设备发送,清零“0”为主设备接收。 - Bit3: AK (R/W) - 发送应答使能位。确定ACK阶段SDA线的值,主从设备都适用。 - Bit2: RSTA (R/W) - 重复开始位。写“1”会产生一个重复开始,读取时始终为“0”。如果总线已被其他设备控制,写入此位会导致总线仲裁失败。 - Bit1~Bit0:保留。 3. MBSR(状态寄存器):位于MBASE+0x93h。该寄存器用于反映I2C通信的状态: - Bit7: MCF (R) - 数据传输完成标志位。在传输完成后由SCL上升沿置位,表示传输结束。 - Bit6: MAAS (R) - 从寻址标志位。地址匹配时,I2C被选为从设备并切换至从模式。 - Bit5: MBB (R) - 总线忙标志位。检测到START时置位,STOP时清零。 - Bit4: MAL (R/软件清除) - 仲裁失败标志位。仲裁失败时被置位,可通过微控制器写入“0”清除。 - Bit3: 保留。 - Bit2: SRW (R) - 从设备读写标志位。反映主设备的读写操作,“1”表示读,“0”表示写。 - Bit1: MIF (R/软件清除) - 中断标志位。当有中断发生时,被置位,并可能触发中断。 - Bit0: RXAK (R) - 接收应答位。反映SDA总线ACK阶段的值,“1”表示无ACK,“0”表示接收到ACK。 4. MBDR(数据I/O寄存器):位于MBASE+0x95h。8位寄存器,用于读取从I2C总线上接收的数据或向总线上发送数据。物理上,该寄存器通常由两个相同地址的寄存器组成,一个用于发送,另一个用于接收,以避免微控制器和I2C控制器之间的竞争。 CoolRunner-Ⅱ I2C控制器的寄存器管理着I2C通信的各个方面,包括设备地址、控制信号、状态反馈以及数据交换。理解和正确使用这些寄存器对于实现高效、可靠的I2C通信至关重要。在设计和调试工业电子系统时,对这些寄存器的深入理解有助于解决可能出现的通信问题。
- 粉丝: 5
- 资源: 903
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助