完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
DCMI配置如下所示:
void DCMI_Init(void) { __HAL_RCC_DCMI_CLK_ENABLE(); DCMI_Handle.Instance = DCMI; DCMI_Handle.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE; DCMI_Handle.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING; DCMI_Handle.Init.VSPolarity = DCMI_VSPOLARITY_LOW; DCMI_Handle.Init.HSPolarity = DCMI_HSPOLARITY_LOW; DCMI_Handle.Init.CaptureRate = DCMI_CR_ALL_FRAME; DCMI_Handle.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; HAL_DCMI_Init( DCMI_Handle); HAL_NVIC_SetPriority(DCMI_IRQn, 5, 0); HAL_NVIC_EnableIRQ(DCMI_IRQn); } DMA配置如下: void OV2640_DMA_Config(uint32_t DMA_Memory0BaseAddr,uint32_t DMA_BufferSize) { __HAL_RCC_DMA2_CLK_ENABLE(); __HAL_LINKDMA( DCMI_Handle, DMA_Handle, DMA_Handle_dcmi); DMA_Handle_dcmi.Instance = DMA2_Stream1; DMA_Handle_dcmi.Init.Channel = DMA_CHANNEL_1; DMA_Handle_dcmi.Init.Direction = DMA_PERIPH_TO_MEMORY; DMA_Handle_dcmi.Init.PeriphInc = DMA_PINC_DISABLE; DMA_Handle_dcmi.Init.MemInc = DMA_MINC_ENABLE; DMA_Handle_dcmi.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; DMA_Handle_dcmi.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; DMA_Handle_dcmi.Init.Mode = DMA_CIRCULAR; DMA_Handle_dcmi.Init.Priority = DMA_PRIORITY_HIGH; DMA_Handle_dcmi.Init.FIFOMode = DMA_FIFOMODE_ENABLE; DMA_Handle_dcmi.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; DMA_Handle_dcmi.Init.MemBurst = DMA_MBURST_INC8; DMA_Handle_dcmi.Init.PeriphBurst = DMA_PBURST_SINGLE; HAL_DMA_Init( DMA_Handle_dcmi); HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 5, 0); HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn); HAL_DCMI_Start_DMA( DCMI_Handle, DCMI_MODE_CONTINUOUS, (uint32_t)DMA_Memory0BaseAddr,DMA_BufferSize); } 主函数调用 DCMI_Init() OV2640_DMA_Config(LCD_FB_START_ADDRESS,LCD_GetXSize()*LCD_GetYSize()/2); LCD_FB_START_ADDRESS为LCD显存首地址,LCD_GetXSize()*LCD_GetYSize()/2为像素个数 屏幕只显示一半是怎么回事啊??代码哪里出了问题?? |
|
相关推荐
2个回答
|
|
检查下是不是硬件连接问题
|
|
|
|
根据您提供的代码片段和描述,您在使用HAL库配置DCMI(数字相机接口)时遇到了屏幕只显示一半的问题。为了解决这个问题,我们需要逐步检查和分析可能的原因。
1. 首先,确保您的摄像头硬件连接正确,包括数据线、时钟线和电源线。 2. 检查DCMI初始化配置。您提供的代码片段不完整,但我会根据您提供的代码进行分析。以下是一些可能的问题和建议: a. SynchroMode:您设置了DCMI_SYNCHRO_HARDWARE,这意味着DCMI将使用硬件同步信号。请确保您的摄像头支持硬件同步,并检查硬件连接是否正确。 b. PCKPolarity:您设置了DCMI_PCKPOLARITY_RISING,这意味着像素时钟在上升沿有效。请确保您的摄像头支持这种极性,并检查硬件连接是否正确。 c. VSPolarity:您提供的代码片段中缺少了VSPolarity的设置。VSPolarity决定了垂直同步信号的极性。您需要设置DCMI_Handle.Init.VSPolarity为DCMI_VSPOLARITY_HIGH或DCMI_VSPOLARITY_LOW,具体取决于您的摄像头。 3. 检查DMA配置。确保您正确配置了DMA通道,以便将DCMI接收到的数据传输到内存。以下是一些可能的问题和建议: a. DMA通道选择:确保您选择了正确的DMA通道,并且该通道没有被其他设备占用。 b. DMA传输方向:确保您设置了正确的DMA传输方向,例如DMA_PERIPH_TO_MEMORY。 c. DMA数据宽度和地址增量:确保您根据摄像头的数据宽度和内存布局设置了正确的DMA数据宽度和地址增量。 4. 检查显示配置。确保您的显示驱动和缓冲区设置正确,以便正确地显示DCMI接收到的图像数据。 5. 如果以上步骤都无法解决问题,您可能需要检查摄像头的数据手册,以确保您的DCMI和DMA配置与摄像头的规格相匹配。 总之,要解决屏幕只显示一半的问题,您需要逐步检查和分析DCMI初始化配置、DMA配置以及显示配置。确保所有设置都与您的摄像头规格相匹配,并检查硬件连接是否正确。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1801 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1096 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
735 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1684 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
745浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
579浏览 3评论
602浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 14:16 , Processed in 0.971195 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号