
我目前使用STM32H750加USB3300用做USB高速host,然后通过通过DCMI接口读取摄像头数据,摄像头的分辨率是640 480(640 480 * 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请求源为DCMI DMA_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; // 启用FIFO DMA_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); 这两个外设是否可以同时使用,工作时的数据量都很大。 |
STM32有哪些MCU能支持I2C HS模式和同时支持I3C 的吗
开发逆变器进行STM32学习,路径如何规划?
如何调整CubeMX的默认引脚
stm32支持canfd和dma结合使用吗
Keil编译为何慢?
多DMA数据流问题
STM32_ImageProcessing_Library 如何实现 图片 去掉 背景?
STM32H743IIT6发热问题.
STM32H743做数字电源,HRTIM问题
TouchGFX Designer下载工程到STM32H7S7-DK报错
DCMI 使用 DMA2_Stream1,而 USB HS Host 可能隐式占用 DMA2 的其他流,STM32H750 的 DMA 流请求映射应该是独占的
[md]DCMI 使用的DMA优先级已经为最低了“DMA_PRIORITY_LOW”
并且启动DCMI 的 DMA后,会影响USB的中断