5. STM32L496 USB CDC适配

5.1. 开发板简介

官网资料链接

  • 采用 LQFP144 封装的 STM32 微控制器

  • 3 个用户 LED

  • 2 个用户和复位按钮

  • 32.768 kHz 晶振

  • USB OTG 全速或仅限设备

  • 板连接器:USB 与 Micro-AB 或 USB Type- C

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210727000141.png

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210727000243.png

5.2. 外设简介

LED

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210727000450.png

BTN

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210727000514.png

LPUART

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210727000548.png

USB

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210727000818.png

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210727000913.png

这里注意一下,当使用USB Device功能时,需要将JP4跳冒接上

5.3. USB CDC 虚拟串口功能实现

开发板上的跳冒接线如下图,特别注意下,测试USB Device时,需要将JP4跳冒接上,本移植方式,应该也使用其他STM32的BSP

配置usb引脚

确认当前已经使用cubemx完成了USB引脚,时钟等相关配置

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810094821.png

修改配置Kconfig

打开board/Kconfig 添加如下代码

    config BSP_USING_USBD
        bool "Enable OTGFS as USB device"
        select RT_USING_USB_DEVICE
        default n 

image-20210810095233284

使能usbd cdc功能

使能usbd驱动框架

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810095429.png

使能usbd 驱动

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810095509.png

编译,并下载工程

  • 在BSP工程中执行scons –target=mdk5

    https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810095847.png

  • 打开mdk工程,下载固件,观察设备管理器,是否多出了一个串口,usb cdc功能添加成功

    https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810100012.png

5.4. USB CDC虚拟串口功能测试

经过上面的步骤,我们已经成功将USB CDC设备类给驱动起来了,接下来,我们需要测试该CDC 虚拟串口是否可以正常工作

作为普通的uart使用

修改步骤

  • 工程中添加如下测试代码

    https://github.com/RT-Thread-packages/peripheral-sample/blob/master/uart_sample.c
    
  • 修改串口名称为vcom

    https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810100923.png

测试串口读写

  • 设备上电,等待虚拟串口枚举成功

  • 打开串口工具,开启流控DTR

  • 在finsh中输入uart_sample命令,运行uart sample,观察串口工具是否有输出

  • 在串口工具中发送aaaaaaa,看是否有有bbbbbbbb等输出

    https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810101504.png

CDC作为console功能测试

修改步骤

  • rt_console_set_device(RT_CONSOLE_DEVICE_NAME);放到main函数开头的地方

    https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810102741.png

  • https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810102844.png

  • 修改rtconfig.h中的RT_CONSOLE_DEVICE_NAMEvcom

测试console串口命令交互

https://gitee.com/chenyingchun0312/article-images/raw/master/Typora/20210810103253.png