CDC使用参考

Version 1.1


1. 概述

用户在无法使用网络的同时又有一些通信上的需求,可以利用usb接口,将其枚举为串口设备。usb串口没有波特率、校验位和停止位的概念,无需进行这些参数的设置。

USB CDC应用Demo路径:rtk/proj/sc/application/usb_gadget_app/class/src/cdc_app.c

USB CDC驱动路径:rtk/proj/sc/customer/usb_gadget/class/src/cdc_acm.c


2. 配置


2.1. mak配置

在相应的product config中修改mak文件的配置,要保证CONFIG_USB_GADGET_SUPPORT = TRUE以及CONFIG_USB_GADGET_SSTAR_SUPPORT = TRUE基础USB编译打开。

启用选项CONFIG_USB_GADGET_CDC_SUPPORT = TRUE

如果需要一启动便初始化CDC,需要配置CONFIG_USB_GADGET_APP_CUR_CLASS = "4"

注意mak修改完成后需要make clean下再make


2.2. 调试

  1. 打开设备管理器,端口列表下新增串行设备

  2. 使用串口助手或者xshell打开对应的串口号,波特率及校验位选择默认值即可

  3. 命令行输入:cdc_send_test

  4. 使用串口助手打开,则显示接受的数据如下:

    使用Xshell打开串口,则显示接受数据如下:

  5. 串口助手发送数据,rtos接受数据并显示其ASCII码值

    ​使用xshell打开串口,则发送数据时直接在窗口输入1(xshell不显示输入的数据),rtos接受数据并显示其ASCII码值


2.3. API 接口

code所在路径:

rtk/proj/sc/application/common/inc/st_cdc_acm.h

kernel/rtk/proj/sc/application/common/src/st_cdc_acm.c

  1. CDC串口的初始化及枚举过程和反初始化需要调用如下两个接口

    MI_BOOL ST_Cdc_Acm_Init(struct cdc_acm_user_ops *ops);

    MI_BOOL ST_Cdc_Acm_DeInit(void);

  2. 发送数据,其中buf指向要发送的缓存,size为发送数据长度,单位Byte

    MI_BOOL ST_Cdc_Acm_Send_Packet(MI_U8 *buf, MI_U32 size);