OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5365|回复: 0

STM32F429 HAL库调试DCMI注意事项

[复制链接]

58

主题

288

帖子

1

精华

高级会员

Rank: 4

积分
814
金钱
814
注册时间
2012-3-29
在线时间
81 小时
发表于 2017-6-20 22:25:58 | 显示全部楼层 |阅读模式
         这两天用阿波罗F429调OV5640摄像头搞的都快抑郁了,看了几遍手册上DMA、DCMI的部分,可以读出摄像头的ID但是RGB屏上没有图像,而且感觉我自己改的和原子的例程没有对多大的区别,没办法只能用Jlink一步一步调试然后对照手册看DCMI寄存器的设置对不对,后来发现没有使能DCMI,调函数__HAL_DCMI_ENABLE(&DCMI_Handler); 使能后就可以了。         我记得调用函数HAL_XXX_Init();对外设进行初始化的时候,初始化函数中自动会使能外设。追踪DCMI的初始化函数中确实没有对DCMI进行使能,但是我发现原子例程中的官方库的初始化函数中对DCMI进行使能了,原子例程的HAL库版本是V1.4.2的,我的库版本是V1.5.1的,新的库中DCMI初始化部分应该是没有对DCMI进行使能,使用其他函数的时候应该也goto进去看一下。

        我的天啊,到这你以为就完了吗?你错了。图像是有了,但是图像不是整屏刷新的,而是图像从屏底部开始向上移动到顶部的。调试了下发现DCMI没有进帧中断函数,看了HAL中DMCI的初始化函数,初始化中对行中断、帧同步中断、错误中断进行了使能,但是没有对帧中断进行使能,但是例程中V1.4.1库中初始化函数是对帧进行了使能中断的。V1.5.1的库需要手动使能帧中断。
         因为DMA是一行一行对RGB屏进行填充的,所以在帧中断需要对DMA2D的行变量curllne清零使下一帧的显示从RGB屏的第一行开始,DMA中断(行中断)的回调函数中也需要判断当前行curline是否大于屏的高度,如果大于清零(不清也可以问题不大)。
         调试过程中如果遇到问题一定要借助调试工具,这样就可以比较快速的找出问题至少能找到思路。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 16:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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