完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
stm32性能已经很强了, 可以驱动ov5640摄像头, 所以可以把摄像头接在stm32上, 当作一个摄像头驱动器, 连接到电脑上
开发环境: stm32cubemx 6.0.1 单片机: 自己做的stm32h743iit6核心板,兼容正点原子 整个项目是基于CDC串口上修改 1 stm32 USB 代码概览 u***_device.c 是描述注册, 回调注册 u***_desc.c 是描述符 u***d_crc_if.c 是u***d_crc.c的回调, 这是APP层, 包括初始化,控制,接受,发送的回调 u***d_cdc.c中是端点的初始化,输入的输入输出, 配置等 2 代码修改 主要修改u***d_desc.c中的描述 添加u***d_uvc.c 端口驱动 添加u***_uvc_if.c 回调 1 替换u***d_desc.c中的描述 因为u*** uvc的描述不一样, 这里需要设置为UVC的描述 2 添加u***d_uvc.c 这个文件主要是端口的读写, 还有配置描述 3 3 添加u***d_uvc_if.c 4 u***_device.c中注册 原本是CDC的注册,这里需要替换为UVC的注册 #include "u***d_uvc.h" #include "u***d_uvc_if.h" void MX_USB_DEVICE_Init(void) { /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ /* USER CODE END USB_DEVICE_Init_PreTreatment */ /* Init Device Library, add supported class and start the library. */ if (USBD_Init(&hU***DeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) { Error_Handler(); } // if (USBD_RegisterClass(&hU***DeviceFS, &USBD_CDC) != USBD_OK) // { // Error_Handler(); // } // if (USBD_CDC_RegisterInterface(&hU***DeviceFS, &USBD_Interface_fops_FS) != USBD_OK) // { // Error_Handler(); // } if (USBD_RegisterClass(&hU***DeviceFS, &USBD_UVC) != USBD_OK) { Error_Handler(); } if (USBD_UVC_RegisterCamera(&hU***DeviceFS, &USBD_UVC_Camera) != USBD_OK) { Error_Handler(); } if (USBD_Start(&hU***DeviceFS) != USBD_OK) { Error_Handler(); } /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ HAL_PWREx_EnableUSBVoltageDetector(); /* USER CODE END USB_DEVICE_Init_PostTreatment */ } 5 更改u***d_conf.c中的初始化文件 修改USB_LL_Init中的dma_enable, sof_enable 都改为ENABLE hpcd_USB_OTG_FS.Instance = USB_OTG_FS; hpcd_USB_OTG_FS.Init.dev_endpoints = 9; hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL; hpcd_USB_OTG_FS.Init.dma_enable = ENABLE; // 开启DMA hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED; hpcd_USB_OTG_FS.Init.Sof_enable = ENABLE; // 开启sof_enable hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE; hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE; hpcd_USB_OTG_FS.Init.battery_charging_enable = DISABLE; hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE; hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE; if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK) 6 u***_uvc_if.c 添加摄像头图片数据 摄像头设置的是YUV420P的格式, 不是RGB565的数据,这里要注意 我这里还没接入摄像头,就用模拟数据代替, 如果接入了摄像头直接把图片缓冲区地址放这里 7 测试 因为没接入摄像头所以模拟一张图片来显示。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1750 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1608 浏览 1 评论
1049 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1665 浏览 2 评论
1924浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
711浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
560浏览 3评论
583浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 11:23 , Processed in 0.721119 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号