ov5640改为ov7740摄像头

2019-07-20 07:19发布

5640摄像头用的原子哥家的,很方便的就实现了,现在想把摄像头改为7740驱动,也经历了一些困难,有几个问题解决不了,想问问大神,我在5640摄像头实验的基础之上修改7740驱动,sccb应该欧式通用的,我没有去修改,dcmi这里我也没有改,因为需要捕获到的数据还是dma给RGB屏显示,一开始显调试sccb是否能通,按照5640的写法不同,肯定也够呛,因为型号都不一样,后来看了手册,在百度了一下,按照读写地址,去读写测试,最后成功通讯,初始化也ok,但是现在问题是,在调试的时候看,会一直捕捉到帧中断,一直会进入void DCMI_IRQHandler(void)
{
    HAL_DCMI_IRQHandler(&DCMI_Handler);
}
void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
{
        jpeg_data_process();
        LED1_Toggle;
        ov_frame++;
    __HAL_DCMI_ENABLE_IT(&DCMI_Handler,DCMI_IT_FRAME);
}
这两个函数之中,但在屏幕上没有显示,只有进入了DMA的数据流中断函数,才会调用回调函数,才会刷屏,我现在不知道为什么进不去下面这个中断函数,也不能确认我的摄像头是否捕获到有效的数据,因为只有显示在了屏幕上,才能看出来,求助原子哥和大神们解答,感激不尽
void (*dcmi_rx_callback)(void);

void DMA2_Stream1_IRQHandler(void)
{
    if(__HAL_DMA_GET_FLAG(&DMADMCI_Handler,DMA_FLAG_TCIF1_5)!=RESET)
    {
        __HAL_DMA_CLEAR_FLAG(&DMADMCI_Handler,DMA_FLAG_TCIF1_5);
        dcmi_rx_callback();       
    }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
kbq1950361006
1楼-- · 2019-07-20 12:34
经历了一番挫折与煎熬,终于调出来了,然而接下来更是大把的任务去处理,好了,就这样吧,结贴,噢忘记说下心得,7740这个传感器30万像素,只支持输出yuv格式和raw rgb ,然而我用的是rgb屏幕,所以只能把输出转换成rgb565再去显示,信号传递是通过dma,双缓冲到行数组中,在缓冲完将其转换成rgb565即可,这里也是关键,一定要处理的快,否则下个信号过来这个还没转换完事就是丢行,最终导致图像不是你想要的大小,而是被压扁了,所以一定要处理的快才行,或者降低时钟,8M的能明显看出卡帧,12m的没试验没有晶振,现在用16M的,再加上优化函数,勉强处理好,顺便吐槽下,也是因为我自己能力太差,没有找到HAL库的分频时钟函数,我想将PA8输出的时钟分频,然而并未成功没有找到函数,所以只能硬着头皮去优化处理函数,还好解决了,结贴
kbq1950361006
2楼-- · 2019-07-20 17:11
DMA中断进不去啊,DCMI的可以,
kbq1950361006
3楼-- · 2019-07-20 22:59
 精彩回答 2  元偷偷看……
kbq1950361006
4楼-- · 2019-07-21 02:59
 精彩回答 2  元偷偷看……
kbq1950361006
5楼-- · 2019-07-21 06:27
奇怪的是,我用镊子,短接HSYNC,也就是HREF这个引脚,到3.3,就进一下中断,而自己却进不去中断,放图
正点原子
6楼-- · 2019-07-21 10:57
 精彩回答 2  元偷偷看……

一周热门 更多>