USB转串口,大家经常用到,市面上也有很成熟悉的产品,CH341就是其中之一。7 q% c b8 U S5 x 而且ST的demo也有相关的例子(USB virtual com port ),我们直接用ST的VCP不就完了,为什么还要去模拟CH341呢?% C& c U& i' @7 D9 _ 答案有两个:3 n/ k+ u: n& R" \" V3 o% V1 {% x' ~& N% ^ 1、ST的USB virtual com port驱动没有经过微软签名,安装不方便。(特别是WIN8)& Z2 T8 i! M) d2 z7 _ 2、作者无聊练手。# }! \/ a( H+ z$ Y 话不多说,先上原理图: Q9 Y# D; U0 S0 g- L 再上开源地址:http://github.com/blackmiaool/STM32_USB_CH341.git5 ^+ i' P8 V- `0 E) [ O) _# n 喜欢的朋友自己下吧。6 ~0 B1 s4 F: S# P$ w- t5 _ |
最全USB HID开发资料,悉心整理一个月,亲自测试
USB Audio设计与实现
【MCU实战经验】+STM32F107的USB使用
圈圈发布USB图书第二版有感,以及分享一些我学习USB过程...
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
STM32 USB-HID通信移植步骤STM32 USB HID键盘例程
【经验分享】在进行 USB CDC 类开发时,无法发送 64整数倍的数据
如何让CDC类USB设备批量接收64字节以上数据
用STM32F4实现的USB摄像头UVC,配合上位机可识别车牌
STM32 USB CDC 虚拟多串口
使用这个固件,可以使用CH341的驱动,不知这么说你明白否?
6 K" [# Q& E/ v! ^/ I( S" e; [9 C4 u
# [9 @) V8 n$ P, t
9 V! p7 _! x& F \$ Y
$ l6 h( V6 F2 l) Y+ k
4 w+ k( l/ Y6 g+ F& Y8 Z
3 V* w5 [4 W2 k& N z& x6 C- P3 `
请把错误信息发上来。
9 u$ j6 B! F( L" V9 m; S$ n
8 ^ ~" f0 W v$ l0 w
1 f3 O8 s; i! u# K" U1 P
1 L, x; {1 l% p- y; c( ?, Q- e
8 Y: R( D c3 R" c
6 L q1 i8 b9 L% T9 n
- x! v: w; j: z& E; V
用3.61版本的库,收集ST社区的代码实现了USB转3路CDC串口。只有HAL库版本,实现了DTR、Break
信号控制,其它版本可能是官方例程没有定义相应的函数,上位机发出break信号时,总是发现错误。$ Y* W( T. E% L. l* v# [: `
现在不知道CH341的驱动是否支持多串口,另外,固件库的版本太多,代码移植就非常困难,HAL驱动) }" G, T! C3 `/ R; e# z
移植到GCC,现在都比较麻烦,因为CMIS层麻烦。/ }4 a5 d/ x1 \/ D
' G- D1 B. I3 C" V8 A, K4 }5 _: v
自己测试下便知,串口的速度,本身就那样,只是方便而已。
是USB协议要求的,1.5K上拉在D+时表示是全速设备,在D-表示不是全速设备。
这个错误,不解释。