12885|42

58

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

基于STM32F103的USBVCD代码 [复制链接]

ST官网上的USB VCD例程总是有问题

我改了一个,今天测试了下,115200BPS下10MB字节无差错。应该还可以了。

放在这里大家共享下。

VCD V2.0.0.zip (309.63 KB)

这个例子我在ST的新三合一板子上跑的,这块板子的USB上拉电阻的使能管脚是PA8,所以如果要在其他板子上跑,要根据自己的板子改下这个使能管脚。


还有,这个例子是在IAR5.5上改的,所以建议在IAR5.5下打开项目,如果是IAR5.5以下版本,可能会丢失项目的配置信息。
此帖出自stm32/stm8论坛

最新回复

                                 说的是,挺有道理的。本来也研究过虚拟串口。  详情 回复 发表于 2010-12-31 14:04
点赞 关注
 

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 怎么用呀,还是顶一下,最好上图或说明
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 如果把同一类型的设备只用同一个串口,你如何区分不同的设备?
此帖出自stm32/stm8论坛
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 收下了,感谢分享。
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
vcd是什么意思

老版本的某个破开发板带的代码竟然usb转串口有问题.已经找到.

新版本的下载了.还没试试.
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

6
 
用同一个序列号就可以了。
不过这样弄不能同时存在。
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
說明一下

本例程實現了一個USB虛擬串口

上位機可以通過串口應用程序如HyperTerminal與設備通信。

上位機通過USB發給STM32的數據,STM32將立刻通過USART1發給外部的其他設備。外部的其他設備通過USART1發給STM32數據,STM32在每5個SOF(即每5毫秒)后,檢查是否有收到USART1的數據,如有數據則通過USB發送給上位機。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 楼主能给个相应的说明就更好了
此帖出自stm32/stm8论坛
 
 
 

回复

49

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 很不错,多谢共享
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

10
 
对一次调用write发送的数据长度有限制吗?
比如,我一次调用串口write,写10M的数据。
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 给个说明吧
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 
对一次调用write发送的数据长度有限制吗?
比如,我一次调用串口write,写10M的数据。
对于设备来说,一次USB通信最多收到64字节数据,然后通过USART发送出去,在USART发送期间,设备将一直以NAK响应主机,直到USART发送64字节数据完毕,设备可以接收下一个数据包。

所以如果USART很慢,比如2400bps,这个NAK期间会比较长,我不太清楚USB虚拟串口驱动,可以容忍多长时间的NAK响应。
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

13
 
给个说明吧
怎么样的说明?

关于代码流程吗?还是如何使用?
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 可以把代码流程和如何使用都简单说说
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

15
 
                                 很不错的资料,楼主能写个简单的使用说明就更好了
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(中级)

16
 


最近流行PK,偶们也PK一下?

> 对于设备来说,一次USB通信最多收到64字节数据,然后通过USART发送出去,在USART发送期间,设备将一直以NAK响应主机,直到USART发送64字节数据完毕,设备可以接收下一个数据包。
这样的效率太低,看一下我的方案:
1K发送缓冲,1K接收缓冲,环形堆栈。
发送缓冲满后,NACK主机,主机可以设置串口的字节延时。
USB收发都是用双缓冲。
稳定921600bps。
支持一些扩展命令,比如,串口下载MTK固件时,需要支持BREAK命令。

PK一下性能吧?
其实,按照USB FS的1ms轮训,已经大概可以算出来了。
921600下,1ms的单向数据量,已经超过64字节。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

17
 
最近流行PK,偶们也PK一下?

> 对于设备来说,一次USB通信最多收到64字节数据,然后通过USART发送出去,在USART发送期间,设备将一直以NAK响应主机,直到USART发送64字节数据完毕,设备可以接收下一个数据包。
这样 ...
你是高手啦,我们就探讨探讨

我当初做这个代码的时候,只考虑了115200bps的波特率,平均到每毫秒是15个字节,而且对于上位机可以用NAK来做流量控制,所以没有对USB OUT的传输做缓冲,直接收直接发,这样代码简单,一目了然,对于115200的传输来说,也足够了。当然如果USART上升到921600BPS,那肯定是你的方案效率更高,而且可以使能STM32F103的USB双缓冲BULK传输,效果会更好。

对于USB IN传输,我也是只考虑了115200BPS的波特率,所以每5个SOF才检查一次USART收到的数据,如果有数据,就启动USB上传到上位机。由于USART的传输具有突发性,并且我不想做流量控制,所以对于IN的传输,我做了缓冲。我考虑这样是对STM32F103的压力小,主芯片完全可以去处理其他事情。当然,如果速度上升到了921600BPS,间隔的5个SOF就太长了,可以每个SOF都检查下数据。


总之,这只是个DEMO的例程,可以修正提高的地方还很多,欢迎各路高手来踩点。


楼上的需要说明的各位,等我有时间了我来做个说明,希望可以连带大致讲一下STM32的USB库。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

18
 
也不算高手,只是正好做过而已,了解STM32可以发挥的性能。

其实,这个系统的正真瓶颈就在串口接收,所以,串口接收部分需要用中断的方式处理,并且,优先级最高,可以打入其他中断,这个就需要做好各种零界处理。否则,速度高的话,是会丢数据的。
当然,实际怎么实现,完全看需求定位。
我这里原来考虑921600的速度,也是因为那时候开发MTK手机,下载最高的速度就是921600。

我做的东西在这里:http://code.google.com/p/vsprog/source/browse/trunk/dongle/firmware。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

19
 
                                 我发现高手都比较谦虚的
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

20
 
                                 如何改使能管脚呢
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表