金牌会员
 
- 积分
- 2374
- 金钱
- 2374
- 注册时间
- 2017-8-7
- 在线时间
- 207 小时
|
10金钱
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();
}
}
|
最佳答案
查看完整内容[请看2#楼]
经历了一番挫折与煎熬,终于调出来了,然而接下来更是大把的任务去处理,好了,就这样吧,结贴,噢忘记说下心得,7740这个传感器30万像素,只支持输出yuv格式和raw rgb ,然而我用的是rgb屏幕,所以只能把输出转换成rgb565再去显示,信号传递是通过dma,双缓冲到行数组中,在缓冲完将其转换成rgb565即可,这里也是关键,一定要处理的快,否则下个信号过来这个还没转换完事就是丢行,最终导致图像不是你想要的大小,而是被压扁了, ...
|