news 2026/8/30 15:20:51

ZYNQ学习笔记3-ZYNQ的IIC控制器1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ZYNQ学习笔记3-ZYNQ的IIC控制器1

一、总体介绍

ZYNQ的I2C模块是一款总线控制器,可在多主设备设计中作为主设备或从设备使用。它支持极宽的时钟频率范围,从DC(近乎)0 Hz 直至 400 Kb/s

主设备模式下,只有处理器将从设备地址写入I2C地址寄存器后,才能启动一次传输。处理器通过数据中断传输完成中断获知任何可用的接收数据。若HOLD位置1,则I2C接口在数据发送完成后将SCL线拉低,以支持处理器的慢速服务。主设备可编程为使用普通(7位)寻址模式扩展(10位)寻址模式。

从设备监视模式下,I2C接口被配置为主设备,并持续尝试向特定从设备发起传输,直到该从设备以ACK响应为止。HOLD位可被置1,以防止主设备继续传输,从而避免从设备发生溢出状况。

主设备模式和从设备模式的一个共同特性是超时(TO)中断标志。如果在任何时候,SCL线被主设备或被访问的从设备拉低的时间超过超时寄存器中指定的周期,则会产生超时(TO)中断,以避免停滞状态的发生。

ZYNQ的I2C模块系统模块图如下图所示,由图可见ZYNQ的IIC控制器IRQ中断ID分别是57,80,通过APB和内部互联模块通信,作为从接口。可通过MIO和芯片外部通信,也可以通过EMIO和PL通信,用EMIO的话会有SCL,SDA,SCL-T三个信号。

二、主模式:

I2C传输只能由APB主机发起,可执行两种类型的传输:

-写传输:I2C成为主设备发送器

-读传输:I2C成为主设备接收器

2.1、写传输

要完成一次I2C写传输,主机必须执行以下步骤:

1. 写入控制寄存器,以设置SCL速度寻址模式

2. 在控制寄存器中设置MS、ACKENCLR_FIFO位,并清零RW位

3. 如果需要,设置HOLD位;否则,将第一个数据字节写入I2C数据寄存器。

4. 将从设备地址写入I2C地址寄存器。这将启动I2C传输。

5. 继续通过向I2C数据寄存器写入数据,将剩余待发送数据发送给从设备。每次主机向I2C数据寄存器写入时,数据都会被推入FIFO。

当所有数据成功传输完毕后,中断状态寄存器中的COMP位被置位。当FIFO中只剩下两个字节待发送时,会产生数据中断

当所有数据成功传输后,如果HOLD位未置位,I2C接口会生成STOP条件并终止传输。如果HOLD位置位,则在数据发送完成后I2C接口将SCL线拉低。主机通过传输完成中断(COMP位置位)获知此事件,同时状态寄存器中的TXDV位被清零。此时,主机可按以下三种方式继续操作:

1.清零HOLD位。这将使I2C接口生成STOP条件。

2. 通过向I2C地址寄存器写入数据来提供更多数据。这将使I2C接口继续传输,向从设备写入更多数据。

如果在任何时候从设备以NACK响应,传输将自动终止,并产生传输NACK中断(NACK位置位)。当接收到NACK时,传输大小寄存器指示仍需发送的字节数减一。除非主机写入FIFO的最后一个字节是NACK字节,否则TXDV保持高电平。此时,主机必须通过设置控制寄存器中的CLR_FIFO位来清除FIFO。

如果在任何时候,SCL线被主设备或被访问的从设备拉低的时间超过超时寄存器中指定的周期,则会产生超时中断,并且可以从传输大小寄存器中读取未完成的数据量减一。

2.2、读传输

要完成一次I2C读传输,主机必须执行以下步骤:

1. 写入控制寄存器,以设置SCL速度寻址模式。

2. 在控制寄存器中设置MS、ACKEN、CLR_FIFO位以及RW位

3. 如果主机希望在接收数据后保持总线,还必须设置HOLD位。

4. 在传输大小寄存器中写入请求的字节数

5. 将从设备地址写入I2C地址寄存器。这将启动I2C传输

主机通过两种方式获知任何可用的接收数据:

1. 如果未完成的传输字节数大于或等于FIFO大小减2,则当FIFO中有两个空闲位置可用时,会产生数据中断(DATA位置位)。

2. 如果未完成的传输字节数小于FIFO大小减2,则当接收到未完成的传输字节数后,会产生传输完成中断(COMP位置位)。

在这两种情况下,状态寄存器中的RXDV位均被置位。

I2C接口在接收到最后一个预期字节后自动返回NACK,并通过生成STOP条件终止传输。如果在主设备读传输期间HOLD位置位,则I2C接口将SCL线拉低。

如果在主设备发送从设备地址进行主设备读传输时,从设备以NACK响应,则传输自动终止,并产生传输NACK中断(NACK位置位)。未完成的数据量可以从传输大小寄存器中读取。

如果在任何时候,SCL线被主设备或被访问的从设备拉低的时间超过超时寄存器中指定的周期,则会产生超时中断

从设备模式

通过清零控制寄存器中的MS位,可将I2C接口设置为从设备。I2C从设备必须通过向I2C地址寄存器写入一个唯一的标识地址。SCL速度也至少需要设置为预期看到的最高SCL频率。在从设备模式下,I2C接口作为从设备发送器或从设备接收器工作。

从设备发送器

从设备在识别到主设备发送的完整从设备地址,并且最后发送的地址字节中的R/W位为高时,成为发送器。这意味着从设备已被请求在I2C总线上发送数据,主机通过向GIC发送中断来获知此事件。同时,SCL线被拉低,以便在I2C主设备开始采样SDA线之前,主机能够向I2C从设备提供数据。主机通过DATA中断标志置位来获知此事件。

主机必须通过I2C数据寄存器提供待发送的数据,以便释放SCL线并继续传输。如果主机在超时期限到期前未写入I2C数据寄存器,则会产生中断,并置位TO中断标志。

在主机写入I2C数据寄存器后,传输继续,在传输进行过程中数据被加载到FIFO中。加载到FIFO中的数据量可能是已知的系统参数,或通过使用I2C总线的更高级协议预先通信得知。

当FIFO中只剩下两个有效字节待发送时,会产生中断,并置位DATA中断标志。如果I2C主设备在FIFO发送的最后一个字节上返回NACK,则会产生中断,并且一旦I2C主设备生成STOP条件,COMP中断标志即被置位。

如果主设备对FIFO发出的最后一个字节进行应答,则传输必须继续。此时,DATA中断标志被置位。状态寄存器中的TXDV标志被清零,因为FIFO为空。如果I2C主设备在从设备发送完FIFO中的所有数据之前终止传输,则主机将收到通知,NACK中断标志被置位,同时TXDV保持置位,传输大小寄存器指示FIFO中剩余的字节数。主机必须设置控制寄存器中的CLR_FIFO位,以清除FIFOTXDV位。

从设备接收器

从设备在识别到主设备发送的完整从设备地址,并且第一个地址字节中的R/W位为低时,成为接收器。这意味着主设备即将通过I2C总线向从设备发送一个或多个数据字节。

在I2C从设备应答一个字节后,状态寄存器中的RXDV位被置位,指示已接收到新数据。主机通过I2C数据寄存器读取接收到的数据。当FIFO中只剩下两个空闲位置时,会产生中断,并置位DATA中断标志。

每当I2C主设备生成STOP条件时,会产生中断,并置位COMP中断标志。此时,传输大小寄存器中包含FIFO中可用的已接收字节数。主机每次读取I2C数据寄存器时,该数字会递减。

如果I2C接口接收到一个或多个字节时FIFO已满,则会产生中断,并置位RX_OVF中断标志。最后一个接收到的字节不会被应答,FIFO中的数据保持不变

当无法在合理时间内响应中断时,可通过设置控制寄存器中的HOLD位来避免溢出状况。如果HOLD置1,则I2C接口将SCL线保持为,直到主机清空数据接收资源。这可以防止主设备继续传输,从而避免从设备发生溢出状况。主机通过读取数据寄存器来清空数据接收资源。

如果HOLD位置1且I2C接口将SCL线保持为低的时间超过超时周期,则会产生中断,并置位TO中断标志。

I2C速度

在从设备模式下,时钟使能用于提取同步信息,以便正确采样SDA线。

在主设备模式下,时钟使能用于建立时间基准,以产生所需的SCL频率

标准模式和高速模式下SCL时钟值的计算方式:

SCL时钟 = CPU_1X时钟 / (22 × (divisor_a + 1) × (divisor_b + 1))

标准或高速SCL时钟计算值如下表:

多主机模式

在I2C多主设备模式下,总线与其他主设备共享。在此模式下,I2C时钟(I2C_SCL)由充当主设备的器件驱动。

I2C0与I2C1的互相连接

当`slcr.MIO_LOOPBACK[I2C0_LOOP_I2C1]`位被置1时,PS中两个I2C控制器的I/O信号会连接在一起。在此模式下,串行时钟信号相互连接,串行数据信号也相互连接。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 15:14:31

从省赛冠军到工程落地:算法竞赛的系统化备赛指南

“安徽省冠,再见安大。”这句话乍看很像朋友圈的毕业感言,但在算法竞赛圈里,它有另一层分量。当过安徽省赛冠军,又在安徽大学结束竞赛生涯的人,才会用这样一句简短的话收尾。这里的“再见安大”,不只是告别…

作者头像 李华
网站建设 2026/8/30 15:13:15

安全 Headers 安全加固实战:配置、检测与影响评估

安全 Headers 安全加固实战:配置、检测与影响评估工具地址:https://www.speedce.com 社区论坛:https://bbs.speedce.com 联系:speedceadsgmail.com写在前面 围绕「安全 Headers」,本文提供可落地的技术指南&#xff0c…

作者头像 李华
网站建设 2026/8/30 15:13:06

生成模型的计算保证与统计保证:从Rectified flow到c-Rectified flow

开头可以先从一个现象说起:近两年生成模型论文的标题里,越来越多地出现“Guarantees”这个词。你看到“Computational and Statistical Guarantees of the c-Rectified flow”这个标题时,如果第一反应是“这又是个采样式加速的改进版”&#…

作者头像 李华
网站建设 2026/8/30 15:11:29

企业智能体的最小方案范围切分

企业智能体的最小方案范围切分企业智能体的第一版不需要覆盖整个部门。更合适的起点,是为一个明确角色解决一项高频、边界清楚的工作:例如把工单整理为待审草稿,或从已授权资料中提取固定字段。范围越具体,团队越能定义输入、权限…

作者头像 李华
网站建设 2026/8/30 15:11:06

TVA-World生成式具身智能:概念、原理、应用(6)

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”或“TVA视觉智能体”)是依托Transformer架构与“因式智能体”理论构建的通用视觉技术体系。它有机融合深度强化学习(DRL)、卷积…

作者头像 李华