muyichuan2012 发表于 2025-7-25 18:04

AN0274 基于TinyUSB的RNDIS主机示例


AN0274 基于TinyUSB的RNDIS主机示例

前言
本使用指南描述如何使用基于TinyUSB的RNDIS主机示例
支持型号列表:
AT32F435 系列
AT32F437 系列


AN0274源码下载链接
https://www.arterytek.com/file/download/2662

目录
概述 ........................................... 5
环境安装 ......................................... 6
VSCode 安装 ..................................... 6
Python 安装 ................................... 6
GCC 编译器安装 ................................. 7
Make 安装 ......................................... 7
编译指南 ......................................... 9
硬件环境 .......................................... 9
TinyUSB 源码目录简介 ..................... 9
Example 编译方法 ............................. 10
RNDIS 案例使用 ............................... 13
硬件环境 ..........................................13
代码介绍 ..........................................13
实验现象 ........................................... 14


1 概述
本文档专为RNDIS主机所编写,搭配AT-START-F435/437开发板与4G模块使用,可实现AT32F435/437MCU通过USB接口连接4G模块进行上网的功能,AT32其他型号或USB其他Class(如MSC/CDC/HID等等),请参考AN0254_TinyUSB_On_AT32_Application_Note。
RNDIS HOST适配清单:


注意:本文档附带源码,基于tinyusb.0.18.0版本,其路径为:
SourceCode\AN0274_SourceCode_v2.x.x\tinyusb-rndis-host,可直接编译下载运行


2 环境安装
2.1 VSCode 安装
VSCode 是微软开发的代码编辑器软件,可免费下载和使用,登录VSCode 官网即可下载安装文件,
注意在windows 环境下需要下载对应的版本。
图1. VSCode 官方下载


下载安装后打开VSCode 界面如下图所示:
图2. VSCode 界面


注意:安装完成后需要将VSCode 安装路径加入到环境变量中,后续使用会更加方便。上图中的红色框内为安装的插件,C/C++和Cortex-debug 必须安装,其他可选择性安装即可。


2.2 Python 安装
Python 安装包路径为SourceCode\AN0274_SourceCode_v2.x.x\software_tool,也可访问python 官网获取,安装完成后需要添加到环境变量。

图3. python 添加环境变量


2.3 GCC 编译器安装
GCC(GNU Compiler Collection,GNU 编译器套件)是由GNU 开发的编程语言编译器,其安装包路径为SourceCode\AN0274_SourceCode_v2.x.x\software_tool,也可访问其官网获取。
双击安装包进行安装即可,安装完成后需要将路径添加到环境变量:
图4. gcc 添加环境变量



2.4 Make 安装
GNU Make 是一个用来控制可执行文件和其他一些从源文件来的非源代码文件版本的软件,Make 可以从一个名为makefile 的文件中获得如何构建程序的依赖关系。其安装包路径为
SourceCode\AN0274_SourceCode_v2.x.x\software_tool,也可访问其官网获取。

双击安装包进行安装即可,安装完成后需要将路径添加环境变量。
可打开windows 高级系统设置查看上述工具是否成功添加环境变量,若没有,可以手动添加:
图5. 手动添加环境变量



3 编译指南
3.1 硬件环境
对应 AT-START-BOARD 搭配 USB 数据线,比如下图AT-START-F437开发板。
图6. AT-START-F437 开发板



注意:AT-START-F437 板配备资源的详细说明,请参考《UM_AT_START_F43x_Vx.x》,其链接为:https://www.arterytek.com/file/download/2154。


3.2 TinyUSB 源码目录简介
TinyUSB源码路径为SourceCode\AN0274_SourceCode_v2.x.x\tinyusb-rndis-host,其目录结构如下图所示,此tinyusb源码可在支持的AT32 MCU上运行。
图7. TinyUSB 源码目录结构



Example:示例代码,可直接编译下载到对应板子上运行。
Hw:MCU和BOARD所需的依赖,需要通过get_deps.py脚本下载或手动下载。

Lib:第三方库依赖,如FreeRTOS,需要通过get_deps.py脚本下载或手动下载。
Src:USB底层和中间层。


3.3 Example 编译方法
使用vscode打开tinyusb源码,example文件夹内的device文件夹是MCU作为USB设备身份的示例代码,以device文件夹内的cdc_msc_freertos示例代码为例,参照如下步骤运行:
1. 在终端中跳转到想要编译的工程目录下,如图所示:
图8. 跳转到待编译的工程目录


2. 输入指令“make BOARD=对应的板子”进行编译:
图9. 使用make+gcc 进行编译


若之前编译过,需要输入指令“make BOARD=对应的板子 clean”清除上次编译产生的文件,再输入“make BOARD=对应的板子”进行编译,编译成功后会生成bin文件:
图10. 编译成功后生成bin 文件


3. 烧录到MCU即可,可以使用雅特力官方的烧录工具ICP进行烧录:
图11. 使用ICP 烧录


4. 烧录完成后,用数据线将AT_START_BOARD的OTG1接口与主机(PC)进行连接,可观察到
AT_START板LED2闪烁,PC识别到U盘和虚拟串口。

图12. 电脑识别U 盘

图13. 串口助手测试虚拟串口


4 RNDIS 案例使用
4.1 硬件环境
AT-START-F435/437和已安装SIM卡可正常联网的4G模块(需支持RNDIS):
图14. AT-START-F437 开发板



4.2 代码介绍
案例位置:tinyusb-rndis-host\examples\host\rndis_netboard_init():对MCU 以及开发板进行初始化配置,包括配置系统时钟,USB 时钟,配置串口和LED 等,串口默认使用3M 波特率,当前apb 时钟配置下,波特率范围为2197-9Mbit/s:
图15. 串口波特率配置


lwip_init():lwip 初始化
tusb_init():usb 初始化
tuh_task():usb 主机任务,比如设备连接与断开处理等
rndish_task():rndis 控制传输,包括SEND(GET)_ENCAPSULATED_COMMAND(RESPONSE)
led_blinking_task():led 闪灯,当ip 地址获取成功后通过tcp 连接baidu.com
http_connection_callback():tcp 连接成功后的回调函数


4.3 实验现象
编译rndis_net 工程,下载到开发板,打开串口助手,将4G 模块插入开发板USB HOST 端口,可
以观察到串口助手输出设备运行情况:
图16. 实验现象










我是一颗胖蘑菇 发表于 2025-7-30 10:48

这个AN0274示例对于需要在AT32F435/437系列上实现USB RNDIS主机功能的开发人员来说非常有用。我已经按照指南安装了所有必要的软件,并且成功编译了示例代码。

复古留声机 发表于 2025-7-30 17:03

这个AN0274指南很详细,提供了基于TinyUSB的RNDIS主机示例,对于AT32F435/437系列的开发很有帮助。

快乐制造机 发表于 2025-7-30 21:51

这个AN0274指南很全面,提供了详细的环境安装和编译指南,对于AT32F435/437系列的开发人员来说非常有帮助。
页: [1]
查看完整版本: AN0274 基于TinyUSB的RNDIS主机示例