完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
stm32性能已经很强了, 可以驱动ov5640摄像头, 所以可以把摄像头接在stm32上, 当作一个摄像头驱动器, 连接到电脑上
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 测试 因为没接入摄像头所以模拟一张图片来显示 |
|
|
|
只有小组成员才能发言,加入小组>>
3308 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9049 浏览 16 评论
4083 浏览 18 评论
1167浏览 3评论
601浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
592浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2329浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1892浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:14 , Processed in 0.954230 second(s), Total 49, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号