GD32——虚拟串口实验(USB-CDC)

前言:使用GD32F303单片机,使用其外设USB的CDC类实现虚拟串口的收发数据,本实验主要讲USB实验如何基于一个官方的Demo,移植成自己的一个完整工程(附上源码例程)。

(理论部分后续再讲)

MCU:GD32F303CBT6

一、移植

1、准备

(1)、找到相应的路径下的usb_cdc工程,我使用的是IAR工程,所以选择EWARM文件夹下的工程文件,双击打开。

(2)、打开CDC_ACM.eww工程之后再IAR里面可以看到整个工程的架构、使用到的文件,如图。

可以看到移植USB cdc工程主要就是使用到了USBD类文件、设备文件和驱动文件这几类。GD的官方有吧USB库封装在同一个文件夹内,方便移植。

(3)、在工程右键键打开包含文件的文件夹,可以知道具体使用的是哪一个文件夹下面的文件。

可以看到主要就是使用的是《GD32F30x_usbd_library》 文件夹下面的文件

使用到的文件:

①、...\GD32F30x_Firmware_Library_V2.2.0\Firmware\GD32F30x_usbd_library\class\device\cdc

cdc_acm_core.ccdc_acm_core.h

②、...\GD32F30x_Firmware_Library_V2.2.0\Firmware\GD32F30x_usbd_library\device

usbd_core.c、usbd_core.h

usbd_enum.c、usbd_enum.h

usbd_pwr.c、usbd_pwr.h

usbd_transc.c、usbd_transc.h

③、...\GD32F30x_Firmware_Library_V2.2.0\Firmware\GD32F30x_usbd_library\usbd

usbd_lld_core.c、usbd_lld_core.h

usbd_lld_int.c、usbd_lld_int.h

2、复制移植为一个新工程

(1)创建一个文件夹:

将上面说到的文件移植到文件夹内

(2)、双击工程之后,需要将一下的源文件删除,然后重新加入,复制移植过路径不一样了。

(3)右键Option打开工程管理,将头文件路径重新加入,并换为相对路径的方式

重新加载的路径为:

(4)、最后编译0错误就可以了

二、实验

1、烧录到主板吗,可以看到代码里面的主循环逻辑就是将接收到的数据再发送出来,类似与普通的串口数据收发。

2、使用串口调试助手,打开后可以显示出COM口序号,我这里是19:COM19:GD32 Virtual Com Port.(设备管理器上也可以看到),如果没看到就需要安装一下官方的虚拟串口驱动。

3、修改设备信息,在linux下看一看到虚拟串口的信息,这些信息可以修改设置:

在cdc_acm_core.c文件内:主要是修改结构体cdc_desc内的一些成员信息

(1)、其中这两项是可改的:

三、USBD寄存器

这里只介绍两个寄存器,一个是控制寄存器(USBD 控制寄存器 (USBD_CTL))、另一个是状态寄存器(USBD 状态寄存器 (USBD_STAT))。

当我们初始化完下载程序到主板之后,遇到USB CDC的端口信息没有在串口调试助手上显示时,这个时候我们就需要去看看USBD的相关寄存器了,看是软件这边没有调整好还是硬件(D+、D-)方面的问题。

一般情况下,D+/DP引脚是需要接入一个上拉电阻(1.5KΩ)的,否则会出现检测不到CDC端口的情况。

https://yuanbao.tencent.com/bot/app/share/chat/5Xfj2iJKt9ow

1、USBD 控制寄存器 (USBD_CTL)

这里我们重点关注 位1 CLOSE(关闭状态),可以知道的是,USB CDC或其他USB设备被成功初始化之后,这个位是要被置0的。

这个位就可以判断我们是否成功初始化USB CDC。

2、USBD 状态寄存器 (USBD_STAT)

位15(RX_DP)和位14(RX_DM),可以看到当前的D+和D-引脚状态,正常情况下D+是高电平、D-是低电平,LOCK也可以用于判断是否连接上USB线,如下图所示:

综上,如果正常初始化完,串口调试助手上还是没有显示端口信息,可以查看这两个寄存器的相应位状态,进行判断是硬件问题还是软件问题!!!

参考:AN049_GD32_USBD_Firmware_Library_User_Guide_Rev1.0_CN.pdf

工程:GitHub - YZX-11/GD32F303-usb_cdc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值