完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
需要通过STM32的DCMI接口将tw9912解码去隔行的逐行BT656数据流采集到外置的SDRAM中,已经配置好TW9912,其已正常工作,但是配置的stm32的DCMI内嵌码同步出问题了,无论如何修改内嵌码同步值,帧中断频率都100多HZ;去隔行的tw9912的帧率是50Hz,真是让人头大。另外,参考手册上DCMI_ESUR寄存器也不是它说的那种使用方式。以下是DCMI口配置的代码
DCMI_Handler.Instance=DCMI; DCMI_Handler.Init.SynchroMode=DCMI_SYNCHRO_EMBEDDED; //硬件同步HSYNC,VSYNC DCMI_Handler.Init.PCKPolarity=DCMI_PCKPOLARITY_RISING; //PCLK 上升沿有效 DCMI_Handler.Init.CaptureRate=DCMI_CR_ALTERNATE_4_FRAME; //全帧捕获 DCMI_Handler.Init.ExtendedDataMode=DCMI_EXTEND_DATA_8B; //8位数据格式DCMI_OEBS_EVEN DCMI_Handler.Init.SyncroCode.FrameEndCode = 0xb6; DCMI_Handler.Init.SyncroCode.FrameStartCode = 0xab; DCMI_Handler.Init.SyncroCode.LineStartCode = 0x80; DCMI_Handler.Init.SyncroCode.LineEndCode = 0x9d; DCMI_Handler.Init.JPEGMode = DCMI_JPEG_DISABLE; DCMI_Handler.Init.ByteSelectMode = DCMI_BSM_ALL; DCMI_Handler.Init.ByteSelectStart = DCMI_OEBS_EVEN; DCMI_Handler.Init.LineSelectMode = DCMI_LSM_ALL; DCMI_Handler.Init.LineSelectStart = DCMI_OELS_ODD; HAL_DCMI_Init( DCMI_Handler); __HAL_DCMI_DISABLE_IT( DCMI_Handler,DCMI_IT_LINE|DCMI_IT_VSYNC|DCMI_IT_ERR|DCMI_IT_OVR); __HAL_DCMI_ENABLE_IT( DCMI_Handler,DCMI_IT_VSYNC); //使能帧中断 __HAL_DCMI_ENABLE( DCMI_Handler); |
|
相关推荐
1个回答
|
|
首先,我们需要确保STM32F767的DCMI接口和TW9912摄像头之间的连接正确。接下来,我们将逐步检查和配置DCMI接口以实现逐行BT656内嵌码同步。
1. 确保DCMI时钟已正确配置。在RCC中启用DCMI时钟。 ```c __HAL_RCC_DCMI_CLK_ENABLE(); ``` 2. 配置DCMI接口的GPIO引脚。 3. 初始化DCMI接口。 ```c DCMI_HandleTypeDef DCMI_Handler; DCMI_Handler.Instance = DCMI; DCMI_Handler.Init.SynchroMode = DCMI_SYNCHRO_EMBEDDED; DCMI_Handler.Init.PCKPolarity = DCMI_PCKPOLARITY_FALLING; DCMI_Handler.Init.VSPolarity = DCMI_VSPOLARITY_LOW; DCMI_Handler.Init.HSPolarity = DCMI_HSPOLARITY_LOW; DCMI_Handler.Init.CaptureRate = DCMI_CR_ALL_FRAME; DCMI_Handler.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; DCMI_Handler.Init.JPEGMode = DCMI_JPEG_DISABLE; DCMI_Handler.Init.BurstAccessMode = DISABLE; HAL_DCMI_Init(&DCMI_Handler); ``` 4. 配置DCMI的内嵌码同步值。根据TW9912的数据手册,找到合适的内嵌码同步值。这里需要根据实际的BT656数据流来设置。 ```c __HAL_DCMI_SET_SYNCHRO(&DCMI_Handler, SYNCHRO_CODE); ``` 5. 配置DCMI中断。例如,配置帧中断。 ```c HAL_NVIC_SetPriority(DCMI_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DCMI_IRQn); ``` 6. 启动DCMI。 ```c HAL_DCMI_Start_DMA(&DCMI_Handler, (uint32_t)SDRAM_Buffer, SDRAM_BUFFER_SIZE); ``` 7. 在DCMI中断服务例程中处理数据。 ```c void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi) { // 处理帧数据 } ``` 8. 如果帧率仍然不正确,请检查TW9912的配置,确保其输出帧率为50Hz。 9. 如果问题仍然存在,请参考STM32F767的参考手册和TW9912的数据手册,仔细检查DCMI配置和内嵌码同步值。 10. 如果需要,尝试更新STM32F767的固件库,以确保使用的是最新版本。 通过以上步骤,应该可以解决STM32F767的DCMI接口逐行BT656内嵌码同步问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析和解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1614 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1541 浏览 1 评论
970 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
682 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1592 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 00:41 , Processed in 0.735087 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号