0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

WiFi+蓝牙模组 外设移植USB UVC+Ai-M61开发板

AIoT行业洞察 ? 来源:AIoT行业洞察 ? 作者:AIoT行业洞察 ? 2025-07-15 14:32 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

以下作品由安信可社区用户

bzhou830制作

01前情回顾

USB相关的内容之前写过几篇,但是因为早期的SDK里面的example有些是运行不起来的,不久前博流更新了SDK,遂又尝试看看里面的USB协议栈是否更新了内容。这次更新的动作还是很不错的,添加了很多新的内容,也修复了不少bug,非常值得学习一波。

那这篇就来继续之前的USB之旅,来学习下USB UVC的example。先放下usb相关的之前的帖子:

以下内容可从查看https://bbs.ai-thinker.com/home.php?mod=space&uid=13138&do=thread&type=thread&view=me&from=space

【探索USB】01. USB协议基础 - 小安派S1&M61教程合集 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)?bbs.ai-thinker.com/forum.php?mod=viewthread&tid=43977&_dsign=9a6226e6

【探索USB】02. 设备的连接和枚举 - 小安派S1&M61教程合集 - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)?bbs.ai-thinker.com/forum.php?mod=viewthread&tid=43981&_dsign=0158b4e6

【外设移植】USB设备之USB鼠标+M61开发板 - Ai-M61-Kit外设移植教程 - 物联网开发者社区-安信可论坛 - Powered by Discuz!?bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44029

【外设移植】USB设备之USB键盘+M61开发板 - Ai-M61-Kit外设移植教程 - 物联网开发者社区-安信可论坛 - Powered by Discuz!?bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44023

【外设移植】USB设备之USB midi+M61开发板 - Ai-M61-Kit外设移植教程 - 物联网开发者社区-安信可论坛 - Powered by Discuz!?bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44079

这次学习的UVC来自如下的sdk路径中:

bouffalo_sdk/examples/peripherals/usbdev/usbd_static_video/video_static_mjpeg_template.c

02代码分析

wKgZO2h19hSAS5_DAABLjJnHfKM190.jpg

UVC example中给出代码结构如上图。usb协议栈实现使用的是cherry usb,video_static_mjpeg_template.c文件中调用cherry usb提供的接口来实现枚举usb设备等操作。

voidvideo_init(){ usbd_desc_register(video_descriptor);
usbd_add_interface(usbd_video_init_intf(&intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
usbd_add_interface(usbd_video_init_intf(&intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE));
usbd_add_endpoint(&video_in_ep);
usbd_initialize(); }

main文件中则很简单的去调用设备的初始化,随后进入主循环进行jpeg数据的传输。

uvc设备的数据填入使用的是cherry usb实现的usbd_video_mjpeg_payload_fill((uint8_t *)jpeg_data1, sizeof(jpeg_data1), packet_buffer, &out_len);函数。

这里提到了一个jepg数据,数据源哪里来呢?为了简化,example中直接使用的是jepg二进制数组的形式。从jepg格式编码我们可以验证对比这个数据的内容。

wKgZPGh19hSAVF8gAAFxYr7kIe4564.jpg

03编译运行

直接编译烧录。

wKgZO2h19hWABAoNAADn9eZMe9A876.jpg

将usb接口接入到电脑上。在设备管理器中就可以发现成功的枚举了一个USB UVC 设备。

wKgZO2h19hWAEvAaAAAm1xK1e8k800.jpg

此时可以像使用USB摄像头一样使用这个设备了。用playcap工具可以查看UVC摄像头的图像数据。

wKgZPGh19haAXM3OAAA3VSwKm3s772.jpg

因为是固定的数组,所以显示的是一个静态的图像,来稍微改造一下代码让它轮播两个图像。

wKgZO2h19heABId1AABbCo0eXUs832.jpg

这样就能轮播两个图像。

04拓展

example里面使用的是数组,如果接入的摄像头,直接读取摄像头数据然后编码输出就是得到一个USB摄像头设备。

如果能生成一些可显示的内容,是不是就能把这个UVC设备当成一个显示器使用呢?比如把nes模拟器产生的游戏画面进行jpeg数据编码。然后写入,这样就得到了一个使用UVC来传输游戏画面的游戏机设备了,想想还真的有点意思呢 。

刚好jpeg编解码在Ai-M61系列模组中也有硬件的支持。值得一玩!

最后,上面使用的是playcap来显示摄像头图像,其实强大的potplayer也是可以直接打开并显示摄象头的,而且可以设置融合的方式。

wKgZPGh19heAQGofAAFWj0RbPfI521.jpg

审核编辑 黄宇


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    8215

    浏览量

    274123
  • WIFI
    +关注

    关注

    81

    文章

    5410

    浏览量

    208671
  • 开发板
    +关注

    关注

    25

    文章

    5725

    浏览量

    105645
  • 蓝牙模组
    +关注

    关注

    0

    文章

    44

    浏览量

    4373
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    M-K1HSE开发板免费体验】开发板硬件解析

    M-K1HSE V1.0开发板采用进迭时空K1(RISC-V SpacemiT X60)八核处理器,搭载Harmony系统,主频高达1.6GHz,超强性能,接口丰富。采用IMG
    发表于 07-02 11:57

    基于RV1126开发板WiFi+蓝牙硬件电路设计

    核心WiFi模块采用的是正基的AP6212,集2.4GHz WiFi蓝牙4.2于一体。WiFi
    的头像 发表于 04-16 18:00 ?409次阅读
    基于RV1126<b class='flag-5'>开发板</b>的<b class='flag-5'>WiFi+</b><b class='flag-5'>蓝牙</b>硬件电路设计

    新品推荐!国产LoRa扩频模块、WiFi+蓝牙双模模组、低功耗蓝牙转串口模块

    新品上市国产LoRa扩频模块蓝牙转串口模块WiFi+蓝牙双模模组部分新品参与送样文末了解详情↓↓↓EWM290-M系列国产LoRa扩频模块E
    的头像 发表于 03-27 19:33 ?677次阅读
    新品推荐!国产LoRa扩频模块、<b class='flag-5'>WiFi+</b><b class='flag-5'>蓝牙</b>双模<b class='flag-5'>模组</b>、低功耗<b class='flag-5'>蓝牙</b>转串口模块

    能和Ai-M61模组对话了?手搓一个ChatGPT 语音助手

    起猛了, 安信可的Ai-M61模组能说话了! 超低延迟实时秒回 ,对话超丝滑的那种,先来看一段VCR: 小安派+ChatGPT语音实测:对话丝滑到忘记对面是AI_ 人工智能的应用日益广泛。 各家模型
    的头像 发表于 03-12 11:57 ?2568次阅读
    能和<b class='flag-5'>Ai-M61</b><b class='flag-5'>模组</b>对话了?手搓一个ChatGPT 语音助手

    全志T113-S3开发板测试—UVC 摄像头

    协议实现USB摄像头和开发板之间的数据传输。本文将介绍UVC协议的相关知识,并演示如何检测UVC摄像头。产品简介眺望电子EVM-T113-S3是一款基于全志T11
    的头像 发表于 02-27 08:31 ?1585次阅读
    全志T113-S3<b class='flag-5'>开发板</b>测试—<b class='flag-5'>UVC</b> 摄像头

    正点原子ESP32S3系列开发板全面支持小智AI

    、512KB和8MB,另外还挂载了16MB Flash的外部存储资源。芯片集成了高性能的 Xtensa? 32 位 LX7 双核处理器、超低功耗协处理器、Wi-Fi 基带、蓝牙基带、RF 模块以及外设开发板板载资源丰富,可用
    发表于 02-14 17:01

    双频WiFi+蓝牙SoC模组 ARM Cortex-M33 MCU

    HLK-RM58N是海凌科开发的一款高性能双频WiFi+蓝牙SoC模组,支持2.4GHz和5GHz双频WLAN以及低功耗蓝牙5.0(BLE5
    的头像 发表于 02-10 17:04 ?786次阅读
    双频<b class='flag-5'>WiFi+</b><b class='flag-5'>蓝牙</b>SoC<b class='flag-5'>模组</b>  ARM Cortex-<b class='flag-5'>M</b>33 MCU

    零基础开发小安派-Eyes-S1 外设篇——DAC

    AiPi-Eyes-S1 是安信可开源团队专门为Ai-M61-32S设计的一款开发板,支持WiFi6、BLE5.3。所搭载的Ai-M61-32S
    的头像 发表于 12-27 10:55 ?1232次阅读
    零基础<b class='flag-5'>开发</b>小安派-Eyes-S1 <b class='flag-5'>外设</b>篇——DAC

    零基础开发小安派-Eyes-S1外设篇——I2S

    AiPi-Eyes-S1 是安信可开源团队专门为Ai-M61-32S设计的一款开发板,支持WiFi6、BLE5.3。所搭载的Ai-M61-32S
    的头像 发表于 12-13 18:02 ?1680次阅读
    零基础<b class='flag-5'>开发</b>小安派-Eyes-S1<b class='flag-5'>外设</b>篇——I2S

    零基础开发小安派-Eyes-S1【外设篇】——FLASH

    AiPi-Eyes-S1是安信可开源团队专门为Ai-M61-32S设计的一款开发板,支持WiFi6、BLE5.3。所搭载的Ai-M61-32S 模组
    的头像 发表于 12-05 14:31 ?779次阅读
    零基础<b class='flag-5'>开发</b>小安派-Eyes-S1【<b class='flag-5'>外设</b>篇】——FLASH

    零基础开发小安派-Eyes-S1 外设篇 ——I2C

    AiPi-Eyes-S1是安信可开源团队专门为Ai-M61-32S设计的一款开发板,支持WiFi6、BLE5.3。所搭载的Ai-M61-32S 模组
    的头像 发表于 11-27 16:39 ?899次阅读
    零基础<b class='flag-5'>开发</b>小安派-Eyes-S1 <b class='flag-5'>外设</b>篇 ——I2C

    基于ALINX开发板Z19-P实现WIFI无线通信功能

    本教程基于 ALINX 开发板 Z19-P , 实现 WIFI 无线通信的功能,WIFI 模块使用 USB WIFIrtl8188cu。
    的头像 发表于 11-11 10:44 ?835次阅读
    基于ALINX<b class='flag-5'>开发板</b>Z19-P实现<b class='flag-5'>WIFI</b>无线通信功能

    零基础开发小安派-Eyes-S1外设篇——GPIO中断编程

    AiPi-Eyes-S1 是安信可开源团队专门为Ai-M61-32S设计的一款开发板,支持WiFi6、BLE5.3。所搭载的Ai-M61-32S
    的头像 发表于 10-29 14:56 ?1165次阅读
    零基础<b class='flag-5'>开发</b>小安派-Eyes-S1<b class='flag-5'>外设</b>篇——GPIO中断编程

    零基础开发小安派-Eyes-S1外设篇——GPIO 输入输出

    AiPi-Eyes-S1 是安信可开源团队专门为Ai-M61-32S设计的一款开发板,支持WiFi6、BLE5.3。所搭载的Ai-M61-32S
    的头像 发表于 10-25 13:50 ?1499次阅读
    零基础<b class='flag-5'>开发</b>小安派-Eyes-S1<b class='flag-5'>外设</b>篇——GPIO 输入输出

    外设移植 安信可Ai-WB2-32S开发板+TM1637 NTP时钟

    使用的是AI-WB2-32S开发板,自己画了一个板子整合TM1637和舵机、BLE(舵机、BLE的将会在另外2篇帖子介绍),对应的接线方式如下: 移植过程: 根据参考帖子以及TM1637的规格书进行更改,时序
    的头像 发表于 09-24 14:29 ?744次阅读
    <b class='flag-5'>外设</b><b class='flag-5'>移植</b> 安信可<b class='flag-5'>Ai</b>-WB2-32S<b class='flag-5'>开发板</b>+TM1637 NTP时钟