tb一下 发表于 2022-2-15 14:17:26

【Zynq】OV5640图像采集显示系统的HDMI显示

## 前言

OV5640图像采集显示系统的HDMI显示与RGB_TFT实验所使用的原理一致,都是通过PS侧IIC总线将图像数据传输给SiI9022a芯片,交由该HDMI芯片处理。因此本帖将不会讲述具体原理过程,只对操作步骤进行描述,给读者提供一种参考。

## 硬件逻辑系统设计

ACZ702和ACZ7015开发板上PS侧IIC总线通过MIO50...51引脚与HDMI芯片相连,对应I2C0外设,而在该例程中,I2C0外设被用来初始化摄像头。我们需要将I2C0外设配置为连接HDMI芯片,I2C1外设配置为连接摄像头初始化接口。

!(data/attachment/forum/202204/07/164953pm8szj5srpxxr8m5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "7.png")

接着删除IIC_0残余的信号名,导出IIC_1引脚,将其命名为与修改前一致的信号名,例程中为OV5640_SCCB(这里引脚信号名设置如果不一致,则需要对摄像头初始化相关引脚重新管脚分配并约束)

!(data/attachment/forum/202202/15/150332wk8tf8df66h4x3r8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "8.png")

完成后生成比特流并将比特流和硬件资源描述文件一起导出到SDK

## CPU软件程序设计

原有的SDK工程中有使用到PS_IIC库,因此我们只需将HDMI库加入其中,并添加其头文件路径。随后,在主函数中添加如下语句

```
      PS_IIC_Init(&Iic,IIC_DEVICE_ID,100000);
      SiI9022_Init();
```

此时的主函数如下:

```
int main(void)
{
      PS_IIC_Init(&Iic,IIC_DEVICE_ID,100000);
      SiI9022_Init();
      OV5640_Init();//初始化ov5640

      //video参数的选择
      vd_mode = RGB_LCD;//4.3寸屏,800*480分辨率

      //配置VDMA
      run_vdma_frame_buffer(&vdma, VDMA_ID, vd_mode.width, vd_mode.height,
                                                      frame_buffer_addr,0,0,BOTH);
      //初始化Display controller
      DisplayInitialize(&dispCtrl, DISP_VTC_ID, DYNCLK_BASEADDR);
    //设置VideoMode
      DisplaySetMode(&dispCtrl, &vd_mode);
      DisplayStart(&dispCtrl);

    return 0;
}
```

添加完成后我们还需修改设备ID,在我们提供的OV5640和PS_IIC库中,都是默认使用的PS_IIC_0,我们需要双击打开PS_IIC.h文件,添加对PS_IIC_1的定义,语句如下:

`#define SCCB_DEVICE_ID                        XPAR_XIICPS_1_DEVICE_ID`

随后双击打开OV5640.c文件,将其中PS_IIC_Init()函数的第二项参数修改为SCCB_DEVICE_ID,即将摄像头的初始化接口设置为PS_IIC_1,如下图所示:

!(data/attachment/forum/202204/07/164838oge2ffeg68fttat6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "10.png")

完成后保存修改,连接好硬件,将烧录文件下载到开发板中

## 板级验证效果

手机实物拍摄图:

!(data/attachment/forum/202202/15/165905oz551w5f1d515u15.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "IMG_20220215_163338 (2).jpg")

手机拍摄TFT显示图:

!(data/attachment/forum/202202/15/165924ulsl8sjo48o175dx.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "IMG_20220215_163443 (2).jpg")

手机拍摄HDMI显示图:

!(data/attachment/forum/202202/15/165939eynm47429chf07zq.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "IMG_20220215_163457 (2).jpg")

安_2121238 发表于 2023-4-12 16:51:19

页: [1]
查看完整版本: 【Zynq】OV5640图像采集显示系统的HDMI显示