GD32系列笔记七:USBD CDC

目录

一、项目需求

二、USBD调研和传输方案的确定

三、程序源码

 四、总结


一、项目需求

          GD32F150C8T6与PC通信,实现指令传递、应答、外接USB移动硬盘里大文件与PC的双向传输。硬件原理图上预留了一个USB接口。

二、USBD调研和传输方案的确定

     关于USB协议我是一点不懂,从调研开始。从官方用户手册和USBD库使用指南可以得到如下的信息:

        1. USBD:通用串行总线全速设备接口。

        2. GD32F150官方使用手册说明

 

 

 

      3.USBD库使用指南信息

     4. 关于CDC类

     CDC(Communication Device Class)协议,是 USB 组织为各种通信设备定义的 USB 子类。

需要下载官方驱动兆易创新 (gd32mcu.com)USB Virtual COM Port Driver。我个人把CDC当成一个超高速的串口。

  5.方案确定

      由上面碎片化的信息对USBD有了一些感性认知,选择USBD CDC类来实现本项目的需求。

 

三、程序源码

   1.接收函数,官方的收发函数不能直接用在实际项目中,需要做点小调整

   2.发送函数 ,参考了http://t.csdn.cn/VItRm ,根据自己芯片型号和需求稍作调整

 

   3.时钟配置有个小坑,F103官方标准库DEMO时钟默认是108MHZ,而USBD库按照96MHZ,进行2分频来获得48MHZ的USBD时钟,但实际上得到的是54MHZ,超了USBD时钟速率。用GD32F103系列需要修改系统宏定义,GD32F150默认72MHZ不需要改。

 

   4.USBD官方库里systic的中断服务函数缺失(前面串口章节有提到),要补上,不然进入systic的中断会卡死在B.

   5.Handle测试函数实现了GD32根据接收到的PC指令来发送任意字节的数据

 

 

 四、总结

USBD内容丰富而复杂,我目前只是能够使用CDC类,就算是这样我对CDC内部的中断处理逻辑也不是很清晰,这一块需要花点时间去理解,但不深究。USBD从接手到方案的确定到代码的配置,花了几天时间,过程中踩了很多坑,后续会一并总结出来。

   

        

  • 9
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
GD32 USBD DFU是指在GD32系列MCU中使用USB设备固件升级(Device Firmware Upgrade,简称DFU)的功能。引用\[1\]中提到,GD32F303系列MCU只支持USB的DEVICE模式,不支持OTG模式。因此,在使用GD32官方提供的库信息进行开发时,可以直接移植官方的DEMO来实现USB数据传输。 在调试过程中,引用\[1\]中提到遇到了一个问题,每次插上USB后,电脑提示"设备描述符请求失败"。经过多次尝试后,作者偶然间开启了内部RC时钟,竟然可以识别了。这可能是因为内部RC时钟的开启解决了某些与USB通信相关的问题。 另外,引用\[2\]中提到了Longan Nano开发板,它是基于GD32VF103CBT6单片机的极简开发板。该开发板具有128K flash和32K RAM的片上资源。 如果你想使用GD32 USBD DFU功能进行固件升级,可以按照引用\[3\]中的步骤进行操作。首先,生成helloworld.bin文件,然后进入下载模式,使用dfu-util工具进行下载。下载完成后,连接串口,波特率设置为115200,按下reset键即可看到打印信息"Hello World From Nuclei RISC-V Processor!"。 总结来说,GD32 USBD DFU是GD32系列MCU中使用USB设备固件升级的功能。在使用过程中,可能会遇到一些问题,但可以通过调试和尝试不同的设置来解决。 #### 引用[.reference_title] - *1* [GD32 USB调试、DFU过程问题](https://blog.csdn.net/u012260580/article/details/108904876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [1.1 ubuntu环境下搭建gd32vf103](https://blog.csdn.net/ldl617/article/details/120307412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值