嵌入式技术论坛
登录
直播中
goodmbby
8年用户
1199经验值
擅长:处理器/DSP
私信
关注
[经验]
ART-PI camera摄像头调试遇到的问题及解决办法
OV2640
DCMI
逻辑分析仪
camera调试笔记
调试遇到的问题
IIC读写没有NAK
原因:摄像头需要mclk, ov2640模组里面自带晶振不需要外部提供, gc0328c需要外部提供,否则不工作。
换有源晶振没有效果
原因:转接板虚焊(接触不良), 第二天换新板子解决。
RST/PWN
ov2640 与 gc0328c的pwn使能信号极性相反,需要做一定处理,pwn主要用来控制摄像头工作状态。
在摄像头上挥动画面有变化,但是出图只有纯色(色块)
原因:DCMI(DVP)与摄像头的 HSYNC与VSYNC没有匹配上,DCMI采图时摄像头并没有输出图像。
一直停留在上一次输出的最后一个点,因为pclk会一直输出,所以采集的图像只有一个点的颜色。
STM32
h7 DCMI配置
sta
ti
c rt_err_t rt_hw_dcmi_init(DCMI_HandleTypeDef *device)
{
RT_ASSERT(device != RT_NULL);
device->Instance = DCMI;
device->Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;
device->Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;
device->Init.VSPolarity = DCMI_VSPOLARITY_LOW; //数据无效时的电平
device->Init.HSPolarity = DCMI_HSPOLARITY_LOW; //数据无效时的电平
device->Init.CaptureRate = DCMI_CR_ALL_FRAME;
device->Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;
device->Init.JPEGMode = DCMI_JPEG_DISABLE;
device->Init.ByteSelectMode = DCMI_BSM_ALL;
device->Init.ByteSelectStart = DCMI_OEBS_ODD;
device->Init.LineSelectMode = DCMI_LSM_ALL;
device->Init.LineSelectStart = DCMI_OELS_ODD;
if (HAL_DCMI_Init(device) != HAL_OK)
{
LOG_E("dcmi init error!");
return RT_ERROR;
}
DCMI->IER = 0x0;
__HAL_DCMI_ENABLE_IT(device, DCMI_IT_FRAME);
__HAL_DCMI_ENABLE(device);
return RT_EOK;
}
ov2640正常出图逻辑分析仪时序图
gc0328c出现色块画面逻辑分析仪时序图
解决办法通过调整gc0328c寄存器将 HSYNC与 VSYNC 数据有效电平,与stm32h7 dcmi配置一致。
出图能看到运动的轮廓,但是颜色不对
原因:gc0328c输出rgb565时,大小端与主控的不匹配,通过修改摄像头寄存器翻转字节序后解决。
注意事项
摄像头需要MCLK,常用的是24M, 没有MCLK会不工作。
摄像头输出帧率由VSYNC控制,HSYNC与PCLK控制画面的长宽
PCLK一般是固定频率,会一直输出,不内部分频的情况下,跟MCLK一样,但是PCLK由摄像头输出给主控。
一般的摄像头不支持jpeg压缩输出,比如GC0328c,只能输出yuv或者RGB565格式。
stm32H7使用sdram作为DCMI缓冲区时,获取完一帧数据显示到lcd画面会撕裂,原因是sdram速度慢没有内部sram快。
原作者:
小鳄鱼
回帖
(2)
jf_46824434
2022-7-15 12:53:58
请教一下为什么用sdram接受dcmi传过来的数据,再显示到lcd会出现画面撕裂?
不是接收完一帧数据就会暂停dma,然后再读取呢?这样下一帧的数据和上一帧也不会串到一起呀?
请教一下为什么用sdram接受dcmi传过来的数据,再显示到lcd会出现画面撕裂?
不是接收完一帧数据就会暂停dma,然后再读取呢?这样下一帧的数据和上一帧也不会串到一起呀?
举报
jf_46824434
2022-7-15 12:54:21
请教一下为什么用sdram接受dcmi传过来的数据,再显示到lcd会出现画面撕裂?
不是接收完一帧数据就会暂停dma,然后再读取呢?这样下一帧的数据和上一帧也不会串到一起呀?
请教一下为什么用sdram接受dcmi传过来的数据,再显示到lcd会出现画面撕裂?
不是接收完一帧数据就会暂停dma,然后再读取呢?这样下一帧的数据和上一帧也不会串到一起呀?
举报
更多回帖
rotate(-90deg);
回复
相关帖子
OV2640
DCMI
逻辑分析仪
在
ART-Pi
Smart上对
摄像头
采集的数据进行车标识别
914
Art-Pi
学习笔记9:如何为
Art-pi
的内部flash设置读保护
0
ART-PI
使用软件模拟RTC的步骤
872
camera
(
摄像头
)验证与测试项目
61
ART-PI
FDCAN使用流程
426
ART-PI
FDCAN使用方法
3030
RT-AK及
Art-Pi
简介
3595
Raven
Pi
安全
摄像头
开源分享
0
ART-PI
重力感应无线智能小车第一弹——
ART-PI
扩展板设计
1
ART-Pi
Smart
调试
物理地址的驱动实现
1039
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分