1. 从零开始:为什么要在ZYNQ PS端用I2C驱动OV5640?
如果你正在玩ZYNQ,想给这个强大的“大脑”加上“眼睛”,那么OV5640这颗500万像素的摄像头传感器绝对是个热门选择。它体积小、功耗低,图像质量也相当不错,非常适合嵌入式视觉应用。但很多朋友一上手就懵了:硬件怎么连?软件怎么配?那一长串的寄存器配置代码看着就头大。
别担心,今天我就来带你完整走一遍这个流程。咱们不搞那些云里雾里的理论,就讲最实在的步骤和踩过的坑。简单来说,我们要做的就是在ZYNQ的PS(Processing System,也就是ARM Cortex-A9核心)部分,通过I2C总线去配置OV5640,让它能正常工作并输出图像数据。为什么用PS的I2C,而不是用PL(可编程逻辑)部分去模拟?原因很简单:省事、稳定。PS端的I2C控制器是硬件实现的,有成熟的Linux驱动支持,我们只需要在设备树里配好,在用户空间写个应用程序去读写寄存器就行,不用自己去折腾时序,稳定性也高得多。
这个过程就像给你的电脑接上一个USB摄像头,只不过在嵌入式世界里,“USB接口”换成了I2C总线,“驱动安装”变成了设备树配置和寄存器编程。目标很明确:在Linux系统启动后,我们能通过一个自己写的C程序,打开/dev/i2c-0这样的设备文件,然后像聊天一样,用I2C协议告诉OV5640:“嘿,请用640x480的分辨率、YUV422格式、30帧每秒给我吐数据。” 听起来是不是没那么可怕了?接下来,我们就从硬件连线开始,一步步实现它。
2. 硬件配置:Vivado里如何搭建桥梁?
硬件是基础,配置错了后面全是白搭。首先,你得确保你的ZYNQ开发板(比如ZYNQ-7000系列)和OV5640模块已经正确连接。通常,OV5640模块会引出几个关键接口:电源、I2C(SDA, SCL)、像素时钟(PCLK)、行场同步信号(HREF, VSYNC)以及8位或10位的数据总线。今天我们先聚焦在I2C配置上,这是让摄像头“听话”的第一步。
打开Vivado,创建一个新工程,选择你的具体器件型号(例如xc7z035ffg676-2)。然后,我们要创建一个Block Design。这是Vivado图形化设计的核心,你可以像搭积木一样把IP核连起来。
- 添加ZYNQ Processing System IP:在Diagram视图里,点击“+”号,搜索并添加“ZYNQ7 Processing System”。双击添加进来的IP核,进行配置。这里有个关键点:我们需要启用PS端的I2C控制器。
- 启用I2C外设:在ZYNQ配置界面,切换到“Peripheral I/O Pins”选项卡。找到“I2C 0”和“I2C 1”(根据你的需要,通常用一个就够了),把它们勾选上。Vivado会自动将对应的引脚(比如MIO 14和MIO 15)分配给I2C0。记下你使用的I2C控制器编号,后面设备树会用到。
- 配置时钟和复位:确保PS-PL时钟配置正确,特别是FCLK_CLK0,它常作为其他PL逻辑的时钟源。不过对于纯PS的I2C操作,这部分不是必须的,但保持一个基本的时钟配置是好习惯。
- 完成连接与生成输出:点击“Run Block Automation”,让Vivado自动完成一些基础连接(如时钟、复位)。然后点击“Run Connection Automation”,处理剩余的接口。最终,你的Block Design应该看起来简洁清晰,ZYNQ IP核的
I2C_0端口已经引出。最后,在“Sources”窗口右键点击你的Block Design,选择“Generate Output Products”和“Create HDL Wrapper”。Vivado会生成最终的硬件描述文件。
这一步的核心就是“告诉”ZYNQ芯片:“请把PS内部的那个I2C硬件控制器,通过特定的MIO引脚引出来。” 生成后的最终产物是一个.xsa文件(旧版本是.hdf文件),它打包了所有的硬件配置信息,是我们接下来构建Linux系统的“图纸”。
3. 系统构建:用PetaLinux打造专属Linux
有了硬件描述文件(.xsa),我们就要为这个硬件定制一个Linux操作系统。这里我们使用Xilinx官方推荐的PetaLinux工具。假设你已经在Ubuntu虚拟机上安装好了PetaLinux(例如2018.3版本),并且已经配置好了环境变量。
打开终端,我们一步步来:
# 1. 设置PetaLinux环境
source /opt/pkg/petalinux/2018.3/settings.sh
# 2. 创建一个PetaLinux工程模板,名字叫`zynq_ov5640`
petalinux-create -t project --template zynq -n zynq_ov5640
cd zynq_ov5640
# 3. 将之前Vivado生成的`.xsa`文件拷贝到工程目录下
# 假设你的.xsa文件名为`system.xsa`,将其放在`zynq_ov5640`目录下
# 4. 导入硬件描述,这一步至关重要,PetaLinux会根据硬件信息自动生成基础设备树
petalinux-config --get-hw-description ./
执行petalinux-config --get-hw-description时,会弹出一个配置菜单。对于初次使用,大部分选项可以保持默认。你需要重点关注几个地方:在“Subsystem AUTO Hardware Settings”里,确认导入的硬件信息是否正


551

被折叠的 条评论
为什么被折叠?



