ZYNQ 嵌入式裸机开发之IIC

1、编写目的

       整理IIC开发流程。本次设计实现使用 PS 端的 I2C 控制来完成对 EEPROM 芯片的读写。由于芯片位于拓展板上,属于 PL 侧资源,因此,我们需要通过 EMIO 将 PS 端的I2C 控制器接口信号路由到 PL。为了确保设计成功完成了对 EEPROM 的读写,我们将向 EEPROM 指定寄存器地址中写入一串自加的数据,并读回比较。通过对比写入和读出数据是否一致来判断读写是否成功,并通过串口, 打印出判断结果。

2、IIC控制器框图

 

 用户通过 APB 总线对 I2C 控制器进行交互;22

3、IIC接口 

 

 I2C 分为软件 I2C 和硬件 I2C:

软件 I2C:软件 I2C 通信指的是通过两个 I/O 端口模拟出来的 I2C,用软件控制管脚状态以模拟 I2C 通信波形,软件模拟寄存器的工作方式。
硬件 I2C:一块硬件电路,硬件 I2C 对应芯片上的 I2C 外设,有相应 I2C 驱动电路,其所使用的 I2C 管脚也是专用的,硬件(固件) I2C 是直接调用内部寄存器进行配置。硬件 I2C 的效率要远高于软件的,而软件 I2C 由于不受管脚限制,接口则比较灵活。

4、IIC通信原理

4.1、主机和从机概念

     主机负责整个系统的任务协调与分配,从机一般是通过接收主机的指令从而完成某些特定的任务,主机和从机之间通过总线连接,进行数据通讯。主机往总线上发送地址,所有的从机都能接收到主机发出的地址,然后每个从机将主机发送的地址与自己的地址比较,如果匹配上,这个从机就会向总线发出一个响应信号。主机收到响应信号后,开始向总线上发送数据。

     I2C 通信原理是通过对 SCL 和 SDA 线高低电平时序的控制,来产生 I2C 总线协议所需要的信号进行数据的传递。在总线空闲状态时, SCL 和 SDA 被上拉电阻拉高,使 SDA 和 SCL 线都保持高电平。 I2C 通信方式为半双工,只有一根SDA 线,同一时间只可以单向通信。
 

5、IIC读写时序

5.1起始信号

当时钟线 SCL 为高电平期间,数据线 SDA 电平由高到低的跳变为起始信号
 

5.2结束信号
 

 当所有数据都发送完成时, 主机将产生一个停止条件。停止条件定义为:在 SDA 置于低电平时,将 SCL 拉高并保持高电平,然后将 SDA 拉高。

 5.3应答信号

 I2C 总线上的所有数据都是以 8 位字节传送的,发送器每发送一个字节,就在第 9 个时钟脉冲期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK 简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收该字节没有成功

5.4数据发送

        在 I2C 总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在 SCL串行时钟的配合下,在SDA 上逐位地串行传送每一位数据。进行数据传送时,在 SCL 呈现高电平期间,SDA上的电平必须保持稳定,低电平为数据 0,高电平为数据 1。只有在 SCL为低电平期间,才允许SDA上的电平改变状态 

5.5IIC写时序

上图为1 字节地址段器件和 2 字节地址段器件单字节写时序图

 上图为为 1 字节地址段器件和 2 字节地址段器件连续多字节写时序图

5.6IIC读时序 

 

 

上图分别为 1 字节地址段器件单字节数据读操作和 2 字节地址段器件单字节数据读操作时序图

 

 上图分别为 1 字节地址段器件和 2 字节地址段器件连续多字节读时序图

6.PS侧软件程序设计

1、在PL搭建硬件系统,生成.hdf文件

2、在SDK中进行软件程序开发

下面重点简述在SDK软件程序开发:

1、查找IIC设备

2、初始化IIC设备

3、设置IIC串行时钟频率

4、将数据写入EEPROM中

5、读取EEPROM数据

6、对比写入读取数据是否相同

7、串口打印结果

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zynq嵌入式系统开发是一种基于Xilinx的Zynq系列SoC(System on Chip)的嵌入式系统开发技术。Zynq SoC是一种将高性能处理器和可编程逻辑集成在一起的异构计算平台,具有强大的处理能力和灵活的可编程性。在Zynq嵌入式系统开发中,可以通过编程FPGA部分来实现硬件加速、接口控制等功能,同时使用处理器部分来运行高级操作系统,实现复杂的控制和计算任务。 为了进行Zynq嵌入式系统开发,首先需要选择适合的开发板和工具链。Xilinx提供了丰富的开发板和软件工具,如ZedBoard、Vivado等。利用这些工具,可以进行FPGA开发、处理器软件开发以及两者之间的协同设计。 在进行Zynq嵌入式系统开发时,主要的工作包括硬件设计、软件开发和系统集成。硬件设计主要涉及FPGA部分的逻辑设计和IP核集成,可以使用HDL语言(如VHDL或Verilog)进行开发。软件开发则主要针对处理器部分,包括裸机编程、内核移植和驱动开发等。系统集成则是将硬件设计和软件开发进行整合,配置处理器和硬件加速逻辑,以及实现通信和数据传输等功能。 在Zynq嵌入式系统开发中,还需要注意一些问题,例如功耗管理、时序约束和调试等。由于Zynq SoC集成了复杂的硬件和软件系统,因此需要充分考虑性能和资源的优化,以确保系统的稳定运行和高效能。此外,在调试过程中可能面临硬件和软件联合调试的挑战,需要借助相应的工具和技术来辅助解决问题。 总体来说,Zynq嵌入式系统开发是一项复杂而具有挑战性的任务,但也具有广泛的应用前景。通过合理的设计和开发流程,可以实现高性能、灵活和可扩展的嵌入式系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值