嵌入式应用中的usb主设备功能
usb已经成为设备和pc之间通信的标准方式,从通用设备(如闪存设备和鼠标)到专用设备,该标准几乎完全替代了其他的串行通信协议。
usb外围设备彼此之间不能相互通信,它们只能与具有控制总线能力的usb主设备通信。直到最近,也只有pc具有主设备能力。但目前,许多微控制器也具有了嵌入式usb主设备的功能,这使得嵌入式应用可以连接更加广泛的usb外围设备。
usb闪存驱动器是一种使用非常广泛的usb外围设备,它已经成为传递或存储大量数据的廉价介质,许多数据记录设备正是得益于它才得以发展。对于远程的长期数据记录,可以先采集,并存储在闪存驱动器中,然后带回到方便分析处理的地方。
图1 具有嵌入式usb主设备功能的微控制器pic24fj256gb1
闪存驱动器也可以用于向pc中传输高速时间相关数据。pc是极好的数据分析工具,但实时能力有限。相反,嵌入式应用特别适合实时数据采集,但数据分析能力通常很弱。嵌入式实时数据记录仪可以在闪存驱动器上存储数据,然后把数据传输到pc上分析,这样二者的优势都得到了充分的发挥。
嵌入式usb主设备的应用
开始嵌入式设计的首要任务之一是选择微控制器。为了使用闪存驱动器,微控制器就必须具有嵌入式usb主设备的能力。如果微控制器具有usb otg(on-the-go)或usb双角色(dual role)功能,如microchip公司的pic24fj256gb1微控制器,如图1所示,它也可以支持嵌入式usb主设备功能。usb外围设备,有时也称为usb设备模式,只能用作闪存驱动器等,而不能和其他usb外围设备通信。
其次,设计者应该确信能有完整的开发工具。至少也需要一个器件编程器(如果有一个调试器是最好的)和一个c语言编译器,因为嵌入式usb主设备和运行在微控制器中的程序往往是用c语言而不是用汇编语言编写的。
最后,设计者也应该了解哪些软件库是可以获得的,因为嵌入式设备发现闪存驱动器时的握手操作需要usb设备类、fat32文件系统和其他库的支持。从头开始设计支持嵌入式usb主设备的工作会需要数月的时间,而一个由经过认证的协议栈组成的方案可以节省相当多的时间。
为了使用闪存驱动器,嵌入式设备也需要一种usb海量存储类(mass storage class)设备的终端驱动程序、硬件命令行接口,以及文件系统接口。通常,具有2gb或更低存储空间的闪存驱动器使用fat16文件系统,而更大容量的闪存驱动器将使用fat32文件系统。
设计要求
一旦选定了微控制器,硬件设计就开始了。usb硬件设计需要遵循以下许多规则(详见www.microchip.com/usb)。
● 如果嵌入式主设备需要支持usb设备类,它对外围的供电就必须能够提供500ma的电流。
● 如果嵌入式主设备需要支持任何消耗电流超过100ma的设备,它也必须能够提供500ma的电流。
● 如果嵌入式主设备需支持消耗电流100ma或更低的设备,那么vbus电压限制就可以降低到4.4v。然而,如果嵌入式主设备需支持消耗电流超过100ma的设备,那么vbus电压限制是 4.75v,就和全功能主设备一样。
● 必须重新设计无须用户干预就可复位的过流保护机制。
● 从usb连接器到收发器之间的传输延迟必须在8ns之内。
● 嵌入式usb主设备在vbus上的电容必须大于120μf,而且usb otg设备在vbus上的电容必须为1.0〜6.8μf。
除以上规则外,也必须仔细考虑采用嵌入式usb主设备应用的用户接口。usb外围设备通常用在pc上,万一发生错误就可以提供详细的错误信息。如果led指示灯闪烁,用户能够知道连接失败了。usb规范也作了强制性的规定,经过认证的usb嵌入式主设备必须提供错误信息。换句话说,所有错误信息必须被明确地通知应用层,也就是告知用户。
usb设备认证
usb认证主要用于保证usb设备符合usb规范的要求。认证可以在各种独立的测试机构进行。一旦产品通过认证,生产商就被允许使用usb标志,但同样需要遵守额外的许可证限制(参考usb执行者论坛:http:// www.usb.org/developers/logo_license)。
产品也可以不通过usb认证而直接进行生产和销售。没有usb认证,生产商可以声明自己的产品支持usb,但他不能在设备或包装上的任何地方使用usb标志。通常,取得usb嵌入式主设备认证是不太难的。
通过usb通信
实现usb嵌入式主设备的一个最大挑战就是要和各种各样的usb外围设备通信。虽然不是所有的闪存驱动器产品都通过了认证,但是如果在嵌入式设备中一种闪存驱动器可以正常使用,而另一种没有任何原因就不能使用时,用户是不会高兴的。
如果闪存驱动器需要的上电时间是允许最大时间的两倍或一半,或由于主机以最大允许的速率轮询时闪存驱动器被锁住,以及因为闪存驱动器需要一种不同的scsi命令序列来建立通信等,这都不会有任何问题。但如果这样的闪存驱动器在主设备上不能运行,在pc上却可以正常使用,用户会批评这一主设备。因此,确保进行广泛的测试,与多种没有进行认证的usb外围设备进行通信,即使它只是一个拇指大的闪存驱动器或一根电缆。
虽然嵌入式usb主设备可以提供usb类级的支持,在进行设计和测试时,也应该考虑对特殊usb外围设备支持的限制,通过对vid(供应商id)和pid(产品id)的识别来保证产品能在设计的应用领域正常使用。这个id列表是指usb执行者论坛所发布的目标外围设备列表(tpl),它是为了获得嵌入式主设备认证所必须服从的检查项目列表。完整的otg认证实际上仅需要与tpl列表中的vid/pid标志的产品互操作。
说到机海战术,如今运用的最成熟的非华为莫属
什么是均衡控制技术呢?为什么能提高动力电池的续航能力呢?
继电器的介绍和在使用时应该注意的六点详细资料概述
关于GPS接收机灵敏度的分析
什么是瓦斯保护_有哪些优缺点
嵌入式应用中的USB主设备功能
电气火灾监控系统在煤矿高层公寓中的应用
怎么样辨别二手笔记本电脑的好坏
华为手环3pro评测 值不值得买
阿里发布新一代安全架构,安全基建将成数字经济标配
居民供暖室温无线监测系统
移动机器人中的控制学问题
薄膜表面缺陷在线检测仪器实现更高效率的生产线
多方位玩转“地平线新发布AIoT开发板——旭日X3派(Sunrise X3 Pi)” 插电!开机!轻松秒杀!
离线式LED灯对LED驱动器IC要求
iPhone 12/Pro “信号门”,国内运营商:跟基站无关
努比亚异形柔性屏设计专利曝光采用了双刘海
CPU核心数是不是越多越好
工业路由器_交换机的介绍与对比
浅谈放大器交调失真对系统的影响