diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000141.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000141.png new file mode 100644 index 0000000000000000000000000000000000000000..ce709ec44766cf3dd9505909f2ee7705a839524b Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000141.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000243.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000243.png new file mode 100644 index 0000000000000000000000000000000000000000..f322d89b31f0ddfddcfaac337b6a76f685482ea9 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000243.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000450.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000450.png new file mode 100644 index 0000000000000000000000000000000000000000..ccaa6f2920814f81f3ffc85c6f00986a22462bf7 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000450.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000514.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000514.png new file mode 100644 index 0000000000000000000000000000000000000000..c914846c7a38cec5804328d04fdc810d0ae3a7c8 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000514.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000548.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000548.png new file mode 100644 index 0000000000000000000000000000000000000000..0f79108bd449d31020866991374ec447e5bb08b0 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000548.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000818.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000818.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4d12596b7cde64510c03f70fcefeb634f403a3 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000818.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000913.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000913.png new file mode 100644 index 0000000000000000000000000000000000000000..ddd2e354c48620935dab28113d0e083c02cda227 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210727000913.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810094821.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810094821.png new file mode 100644 index 0000000000000000000000000000000000000000..9789064b22fa973a44ec61817cb24f551a615cba Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810094821.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095234.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095234.png new file mode 100644 index 0000000000000000000000000000000000000000..74f40f344db4c82239ce4451443f1d0ae9eab557 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095234.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095429.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095429.png new file mode 100644 index 0000000000000000000000000000000000000000..e40c4638032deaad0d8f9b39f30008eef64f5773 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095429.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095509.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095509.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f85a64d91b2f1f68cffd518831865e4e62e2b0 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095509.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095847.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095847.png new file mode 100644 index 0000000000000000000000000000000000000000..87792cbc0b2491909575ccc67a4a3f0973584f77 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810095847.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810100012.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810100012.png new file mode 100644 index 0000000000000000000000000000000000000000..d450253f9db0f0fdd0e06994afca42cd119ed167 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810100012.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810100923.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810100923.png new file mode 100644 index 0000000000000000000000000000000000000000..dc7f87250abaca91f3377d0e5e1786ca22fe4759 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810100923.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810101504.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810101504.png new file mode 100644 index 0000000000000000000000000000000000000000..e35036b00f4991c19764e7eb262c831bd56e4fa2 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810101504.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810102741.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810102741.png new file mode 100644 index 0000000000000000000000000000000000000000..0dac215c3330d1e4b83967d6038ff17447ccde83 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810102741.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810102844.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810102844.png new file mode 100644 index 0000000000000000000000000000000000000000..88f8c1a935a536e1ff1e1e83b3f4535f47a47192 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810102844.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810103253.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810103253.png new file mode 100644 index 0000000000000000000000000000000000000000..1686be7d577d6459921db768e0e667149289d56e Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/20210810103253.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/image-20210909094324466.png b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/image-20210909094324466.png new file mode 100644 index 0000000000000000000000000000000000000000..fadb7fd5b730e38419002e92409c253e2a01f267 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/figures/image-20210909094324466.png differ diff --git a/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/usb-cdc-stm32l496.md b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/usb-cdc-stm32l496.md new file mode 100644 index 0000000000000000000000000000000000000000..92ec9b9adda697a671a39dc27a264ff4404762e8 --- /dev/null +++ b/rt-thread-version/rt-thread-standard/application-note/driver/usbcdc/usb-cdc-stm32l496.md @@ -0,0 +1,144 @@ +# STM32L496 USB CDC 适配 + +## 开发板简介 + +[官网资料链接](https://www.st.com/en/evaluation-tools/nucleo-l496zg.html) + +- 采用 LQFP144 封装的 STM32 微控制器 +- 3 个用户 LED +- 2 按键(用户和复位按钮) +- 32.768 kHz 晶振 +- USB OTG +- 板连接器:USB 与 Micro-AB 或 USB Type- C + +下图是开发板的 layout 图,从下图我们可以了解到该开发板有哪些资源可以使用,这里我们重点关心 USB 外设资源,接下来我们一起看下具体有那些外设资源 + +![](figures/20210727000141.png) + +![](figures/20210727000243.png) + +## 外设简介 + +### LED + +板载 3 个 LED 灯,使用的 GPIO 资源如下图所示 + +| **LED** | **GPIO** | +| ------- | -------- | +| LED1 | PC7 | +| LED2 | PB7 | +| LED3 | PB14 | + +![](figures/20210727000450.png) + +### BTN + +板载一个按键,连接 GPIO 的 PC13,另外还有一个复位按键 + +![](figures/20210727000514.png) + +### LPUART + +低功耗 UART,从下图可以知道 TX,RX 对应的 GPIO 引脚分别 PG7 和 PG8 + +![](figures/20210727000548.png) + +### USB + +该开发版板载一个 USB OTG 外设,该 USB OTG 既可以作为 USB HOST,也可以作为 HOST DEVICE,注意一下下图红框处的内容,特别注意一下当将该 USB 口作为 HOST DEVICE 使用时,需要将 JP4 跳冒接上 + +![](figures/20210727000818.png) + +![](figures/20210727000913.png) + +## USB CDC 虚拟串口功能实现 + +开发板上的跳冒接线如下图,测试 USB Device 时,需要将 JP4 跳冒接上,本移植方式,应该也适用其他 STM32 的 BSP + +![image-20210909094324466](figures/image-20210909094324466.png) + +### 配置 usb 引脚 + +确认当前已经使用 cubemx 完成了 USB 引脚,时钟等相关配置 + +![](figures/20210810094821.png) + +### 修改配置 Kconfig + +打开 `board/Kconfig` 添加如下代码 + +``` + config BSP_USING_USBD + bool "Enable OTGFS as USB device" + select RT_USING_USB_DEVICE + default n +``` + +![image-20210810095233284](figures/20210810095234.png) + +### 使能 usbd cdc 功能 + +#### 使能 usbd 驱动框架 + +![](figures/20210810095429.png) + +#### 使能 usbd 驱动 + +![](figures/20210810095509.png) + +### 编译,并下载工程 + +- 在 BSP 工程中执行 `scons –target=mdk5` + + ![](figures/20210810095847.png) + +- 打开 mdk 工程,下载固件,观察设备管理器,是否多出了一个串口,usb cdc 功能添加成功 + + ![](figures/20210810100012.png) + +## USB CDC 虚拟串口功能测试 + +经过上面的步骤,我们已经成功将 USB CDC 设备类给驱动起来了,接下来,我们需要测试该 CDC 虚拟串口是否可以正常工作 + +### 作为普通的 uart 使用 + +#### 修改步骤 + +- 工程中添加如下测试代码 + + ``` + https://github.com/RT-Thread-packages/peripheral-sample/blob/master/uart_sample.c + ``` + +- 修改串口名称为 `vcom` + + ![](figures/20210810100923.png) + +#### 测试串口读写 + +- 设备上电,等待虚拟串口枚举成功 + +- 打开串口工具,` 开启流控 DTR` + +- 在 finsh 中输入 uart_sample 命令,运行 uart sample,观察串口工具是否有输出 + +- 在串口工具中发送 `aaaaaaa`,看是否有有 `bbbbbbbb` 等输出 + + ![](figures/20210810101504.png) + +### CDC 作为 console 功能测试 + +#### 修改步骤 + +- 将 `rt_console_set_device(RT_CONSOLE_DEVICE_NAME);` 放到 main 函数开头的地方 + + ![](figures/20210810102741.png) + +- ![](figures/20210810102844.png) + +- 修改 rtconfig.h 中的 `RT_CONSOLE_DEVICE_NAME` 为 `vcom` + +#### 测试 console 串口命令交互 + +![](figures/20210810103253.png) +