你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32H750 USB HS HOST 加 DCMI 接口不能正常工作

[复制链接]
自行车路考 提问时间:2025-7-6 16:14 / 未解决

我目前使用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);

这两个外设是否可以同时使用,工作时的数据量都很大。

收藏 评论0 发布时间:2025-7-6 16:14

举报

0个回答

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版