完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我目前使用STM32H750加USB3300用做USB高速host,然后通过通过DCMI接口读取摄像头数据,摄像头的分辨率是640480(640480*2bytes)。
单独打开USB时,usb是工作正常的。 单独打开DCMI时,也是可以正常工作的。 如果打开USB后,再打开DCMI后,启动dma传输,usb就工作了,没有usb中断发生。 DCMI初始化代码 HAL_RCC_DMA2_CLK_DISABLE();HAL_RCC_DCMI_CLK_DISABLE();HAL_RCC_DMA2_CLK_ENABLE();HAL_RCC_DCMI_CLK_ENABLE(); DCMI_InitStructure.Instance = DCMI;DCMI_InitStructure.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE; // 硬件同步DCMI_InitStructure.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING; // 像素时钟上升沿采样DCMI_InitStructure.Init.VSPolarity = DCMI_VSPOLARITY_HIGH; // VSYNC高有效DCMI_InitStructure.Init.HSPolarity = DCMI_HSPOLARITY_LOW; // HSYNC高有效DCMI_InitStructure.Init.CaptureRate = DCMI_CR_ALL_FRAME; // 捕获全帧DCMI_InitStructure.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; // 数据宽度(根据摄像头配置)HAL_DCMI_Init(&DCMI_InitStructure); HAL_NVIC_SetPriority(DCMI_IRQn, 5, 0);HAL_NVIC_EnableIRQ(DCMI_IRQn); // 2. 配置DMA句柄(DMA2 Stream1用于DCMI)DMA_InitStructure.Instance = DMA2_Stream1;DMA_InitStructure.Init.Request = DMA_REQUEST_DCMI; // DMA请求源为DCMIDMA_InitStructure.Init.Direction = DMA_PERIPH_TO_MEMORY; // 传输方向:外设到内存DMA_InitStructure.Init.PeriphInc = DMA_PINC_DISABLE; // 外设地址不递增DMA_InitStructure.Init.MemInc = DMA_MINC_ENABLE; // 内存地址递增DMA_InitStructure.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; // 外设数据对齐32位DMA_InitStructure.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; // 内存数据对齐32位DMA_InitStructure.Init.Mode = DMA_CIRCULAR; // 循环模式(自动切换缓冲)DMA_InitStructure.Init.Priority = DMA_PRIORITY_LOW; // 高优先级DMA_InitStructure.Init.FIFOMode = DMA_FIFOMODE_ENABLE; // 启用FIFODMA_InitStructure.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; // FIFO阈值HAL_DMA_Init(&DMA_InitStructure); // 3. 绑定DMA到DCMI__HAL_LINKDMA(&DCMI_InitStructure, DMA_Handle, DMA_InitStructure); // 外部SDRAM camera_buff = mymalloc(SRAMEX, 2CAMERA_WIDTHCAMERA_HIGH*2); HAL_DCMI_Start_DMA(&DCMI_InitStructure,DCMI_MODE_CONTINUOUS, (uint32_t)camera_buff, CAMERA_WIDTHCAMERA_HIGH2/4); USB初始化代码 HAL_PWREx_EnableUSBVoltageDetector(); USBH_Init(&hUSBHost, USBH_UserProcess, 0); USBH_RegisterClass(&hUSBHost, USBH_VIDEO_CLASS); USBH_Start(&hUSBHost); |
|
相关推荐
1个回答
|
|
|
针对STM32H750中同时使用USB HS Host(通过USB3300)和DCMI接口时USB中断停止工作的问题,以下是系统性解决方案: 1. 检查DMA冲突(最可能的原因)
2. 优化时钟配置
3. 总线拥塞处理
4. 验证PCB设计与供电
5. 软件时序调整
6. 检查STM32H750勘误手册
总结排查流程按优先级执行以上步骤,90%以上的类似问题由DMA冲突或总线拥塞导致。建议从DMA配置切入,逐步验证其他环节。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4226 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3266 浏览 1 评论
2799 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2232 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
15204 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3178浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1948浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2117浏览 3评论
2022浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2223浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-17 11:57 , Processed in 0.618260 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
598