3307|11

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

[国民技术N32WB452测评]四.LCD显示DVP采集图像 [复制链接]

 
  本帖最后由 Eurasia32 于 2022-8-7 14:59 编辑

在上次评测中实现了通过DVP接口驱动GC0308摄像头进行图像采集的功能,本次测评将实现将采集图像显示至LCD显示屏。

  1. 实现LCD显示屏驱动
    1. 本次测评使用的LCD显示屏为合宙的1.8寸 TFT LCD,分辨率128*160,驱动芯片为ST7735。

    2. 在官方提供SDK中 \BLE\devBoardDemo项目下提供了LCD屏幕的驱动,复制相关所需文件至对应项目中即可实现LCD驱动,其中lcd_dev.c文件包含相关寄存器配置,注意注释掉下图所示行

      LCD_SendCommand(0x21);

      该寄存器控制LCD屏幕颜色反演,若不注释可能造成显示颜色出错,同时注意修改lcd_drv.h头文件中对于现实区域大小的设置,即

      #define LCD_HEIGHT 128
      #define LCD_WIDTH  160
      #define LCD_WIDTH_Byte 160

      修改为本次所对应的128、160以及160。

    3. 实现图像显示的函数为void LCD_Display(uint16_t* Image),该函数功能为将内存中的16位无符号整形数组显示至LCD上,符合通过DMA直接传输图像的要求。

  2. 实现GC0308摄像头驱动
    1. 在官方提供SDK中\DVP\Camera项目下提供了摄像头相关驱动,其中gc0308.c文件设置相关寄存器以及接口初始化,dvp_demo.c文件则设置数据引脚初始化以及DVP,DMA的配置,在dvp_demo.h头文件中设置了输出图像的格式以及大小:

      #define DVP_IMAGE_FORMAT            (DVP_IMAGE_FORMAT_RGB565)
      //#define DVP_IMAGE_FORMAT            (DVP_IMAGE_FORMAT_GRAY)
      
      #define DVP_IMAGE_PIXEL_SIZE        (DVP_IMAGE_FORMAT)
      
      #if (DVP_IMAGE_FORMAT == DVP_IMAGE_FORMAT_GRAY)
          #define DVP_IMAGE_WIDTH             ((uint16_t)320)
          #define DVP_IMAGE_HEIGHT            ((uint16_t)240)
      	//#define DVP_IMAGE_WIDTH             ((uint16_t)160)
          //#define DVP_IMAGE_HEIGHT            ((uint16_t)128)
      #else
          //#define DVP_IMAGE_WIDTH             ((uint16_t)274)
          //#define DVP_IMAGE_HEIGHT            ((uint16_t)206)
      	#define DVP_IMAGE_WIDTH             ((uint16_t)160)
          #define DVP_IMAGE_HEIGHT            ((uint16_t)128)
      #endif

       

  3. 通过DMA将采集图像传输至LCD
    1. 在dvp_demo.c文件中定义了

      uint32_t DVP_Image[DVP_IMAGE_BUFF_SIZE] = {0};

      常量用于存储相关图像,将其以外部全局变量形式添加至main.c文件中,在DVPDemo_Caputure()函数后直接使用LCD_Display()输出DVP_Image即可实现图像传输。

  4. 最终效果
    IMG_0942

     
  5. 总结
    1.    图像显示帧率较为理想,不足之处在于屏幕在扫描时会出现红色条纹,起初我以为是显示屏BGR模式和RGB模式未设置好造成的,但向0x36寄存器中写入的值由0x60(RGB)变为0x68(BGR)后扫描时红线变为蓝线,说明并非颜色显示模式的问题,现在对这个问题暂时没有头绪,一个可能的方向是LCD与开发板之间连接未使用排线造成的信号干扰,若有遇到相同问题或有解决思路的欢迎来讨论。
    2. 其次,显示图像质量较差,主要原因可能是GC0308摄像头只有30W像素,换用OV2640等摄像头后情况可能会改善。
  6. 代码

        

Cam_test.rar

5.09 MB, 下载次数: 28

最新回复

有朋友验证上面代码么,感觉不点不对  详情 回复 发表于 2024-10-16 18:21
点赞 关注
 
 

回复
举报

7044

帖子

11

TA的资源

版主

沙发
 
显示图像质量较差,主要原因可能是GC0308摄像头只有30W像素。可不可设置分辨率,然后就会清晰一些。

点评

是指摄像头的分辨率还是屏幕的分辨率?我比较小白😂  详情 回复 发表于 2022-8-7 21:58
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
lugl4313820 发表于 2022-8-7 21:18 显示图像质量较差,主要原因可能是GC0308摄像头只有30W像素。可不可设置分辨率,然后就会清晰一些。

是指摄像头的分辨率还是屏幕的分辨率?我比较小白😂

 
 
 

回复

7044

帖子

11

TA的资源

版主

4
 

我看了一下你的LCD屏本身的显示的像数就比较大,显得图像不是很好,可以换一下其他的屏试一下。你所设置的分辨率为128*160 = 20,480,好象才2万像数,才不到1/15,这个摄像头可以达到640*480 30fps。

点评

根据您的建议,我在没有换lcd屏幕的前提下试着改了一下gc0308的图像窗口设置,原先设置为windowing vga格式输出,即640X480,同时subsample设置4/7缩放,修改为qqvga格式输出,即160X120,然后将subsample设置为不缩  详情 回复 发表于 2022-8-8 03:19
好的,感谢回复,过一阵我换个大点的屏幕试试😂  详情 回复 发表于 2022-8-8 01:41
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

5
 
lugl4313820 发表于 2022-8-8 01:33 我看了一下你的LCD屏本身的显示的像数就比较大,显得图像不是很好,可以换一下其他的屏试一下。你所设置的 ...

好的,感谢回复,过一阵我换个大点的屏幕试试😂

 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

6
 
lugl4313820 发表于 2022-8-8 01:33 我看了一下你的LCD屏本身的显示的像数就比较大,显得图像不是很好,可以换一下其他的屏试一下。你所设置的 ...

根据您的建议,我在没有换lcd屏幕的前提下试着改了一下gc0308的图像窗口设置,原先设置为windowing vga格式输出,即640X480,同时subsample设置4/7缩放,修改为qqvga格式输出,即160X120,然后将subsample设置为不缩放,显示图像质量确实有一定改善。

 
 
 

回复

9795

帖子

24

TA的资源

版主

7
 

扫描红线有没有可能是VSYNC 或者HSYNC电平设置造成的?

点评

vsync和hsync相关寄存器配置我是沿用的例程,相关说明在gc0308手册上比较少,调整不是非常方便😂  详情 回复 发表于 2022-8-8 13:38
 
 
 

回复

6533

帖子

9

TA的资源

版主

8
 

相当可以了,不过曝光是不是有点高啊

点评

vga输出的时候帧数最大是30fps,原先帧数设置为16.67fps,我调到qqvga输出以后采用了100fps的输出,曝光时间应该是原先1/6,拍摄灯光等较明亮物体时有一定改善  详情 回复 发表于 2022-8-8 13:36
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

9
 
秦天qintian0303 发表于 2022-8-8 09:28 相当可以了,不过曝光是不是有点高啊

vga输出的时候帧数最大是30fps,原先帧数设置为16.67fps,我调到qqvga输出以后采用了100fps的输出,曝光时间应该是原先1/6,拍摄灯光等较明亮物体时有一定改善

 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

10
 
littleshrimp 发表于 2022-8-8 07:28 扫描红线有没有可能是VSYNC 或者HSYNC电平设置造成的?

vsync和hsync相关寄存器配置我是沿用的例程,相关说明在gc0308手册上比较少,调整不是非常方便😂

 
 
 

回复

419

帖子

0

TA的资源

纯净的硅(中级)

11
 

很不错了,感谢楼主,收藏收藏下来慢慢研究,加油!!!

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

12
 
有朋友验证上面代码么,感觉不点不对
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表