zoukankan      html  css  js  c++  java
  • STM32的USB速度,终于确定了传输极限,为以后的产品设计提供了数据。

     是自定协议,用到一个bulk in ep1, 一个bulk out ep2 端点


     
     用虚拟串口的优点显而易见,上位机的编写非常方便,就按照常规的串口功能编写就可以了,而速度确还是usb的速度 

    USB要提速

    1、使用自定义的Bulk传输
    2、增加驱动的Buffer
    刚才又实验了下,现在驱动程序方面的速度瓶颈已经解决了。主要还是这个PipeMaxTransferSize的关系,这个值越大速度越快。晚上注意到这 个值很多USB设备的驱动程序都是设的很大的,连HID设备都设成4096,我的一个U盘也是4096,KEIL的ULINK设置成65535,几乎所有 USB设备驱动的端点0都是设成65535。晚上测试了下,这个值不会影响数据传输,这个最大值不管怎么设实际USB设备管道每次接收的数据该64字节还 是64字节,应该是WINDOWS核心驱动层收到来自USB驱动的IRP后会自动拆包成与设备固件定义的大小(64字节)进行发送的。
        做了下速度对比
    pipemaxtranfer:64---33KB/S
    pipemaxtranfer:512--265KB/S
    pipemaxtranfer:1024--349KB/S
    pipemaxtranfer:4096--457KB/S
    pipemaxtranfer:65535--506KB/S 
     
    要实现程序更新
     MCU首先能解析出PC通过USB发送的数据是用于更新程序的,然后MCU退出正在运行的程序并进入"更新程序"状态,完成后再运行更新后的程序

    关于STM32的速度

    要那么快的话就不该用STM32

    应该用专用的USB读卡器芯片或者用FPGA定制
    很多人有误解,以为USB2.0就意味着high speed,其实不然。USB2.0的设备(当然对主机也是差不多的道理,只是主机至少会支持full speed),可能只支持low speed 1.5M,也可能最高支持到full speed 12M(对于很多ARM芯片都是这种情况,包括STM32),当然也可能最高支持到high speed 480M
  • 相关阅读:
    sqlserver中判断表或临时表是否存在
    Delphi 简单方法搜索定位TreeView项
    hdu 2010 水仙花数
    hdu 1061 Rightmost Digit
    hdu 2041 超级楼梯
    hdu 2012 素数判定
    hdu 1425 sort
    hdu 1071 The area
    hdu 1005 Number Sequence
    hdu 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/zkp2010/p/5510756.html
Copyright © 2011-2022 走看看