文章目录
1.I2C
I2C(Inter-Integrated Circuit)总线是一种由飞利浦(现恩智浦半导体)开发的简单、双向二线制同步串行总线,用于连接微控制器及其外围设备。I2C总线仅需要两根线(SDA和SCL)即可实现数据的传输,因此在嵌入式系统中得到了广泛的应用。
1.1ZYNQ PS 侧 I2C 控制器系统框图
如图,展示了I2C控制器在Zynq处理系统中的位置和与其他组件的关系。
- IRQ ID# [57, 80]: 表示I2C控制器产生的中断请求ID号,这些中断可以通知CPU有关I2C操作的完成或其他重要事件。
- Slave port: 这是I2C控制器的一个接口,允许其他设备将其视为从设备,并通过I2C总线与之通信。
- Interconnect: 这是一个内部互连线,用于连接不同的IP块,如I2C控制器和其他系统组件。
- I2C(0, 1) CPU1x reset: 这些是I2C控制器的复位信号,用于初始化或重置I2C控制器。
- I2C(0, 1) CPU_1x clock: 这些是提供给I2C控制器的时钟信号,决定了I2C总线的速度和定时。
- I2C Controllers: 这是I2C控制器的核心部分,负责管理和执行I2C通信协议。
- Control Registers: 这些寄存器用于配置和控制I2C控制器的行为,例如选择要通信的从设备地址、设置通信速率等。
- Clocking: 这个模块为I2C控制器提供了必要的时钟信号,以确保正确的时序和通信速度。
- MIO – EMIO Routing: 这一部分显示了如何将I2C控制器的SCL和SDA线路由到Zynq的物理引脚上。MIO(Multiplexed Input/Output)用于将I2C信号路由到PS引脚,而EMIO(Extended Multiplexed Input/Output)则用于将I2C信号路由到PL(Programmable Logic)区域。
- Device Boundary: 这表示I2C控制器与外部设备的接口边界。
- MIO Pins: 这些是Zynq PS侧的物理引脚,用于与外部I2C设备进行通信。
- EMIO: 这是另一个输出选项,可以将I2C信号路由到PL区域,以便在PL中进行进一步的处理或扩展。
- PL: Zynq的可编程逻辑区域,可以通过EMIO接口与I2C控制器进行通信。
通过官方提供的I2C控制器系统框图可以大致了解I2C的框架,对于后面的使用有很大的帮助,例如像IRQ ID# [57, 80]作为I2C的中断号,在使用中断时要打开这个端口、I2C Controllers 控制中断的产生、数据读写进