发新帖本帖赏金 3.00元(功能说明)我要提问
返回列表
打印
[STM32F4]

【f446RE开发板试用】教你用HAL库DCMI捕捉OV2640

[复制链接]
楼主: colin2135
手机看帖
扫描二维码
随时随地手机跟帖
21
colin2135|  楼主 | 2016-3-8 10:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
lkdxxq 发表于 2016-3-8 10:05
楼主能加个qq指导下吗?1796480563,楼主好人谢谢。

有什么问题呢?百度云盘上面已经有源码,可以直接参考。

使用特权

评论回复
22
ArthurRen| | 2016-10-4 23:15 | 只看该作者
楼主你好,我想请教一下DCMI的初始化代码里面,你把       
        //DCMI_hdcmi.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;

这一句注释掉了是为什么呢?是不是和用 MCO1,输出16M  XCLK给OV2640 有关呀

使用特权

评论回复
23
colin2135|  楼主 | 2016-10-5 09:34 | 只看该作者
ArthurRen 发表于 2016-10-4 23:15
楼主你好,我想请教一下DCMI的初始化代码里面,你把       

这一句注释掉了是为什么呢?是不是和用 MCO1,输出16 ...

不是的, 这里是DCMI的初始化,跟MCO1没关系。
至于为什么把这一句注释掉,捕捉JPEG只能用硬件同步,所以注释掉了还是使用硬件同步,但为了谨慎,这里不应该加上注释,我当时加上注释可能是手误。

DCMI的同步分成两种,内嵌码和硬件的,在参考手册上面有写,自己去翻看看,在DCMI的章节。


使用特权

评论回复
24
ArthurRen| | 2016-10-5 19:53 | 只看该作者
colin2135 发表于 2016-10-5 09:34
不是的, 这里是DCMI的初始化,跟MCO1没关系。
至于为什么把这一句注释掉,捕捉JPEG只能用硬件同步,所以 ...

好的 谢谢楼主

使用特权

评论回复
25
ArthurRen| | 2016-10-5 21:28 | 只看该作者
本帖最后由 ArthurRen 于 2016-10-5 21:38 编辑

楼主不好意思哈 我还有点问题
我这边用的stm32F426Idiscovery移植的你的程序
  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
                if(Buttons_GetState())
                {
                        HAL_Delay(1);
                        //printf("PHOTOING\r\n");
                        while(Buttons_GetState());        
                        __HAL_DCMI_ENABLE_IT(&hdcmi, DCMI_IT_FRAME);   
                        while(HAL_DCMI_Start_DMA(&hdcmi, DCMI_MODE_SNAPSHOT,(uint32_t)JpegBuffer, pictureBufferLength)!=HAL_OK);
                        //printf("PHOTOING OK\r\n");
                }
                if(getPicture==1)
                {
                        //printf("Start Transmition\r\n");
                        getPicture=0;
                        printf("%s",JpegBuffer);
                }
  }


硬件接线上面应该是没有什么问题的,我用另外的一个STD库的程序能跑起来。

但是我移植楼主你的程序,一直没办法进入
void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)

这个函数。

我对楼主你的程序理解是这样的:
1.接受到拍照的命令
2.开启FRAM中断
3.开启DMCI到DMA的传输
4.接收到图像触发中断开始串口传输图像

使用特权

评论回复
26
colin2135|  楼主 | 2016-10-5 22:22 | 只看该作者
ArthurRen 发表于 2016-10-5 21:28
楼主不好意思哈 我还有点问题
我这边用的stm32F426Idiscovery移植的你的程序

能读到摄像头的ID了吗?

HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi) 这是帧完成中断。

你可以在DCMI中断或者DMA中断回调里面看看哪里出错了,是否进入这两个中断了。多用DEBUG功能找找问题。

使用特权

评论回复
27
ArthurRen| | 2016-10-5 22:51 | 只看该作者
colin2135 发表于 2016-10-5 22:22
能读到摄像头的ID了吗?

HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi) 这是帧完成中断。

摄像头ID可以读到
现在肯定是不能进入DCMI的中断回调函数
DMA中断回掉函数我没找到

使用特权

评论回复
28
zzz电子| | 2016-11-30 14:25 | 只看该作者
真实用,在弄Mbed OS

使用特权

评论回复
29
colin2135|  楼主 | 2016-11-30 14:40 | 只看该作者
zzz电子 发表于 2016-11-30 14:25
真实用,在弄Mbed OS

mbed os有提供camera的API吗?好像没有,需要自己写。

使用特权

评论回复
30
zhanzr21| | 2017-1-18 23:47 | 只看该作者
好, 参考一下, 正在调摄像头

使用特权

评论回复
31
colin2135|  楼主 | 2017-1-19 09:56 | 只看该作者
zhanzr21 发表于 2017-1-18 23:47
好, 参考一下, 正在调摄像头

也是用2640吗

使用特权

评论回复
32
zhanzr21| | 2017-1-19 16:05 | 只看该作者
是啊 也是2640

使用特权

评论回复
33
zhanzr21| | 2017-1-19 18:08 | 只看该作者
还在搞OV7670 为的是比较效果 性能上的差别

使用特权

评论回复
34
zjh2009| | 2017-1-19 21:40 | 只看该作者
这篇讲的不错

使用特权

评论回复
35
码客_Mark| | 2017-6-16 00:38 | 只看该作者
感谢下楼主,关于cubemx和hal库配置dcmi的**实在是太少了,看到这篇很是感动

使用特权

评论回复
36
LyCrystal| | 2017-6-16 09:01 | 只看该作者
谢谢分享,有时间也搞一搞摄像头

使用特权

评论回复
37
电气章陈勇| | 2017-6-23 19:39 | 只看该作者
colin2135 发表于 2015-10-9 15:02
http://pan.baidu.com/s/1gd6lh9x 源代码在网盘里,欢迎下载。

楼主,请问你的源代码中cubemx 怎么配的啊?里面都是空的?能否把完整文件,发我研读一下,必有重谢!!!

使用特权

评论回复
38
电气章陈勇| | 2017-6-23 19:40 | 只看该作者
colin2135 发表于 2015-10-9 15:02
http://pan.baidu.com/s/1gd6lh9x 源代码在网盘里,欢迎下载。

https://bbs.21ic.com/forum.php?mo ... =1156856&page=1

使用特权

评论回复
39
电气章陈勇| | 2017-6-23 19:41 | 只看该作者
楼主,没看到你的cubemx中的配置内容啊?能否把你配置完整的源文件,发我研读一下,万分感谢,必有重谢!

使用特权

评论回复
40
colin2135|  楼主 | 2017-6-25 22:00 | 只看该作者
电气章陈勇 发表于 2017-6-23 19:41
楼主,没看到你的cubemx中的配置内容啊?能否把你配置完整的源文件,发我研读一下,万分感谢,必有重谢! ...

hello,我的cubeMX只是用来生成空的project,然后根据自己要使用的外设再从库里添加文件到工程里面。所以cubeMX配置里面是空的,当然使用CUBEMX直接生成DCMI的初始化代码也是可以的,你可以根据我的代码,再自己去生成。有问题再问吧。

使用特权

评论回复
发新帖 本帖赏金 3.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则