请选择 进入手机版 | 继续访问电脑版
查看: 3285|回复: 8

手把手带您使用MCUXpresso Config Tools生成USB组合设备

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32001
    最后登录
    2024-4-9
    发表于 2021-10-26 12:51:49 | 显示全部楼层 |阅读模式
    手把手带您使用MCUXpresso Config Tools生成USB组合设备
    引言
    本文介绍了如何使用MCUXpresso Config Tools来快速生成一个可用的USB composite device的demo,以便节省时间直接进行USB应用层的开发,而不必关注USB协议栈及底层的配置。
    文详细介绍了如何利用Config Tools生成USB Composite Device工程的全部步骤,并且还会介绍,如何将这些代码porting到IAR等不同IDE中进行开发。

    组合设备介绍
    USB的composite类是指在一个USB设备中,实现多个不同功能的特殊USB类,如一个设备实现鼠标加键盘或者U盘加键盘的功能。

    实际上,USB composite类几乎可以将任意的USB功能进行组合,并且组合的数量也不局限于两个,只要端点资源够多,可以组合三个或多个功能于一个设备上。

    在USB中,还存在有一种compound device的概念,它与composite device都可以译作复合设备或组合设备,但是它们是两个完全不同的概念。

    USB compound device(USB复合设备)中内嵌Hub和多个功能,每个功能都是独立的USB设备,有独立的VID与PID,从实现层面上讲就是一个物理设备实现了一个Hub和多个物理设备。

    USB composite device(USB组合设备)中只有一套VID与PID,通过不同的接口将这同一个设备定义为不同的功能的组合。而不同功能的实现依赖于不同的类接口的合并。

    环境搭建
    本文使用i.MX RT1060-EVK板作为演示对象,所使用的MCUXpresso IDE(以下简称MCUX)版本为v11.4.0,其中内置了v10.0.0版本的Config Tools,使用内置的Config Tools所生成的工程,可以直接在MCUXpresso IDE内编译下载,下一章将会介绍如何将生成的代码集成到IAR中进行编译下载运行。

    在使用MCUXpresso生成工程时需要加载SDK到MCUXpresso环境中,本文使用的SDK版本为2.10.0。

    以下例子是生成了一个包含CDC VCOM、MSC、HID Mouse三个类功能的组合设备。

    配置工程

    首先需要创建工程。

    进入MCUXpresso IDE界面后,点击New project进入创建工程界面,选择evkmimxrt1060板,点击next,进入config界面,点击middleware选项卡,选中USB Device和USB PHY选项, USB Common Header会被自动勾选,最后点击Finish完成工程创建。

    具体步骤如下图:            
    13.png

    完成工程的创建后,选择ConfigTools选项卡下的Peripherals,进入工程配置界面,在左侧Components窗口下,点击Middleware右侧的加号,弹出选择界面,在选择界面中选中USB,点击OK。操作步骤如下图所示。
    14.png
    此时,我们已经将USB中间件添加进入配置,刚添加进入后会发现右下角的Problems界面内会报两条错误,为了解决其中的时钟错误,首先还是在ConfigTools选项卡内,选择Clocks,进入Clock配置界面,选择Clock Outputs界面中的USBPHY1 PLLclock,然后在右侧的Details界面内Enable USBPHY1 clock output,具体步骤如下图所示。
    15.png
    返回Peripherals界面,时钟的错误已经消除,下面开始添加USB的功能接口,在刚才添加的USB1的主界面内根据自己的需求修改device的VID及PID。
    点击Supported interfaces选项旁边的加号,添加一个interface,会生成一个interface0,默认新添加的interface的类都是DFU,在右侧Class下拉菜单中选择想要实现的组合设备中的第一个类。此处需要注意的是,CDC VCOM的实现需要用到两个子类interface,分别是用于管理和控制的通信类接口CIC与用于传输数据的数据接口类DIC,在Config Tools中需要分别添加两个interface组成来一个CDC VCOM的功能。
    添加两个interfaces,分别设置类为CIC VCOM及DIC VCOM。Config Tools添加interfaces时,是按照顺序使用端点号及interface号,这里我们不修改任何参数,直接使用默认的数据,如果应用层有特殊需要的,也可以修改端点的相关参数来满足需求。
    第一个CDC VCOM类的功能添加完成后,开始添加第二个MSC类的interface,仍然是点击加号,修改Class为MSC,其余的配置都保持默认。
    最后进行HID类的配置,仍然是点击加号,添加新的interface,修改Class为HID,在右侧的Present下拉框内选择Mouse,需要使用自定义HID报告的应用可以选择None,并且自己进行Endpoints和report的配置。
    所有配置过程如下图所示:
    16.png
    在所有类的interfaces添加完成后,点击上方菜单中的UpdateCode,在弹出的对话框中,可以看到本次配置对哪些文件产生了影响,此处需要注意的是,需要前两个board文件夹下的4个文件的默认勾选去除掉,然后点击OK,完成代码的生成。
    具体步骤如下图所示。
    17.png
    在生成完成代码后,MCUX会自动跳转回工程开发界面,打开source目录下的与工程同名的.c文件,在头文件处添加’ #include "usb_device_composite.h"’,并且将主循环里的内容替换为USB_DeviceTasks();。

    修改的步骤如下图所示。
    18.png


    完成上述修改后即可编译下载到RT1060-EVK板上进行测试。下载完成后按下EVK板的reset键,连接USB1口到PC的USB口,打开设备管理器可以看到生成了一个新的composite device,并且同时,还可以在各个设备类下面查找到实现的相应的设备,并且这些设备的PID\VID相同,都是在配置界面内所配置的PID\VID,如下图所示。
    19.png
    移植到IAR环境

    先要准备一个IAR的工程。
    在SDK生成器中下载一个带有完整的USB stack的SDK包,然后在同样的页面内下载一个Standalone的示例工程,如下图所示。
    20.png
    根据所要生成的Composite Device所含的类的种类,选择SDK中的某单一类的工程,例如,本应用笔记中的Composite Device包含了三个类,在生成单独的工程时,选择dev_hid_mouse_bm的工程。

    接下来需要添加和删除一些文件

    上一节中生成的工程中,只包含了HID类的相关文件,所以我们需要朝工程内添加两部分的文件,以实现composite device的功能。

    第一部分的文件是USB stack相关的文件,这也是为什么我们需要一个完整的SDK包的原因,从SDK包的middleware\usb\output\source\device\class\目录中将MSC类及CDC类相关的文件添加到工程中。如下图所示。
    21.png
    第二部分文件是由Config Tools生成的文件,这部分文件在MCUX的工程目录下能够找到,将Config Tools生成的文件复制到IAR工程目录下,并且如下图所示将它们添加进工程。
    22.png
    在完成文件的添加后还需要把原本source目录下的文件从工程中去除,以免除本来工程里的文件与工具所生成的文件产生的冲突。由于使用的基工程是HID Mouse的demo工程,还需要将usb目录下的dcd目录下的文件从工程中去除,否则工程会报错。

    需要注意的是,在把所有的文件添加进工程以后,需要在配置里将保存相应头文件的目录添加到include directories中。

    完成上述工作后,即可编译下载,运行效果与前一章的效果一致。

    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32001
    最后登录
    2024-4-9
     楼主| 发表于 2021-10-26 12:54:38 | 显示全部楼层
    顶一下
    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-4-2 08:12
  • 签到天数: 556 天

    [LV.9]以坛为家II

    34

    主题

    5911

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    5676
    最后登录
    2024-4-16
    发表于 2021-10-26 13:25:04 | 显示全部楼层
    十分详细,内容详实
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 1932 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17214
    最后登录
    2024-4-18
    发表于 2021-10-26 14:15:14 | 显示全部楼层
    好好学下,回去实验
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-1-31 09:34
  • 签到天数: 202 天

    [LV.7]常住居民III

    7

    主题

    1515

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3811
    最后登录
    2024-2-19
    发表于 2021-10-26 14:35:34 | 显示全部楼层
    分享的很好  学**
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-4-9 17:01
  • 签到天数: 1478 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92608
    最后登录
    2024-4-9
    发表于 2021-10-26 16:23:36 | 显示全部楼层
    不错,LPC54或者LPC51U系列要是有类似教程就更好了,USB协议太丰富了,学起来还是有些难度的 TS1 - 副本 (2).jpg TS1 - 副本 (3).jpg TS1 - 副本 (4).jpg TS1 - 副本 (5).jpg TS1 - 副本 (9).jpg TS1 - 副本 (6).jpg TS1 - 副本 (8).jpg TS1 - 副本 (7).jpg TS1 - 副本 (10).jpg TS1.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    91

    主题

    2926

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    7799
    最后登录
    2024-4-18
    发表于 2021-10-26 17:22:04 | 显示全部楼层
    学习完了,得自己动手,否则一点也吸收不了。
    加油哦
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12

    主题

    789

    帖子

    1

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2689
    最后登录
    2024-4-4
    发表于 2021-10-28 08:42:10 | 显示全部楼层
    收藏了,必须学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2023-2-1 16:17
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    1

    主题

    11

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    272
    最后登录
    2024-4-18
    发表于 2022-8-19 09:29:27 | 显示全部楼层
    大佬,大佬。打卡学习。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-18 20:07 , Processed in 0.146631 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表