USBCDC:把STM32的USB当串口使用
warmonkey2011/07/11电子技术 IP:广东
USB驱动程序很难写?串口线个头太大?PL2303花钱太多?试试看USBCDC吧
它可以让你把USB当成串口操作,不管对上位机(PC程序)还是下位机(单片机)来说都是一样的。

硬件是STM32的USB,但连接在电脑上之后,会被识别为串口。其稳定性较市场上的USB转串口线要好得多,可以用于产品中。
未命名.jpg

使用方法:
1.先根据你的硬件,修改/project/user/HAL/USBCDC/hw_config.c,此文件对USB进行初始化

2.API调用说明:
先初始化STM32,再调用USBCDC_init();
调用USBCDC_ready()如果返回真(非零),表示连接已建立,可以通讯
此时调用USBCDC_senddata和USBCDC_recvdata,即可收发数据。
USBCDC_disconnect()可以关断连接,令USB模块休眠,降低功耗
如果要重新打开连接,调用USBCDC_connect();这个函数会激活USB模块

3.PC端驱动程序安装,可以使用附带程序,也可以让系统自动上网查找。目前仅测试过windows xp/vista/7,linux未测试过。
这个驱动程序实际上是使用了系统自带的XXXXXXXXXs,安装的只是一个inf设置文件。

4.上位机(PC)程序中,对串口直接操作即可,无需考虑USB协议之类的问题

5.例子的代码在/project/user/main.c中,这个例子模拟了串口Tx和Rx短路在一起的情况,也就是说,电脑会立刻收到自己刚刚发出的数据。
2.jpg

6.异常处理:
使用JLink之类的调试器时,USBCDC可能出现异常,退出调试模式并复位STM32后,问题会解决。
如果无法找到串口,或者程序无法识别,或者是通信异常,请关闭应用程序,然后拔掉USB,再插好。
最好是先插USB,再打开程序。停用时,先关闭串口,再拔掉USB(这点非常重要),否则下次可能找不到串口。这个可能是Windows驱动导致的bug

已在STM32Minikit开发板测试通过,主芯片是STM32F103C8T6
未在互联型芯片(STM32F107****)上测试过

---enjoy it


attachment icon USBCDC_STM32.rar 580.30KB RAR 997次下载

attachment icon vcpdriver_v1.zip 5.19MB ZIP 747次下载
+25  科创币    zw1235    2013/08/06 高质量发帖
+1  学术分    科创网    2011/07/11 支持原创教程
加载全文
来自:电子信息 / 电子技术
79
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
warmonkey 作者
10年3个月前 IP:广东
727407
引用 wtch519361:
我也在学习USBCDC类,能不能把整个项目发我看看?
project/user/ewarm那个文件夹里面就是
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
areak
10年3个月前 IP:浙江
728238
下载不了啊
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yjiangxiaolin
10年2个月前 IP:北京
732318
先看看,我自己写的找不到驱动.
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yjiangxiaolin
10年2个月前 IP:北京
732319
项目中使用,希望稳定
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
wtch519361
10年2个月前 IP:浙江
733121
楼主,您好,我看了您写的关于虚拟串口的例程, 您基于的库时间比较靠前,我现在想基于STM32_USB-Host-Device_Lib_V2.1.0这个库,我在实现通信的时候模仿您的增加APP_TX_Buffer[]和APP_TX_ptr_in,APP_TX_ptr_out是实现数据接收,但是我现在怎么改都收不到数据,发送是可以的,能不能麻烦您给看下..
attachment icon USB_DEVICE_VCP.rar 7.11MB RAR 44次下载
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
fengyewuyu
9年10个月前 IP:江苏
756949
我想下载
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
fengyewuyu
9年10个月前 IP:江苏
757570
怎么测试这个程序的速度
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
球球来也
9年10个月前 IP:湖北
762056
帅,顶一个。正好用得到。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
lzp20
9年7个月前 IP:四川
774926
正在测试
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
chengweiquan
9年7个月前 IP:广东
775148
thanks!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
kevinrobot
9年7个月前 IP:广东
775735
你这样的写法会出现快速数据传输下数据覆盖的问题!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
soledad614
9年7个月前 IP:山东
777857
太感谢楼主了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
特种兵2015
9年6个月前 IP:安徽
779572
楼主我用的是st-link,主控芯片也是stm32f103c8t6,下了你给的程序,没有看看到工程文件 ,没发进行调试,求楼主发下工程文件,谢谢!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金坷居士
9年6个月前 IP:澳大利亚
780775
STM32的USB其实还可以做成USB HID,这样插到Windows之后就被识别成标准的HID设备,连驱动也不需要装,Linux估计也一样,反正设备和鼠标键盘差不多了
直接根据VID PID识别USB设备
USB CDC还需要驱动和选串口号~
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey作者
9年6个月前 IP:广东
780794
引用 金坷居士:
STM32的USB其实还可以做成USB HID,这样插到Windows之后就被识别成标准的HID设备,连驱动也不需要装,Linux估计也一样,反正设备和鼠标键盘差不多了
直接根据VID PID识别USB设备
USB CDC还需要驱动和选串口...
速度捉急啊亲,HID设备只有64kB/s,CDC有1.1MB/s
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
金坷居士
9年6个月前 IP:澳大利亚
780809
引用 warmonkey:
速度捉急啊亲,HID设备只有64kB/s,CDC有1.1MB/s
被发现了hhhhhhh 这也确实素个问题
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
高飞哥
9年4个月前 IP:江西
791124
为什么下载后只有28kb,不能解压
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jatamatadada
9年4个月前 IP:广东
792771
谢谢分享
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
sunrc
9年3个月前 IP:河北
794896
xuexi
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
wangqiangeek623
9年3个月前 IP:北京
795799
谢谢楼主,好资料!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
376262974
9年2个月前 IP:澳门
798556
最近在研究USBCDC正好研究研究
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hyzhau
9年2个月前 IP:上海
799498
挺不错的学习啦
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
crazybaba
9年0个月前 IP:山东
805032
太感谢了!!!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
lisc0820
8年11个月前 IP:上海
810221
感谢分享。。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
coolbird007
8年11个月前 IP:广东
810451
我觉得直接用HID类,驱动都不用写了。也不存在端口分配占用的问题,多个相同设备可以管理。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey作者
8年11个月前 IP:广东
810456
引用 coolbird007:
我觉得直接用HID类,驱动都不用写了。也不存在端口分配占用的问题,多个相同设备可以管理。
速度太慢,限制了64kB/s
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
unknow10000
8年10个月前 IP:吉林
813036
不错啊,挺好的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hclin
8年9个月前 IP:台湾
817807
很有参考的价值。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
linzhiwen
3年11个月前 IP:广东
889349

非常感谢分享!

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
warmonkey
学者 机友
文章
363
回复
8003
学术分
12
2008/10/11注册,2时46分前活动

Cubesat

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}