天嵌 ARM开发社区

 找回密码
 注册
查看: 6407|回复: 8

tq2440中OV9650摄像头与LCD之间的数据联系

[复制链接]
夏雨 发表于 2013-4-16 00:44:50 | 显示全部楼层 |阅读模式
本帖最后由 夏雨 于 2013-4-24 20:51 编辑

请问OV9650摄像头取得的图像是如何在LCD屏上显示的?我在camif.c文件中第17行发现一句:extern unsigned short LCD_BUFFER[SCR_YSIZE_TFT][SCR_XSIZE_TFT];
我觉得也只有LCD_BUFFER能在摄像头和LCD屏之间建立联系,搜了一下:

感觉能建立摄像头和LCD屏之间联系的,只有在258行到271行之间:
if (CAM_PVIEW_4PP) // codec view mode
        {
                rCIPRCLRSA1=PrFrameBuffer;
                rCIPRCLRSA2=rCIPRCLRSA1+PrDstWidth*PrDstHeight*multiplier;
                rCIPRCLRSA3=rCIPRCLRSA2+PrDstWidth*PrDstHeight*multiplier;
                rCIPRCLRSA4=rCIPRCLRSA3+PrDstWidth*PrDstHeight*multiplier;
        }        
        else // direct preview mode
        {
                rCIPRCLRSA1 = (U32)LCD_BUFFER;
                rCIPRCLRSA2 = (U32)LCD_BUFFER;
                rCIPRCLRSA3 = (U32)LCD_BUFFER;
                rCIPRCLRSA4 = (U32)LCD_BUFFER;
        }        

这里因为#define CAM_PVIEW_4PP                (0),所以rCIPRCLRSA1 = (U32)LCD_BUFFER;起作用。
                                                                               rCIPRCLRSA2 = (U32)LCD_BUFFER;
                                                                               rCIPRCLRSA3 = (U32)LCD_BUFFER;
                                                                               rCIPRCLRSA4 = (U32)LCD_BUFFER;

CIPRCLRSA1:编码DMA 的RGB 第一帧开始地址
CIPRCLRSA2:编码DMA 的RGB 第二帧开始地址
。。。。。。
rCIPRCLRSA1 = (U32)LCD_BUFFER;LCD_BUFFER是数组,也就是一个地址,将LCDBUFFER的地址赋给编码DMA 的RGB 第一帧开始地址。那为什么不可以(U32)LCD_BUFFER=rCIPRCLRSA1?即将DMA 的RGB 第一帧开始地址赋给LCDBUFFER的地址?
还有,LCD_BUFF获得帧数据后,又通过什么操作,将图像显示在屏幕上的?没找到相关程序,是硬件自动的吗?
求大神不吝赐教,十分感谢!






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 夏雨 发表于 2013-4-16 00:53:43 | 显示全部楼层
不知道自己感觉的对不对,想将在LCD上显示的图像保存到SD卡中。打算截取摄像头和LCD屏之间的数据(合计它们之间一定是通过数组传递数据的),然后直接以RGB的格式存到sd卡中。到现在还是感觉联系它们的数组应该是LCD_BUFFER。最初以为是通过Paint_Bmp函数将LCD_BUFFER写到LCD上的。结果发现不是。不知道自己思路哪里有问题,求大神前辈指点,谢谢!
回复

使用道具 举报

TQ-ZQL 发表于 2013-4-16 08:48:59 | 显示全部楼层
本帖最后由 TQ-ZQL 于 2013-4-16 08:49 编辑

        else // direct preview mode
        {
                rCIPRCLRSA1 = (U32)LCD_BUFFER;
                rCIPRCLRSA2 = (U32)LCD_BUFFER;
                rCIPRCLRSA3 = (U32)LCD_BUFFER;
                rCIPRCLRSA4 = (U32)LCD_BUFFER;
        }   
这不是很明显了将摄像头数据直接放到显存中了吗?摄像头数据会通过dma放到rCIPRCLRSAx指定的地址中
回复

使用道具 举报

 楼主| 夏雨 发表于 2013-4-16 09:31:10 | 显示全部楼层
TQ-ZQL 发表于 2013-4-16 08:48
else // direct preview mode
        {
                rCIPRCLRSA1 = (U32)LCD_BUFFER;

谢谢,  那这样 (U32)LCD_BUFFER=rCIPRCLRSA1 ;行不?
还有,将数据写入显存,之后做了什么才能显示到LCD上?
回复

使用道具 举报

 楼主| 夏雨 发表于 2013-4-16 10:39:41 | 显示全部楼层
自己顶
回复

使用道具 举报

 楼主| 夏雨 发表于 2013-4-16 12:58:32 | 显示全部楼层
自己顶
回复

使用道具 举报

TQ-ZQL 发表于 2013-4-16 13:57:01 | 显示全部楼层
(U32)LCD_BUFFER=rCIPRCLRSA1.这个很明显是不行的。
数据写入显存它显变显示了。什么的都不用做。
回复

使用道具 举报

 楼主| 夏雨 发表于 2013-4-16 14:10:58 | 显示全部楼层
TQ-ZQL 发表于 2013-4-16 13:57
(U32)LCD_BUFFER=rCIPRCLRSA1.这个很明显是不行的。
数据写入显存它显变显示了。什么的都不用做。

谢谢谢谢,太感谢了。祝天天好心情。
回复

使用道具 举报

mugeryang 发表于 2015-6-19 18:18:55 | 显示全部楼层
也在学这个,要多交流才好
回复

使用道具 举报

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-19 11:17 , Processed in 2.055639 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表