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

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

3天内不再提示

使用M62板子实现USB的设备开发

安信可科技 来源:安信可科技 2024-02-25 09:49 次阅读

01介绍

前面写过两遍关于 USB 协议基础的帖子,如果对 USB 协议不了解,可以去看看下列的基础内容。

这篇开始使用 M62 板子来实现 USB 的设备开发,首先从最简单的 USB HID 键盘开始。固件的 SDK 使用的是 CherryUSB 开源 USB 固件。CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统的 USB 主从协议栈。设备端的协议执行流程如下图:

07d83556-d236-11ee-a297-92fbcf53809c.png

02描述符

CherryUSB 实现好了一套 USB 的设备协议,只需要使用的 CheryyUSB 提供的接口调用就可以实现想要的 USB 设备了。首先应该为 USB 设备填描述符。描述符的种类很多,先得理解他们的含义。

设备(Device) :就是一个实实在在的 USB 设备,比如 USB 鼠标,U 盘。

配置(Configuration):一个 USB 设备可以有多种配置。比如 4G 上网卡就有 2 种配置:U 盘、上网卡。第 1 次把 4G 上网卡插入电脑时,它是一个 U 盘,可以安装里面的程序。装好程序后,把它再次插入电脑,它就是一个上网卡。驱动程序可以选择让它工作于哪种配置,同一时间只能有一种配置有效。大多数的 USB 设备只有一种配置。

接口(Interface) :每个配置下可以有多个接口,这个接口不是硬件上的接口,可以把这个接口理解为功能,一个接口就代表该设备当前支持的一种功能。

端点(Endpoint) :每个接口可以有多个端点。USB 主机和设备就是通过端点进行数据交互的。每个端点地址对应一个方向,例如端点 2-IN,端点 2-OUT,这两个含义完全不同。

对于 HID 设备来说还有 HID 描述符和 HID 报告描述符。

HID 描述符:描述设备数据包的固定代码字节数组,包括设备支持多少个包,包有多大,以及包中每个字节和比特的含义。

HID 报告描述符:HID 报告描述符是一个硬编码的字节数组,用于描述设备的数据包。这包括:设备支持多少数据包,数据包有多大,以及数据包中每个字节和位的用途。

下面来一一看看它们都怎么写的。

设备描述符

cherryUSB 中封装了宏来定义设备描述符:

07e72764-d236-11ee-a297-92fbcf53809c.png

详细说说字段表示的意思:

07ee203c-d236-11ee-a297-92fbcf53809c.png

配置描述符

cherryUSB 中封装了宏来定义配置描述符:

07f80f2a-d236-11ee-a297-92fbcf53809c.png

080624c0-d236-11ee-a297-92fbcf53809c.png

接口描述符

接口描述符是需要自己写成数组的:

080fe8f2-d236-11ee-a297-92fbcf53809c.png

08198b28-d236-11ee-a297-92fbcf53809c.png

端点描述符

081d5668-d236-11ee-a297-92fbcf53809c.jpg

082135bc-d236-11ee-a297-92fbcf53809c.png

HID 描述符

08290fda-d236-11ee-a297-92fbcf53809c.png

082fe21a-d236-11ee-a297-92fbcf53809c.png

HID 报告描述符

083a0ede-d236-11ee-a297-92fbcf53809c.png

03设备的实现

在设备连接时设备端就需要向主机上报各种描述符,主机这时候就会识别到设备然后给 USB 设备分配端口(USB 协议基础中的设备枚举)。

连接完成后设备就可以通过 usbd_ep_start_write 函数(cherryUSB 提供的 API)向主机上报数据了。

084a2d78-d236-11ee-a297-92fbcf53809c.png

在主函数中调用它, 如下就实现了一个不断向主机发送字母 a 的 usb 键盘设备。

08551c56-d236-11ee-a297-92fbcf53809c.png

为了能和真实的键盘对应上,这里特意使用矩阵键盘接上板子来读取矩阵键盘的键值,将对应的键值转换成对应的 hid 报告发送给电脑端。

08639baa-d236-11ee-a297-92fbcf53809c.png

硬件的接线顺序如下:

087112da-d236-11ee-a297-92fbcf53809c.png

在矩阵键盘扫描的 task 里面循环扫描矩阵键盘,如果按键有按下直接转换成对应的 hid 键值:

0874ecfc-d236-11ee-a297-92fbcf53809c.png

这些键值的定义可以在这里找到:

087c05dc-d236-11ee-a297-92fbcf53809c.png

在 usb 键盘的 task 里面则取接受消息,并把消息发松给 pc 端。

0892b52a-d236-11ee-a297-92fbcf53809c.png

04USB描述符的查看

Windows 下可以使用 usbview 来查看 usb 描述符信息,这有利于我们调试分析使用。

089a8818-d236-11ee-a297-92fbcf53809c.png

05USB协议调试软件

usb 协议相对还是比较复杂的,任何的描述符写错了都可能导致设备没办法正常的工作。这时候好用的调试软件就非常的重要了。

USBlyzer, WireShark 都是可以用来抓 USB 数据包进行分析的。

审核编辑:汤梓红

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

    关注

    60

    文章

    7943

    浏览量

    264560
  • 物联网
    +关注

    关注

    2909

    文章

    44608

    浏览量

    373056
  • 开发板
    +关注

    关注

    25

    文章

    5040

    浏览量

    97412

原文标题:【外设移植】USB键盘+M61开发板

文章出处:【微信号:安信可科技,微信公众号:安信可科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【外设移植】USB键盘+M61开发

    这篇开始使用 M62 板子实现 USB设备开发,首先从最简单的
    的头像 发表于 02-26 11:31 1909次阅读
    【外设移植】<b class='flag-5'>USB</b>键盘+<b class='flag-5'>M</b>61<b class='flag-5'>开发</b>板

    用MINI STM32板子实现USB虚拟串口

    `实验内容:通过STM32的USB端口在PC上虚拟一个COM口,当虚拟成功后,可通过串口调试软件。发送控制命令,去点亮板子上相应的LED灯,同时输出调试信息。在PC机的设备管理器中可看到虚拟
    发表于 06-28 11:03

    如何用STM32板子实现了NRF24L01无线通信实验

    我现在用STM32板子实现了NRF24L01无线通信实验,怎么修改程序才能发送和接收“数字1”!现在只能显示这个
    发表于 06-01 15:53

    TCLM62机芯线路原理图相关资料下载

    TCL M62机芯线路原理图文件下载
    发表于 06-24 07:39

    实现stm32 usb复合设备开发

    cube的stm32 usb代码分析以及复合设备开发
    的头像 发表于 07-05 00:11 9325次阅读
    <b class='flag-5'>实现</b>stm32 <b class='flag-5'>usb</b>复合<b class='flag-5'>设备</b><b class='flag-5'>开发</b>

    三星Galaxy Tab M62通过WiFi联盟认证

    稍早前,一个来自三星大野田工厂的内部信息显示,让我们知道这家韩国公司正在准备一款名为Galaxy Tab M62的价格合理的紧凑型平板电脑。而另一个消息也显示了这款产品目前正在三星在印度诺伊达建设
    的头像 发表于 01-21 10:46 2023次阅读

    三星新机Galaxy M62详细规格参数曝光

    据外媒爆料,近日有一款三星新机在跑分网站上曝光,型号为三星Galaxy M62。这款手机的型号为SM-M625F,根据Geekbench跑分显示,它将采用Exynos 9825芯片,该芯片组曾用于Galaxy Note10和Note10+。
    的头像 发表于 01-21 15:13 7285次阅读

    三星Galaxy M62平板电脑再获Wi-Fi认证

    继获得美国联邦通讯委员会(FCC)的认证之后,配备 7000 mAh 电池、支持 25W 快充的三星 Galaxy M62 平板电脑又拿到了 Wi-Fi 联盟的认证。认证信息表明该机的型号为
    的头像 发表于 01-21 16:29 2227次阅读

    三星Galaxy Tab M62平板芯片与跑分曝光

    现了 Galaxy Tab M62 的关键规格。可知这款代号为 SM-M625F 的设备采用了三星自家的 Exynos 9825 芯片组、辅以 6GB RAM,与 Galaxy F62
    的头像 发表于 01-22 14:37 2281次阅读

    三星Galaxy M62将成为Galaxy M系列的首款平板电脑

    在谈到Wi-Fi联盟认证时,该清单表明三星Galaxy M62将开箱即用运行Android 11。在连接性方面,平板电脑支持2.4GHz和5GHz频段。虽然此新清单并未分享有关即将推出的平板电脑的许多关键细节
    的头像 发表于 01-22 16:39 2977次阅读

    三星Galaxy M62电池容量已通过美国联邦通信委员会颁发的证书

    在为Samsung Galaxy M62准备的证书中,该型号提供25W充电支持,并使用USB Type-C充电。但是,据报道该型号具有3.5毫米耳机插孔。还指出该型号也称为Samsung Galaxy F62,型号名称可能会因国
    的头像 发表于 01-26 14:16 1976次阅读

    传闻许久的三星Galaxy M62新机上市在即

    91Mobiles 报道称,传闻许久的 Galaxy M62(SM-M625F / DS)新机,已于近日获得了泰国电信监管机构 NBTC 的认证。消息表明,该机支持 4G LTE 移动网络、以及双
    的头像 发表于 02-03 15:30 3135次阅读

    键盘电子实现

    键盘电子实现
    发表于 05-26 15:32 1次下载

    M16C/62P 组(M16C/62P、M16C/62PT)数据表

    M16C/62P 组(M16C/62P、M16C/62PT)数据表
    发表于 05-09 19:23 2次下载
    <b class='flag-5'>M</b>16C/<b class='flag-5'>62</b>P 组(<b class='flag-5'>M</b>16C/<b class='flag-5'>62</b>P、<b class='flag-5'>M</b>16C/<b class='flag-5'>62</b>PT)数据表

    智能家居之旅(3):Ai-M61/M62 接入HomeAssistant 实现点灯

    上一篇我们介绍了MQTT设备如何接入HomeAssistant(打卡智能家居之旅(2):设备接入HomeAssistant的方法),这一篇就给大家讲一下Ai-M61/M62
    的头像 发表于 06-07 10:07 575次阅读
    智能家居之旅(3):Ai-<b class='flag-5'>M</b>61/<b class='flag-5'>M62</b> 接入HomeAssistant <b class='flag-5'>实现</b>点灯