"); //-->
如今的USB设备几乎无所不在,市面上充斥着各式各样的USB闪存盘和各种USB外围设备。由于这些设备大多是属于 USB从设备,所以应用领域局限在PC市场。近年来USB闪存盘的价格快速滑落,刺激不断有新的应用支持USB闪存盘。但如何在原有产品上支持USB闪存盘成为一个设计难点。为8位与16位微控制器中增加USB宿主功能,开发时间、成本与功耗成为重要的考虑因素。其中一部分原因是这类系统使用的嵌入式控制器目前尚缺乏适合的接口、资源,而且它们连接USB宿主控制器的效率也不高。
本文以Vinculum VNC1L智能型USB 宿主桥接器IC为例,说明如何为系统控制器PIC16F688增加USB 2.0全速连接埠,以使这个系统能连接USB闪存盘,并允许设计工程师在最短时间与最少资源下完成设计。
VNC1L是Vinculum系列产品的第一颗芯片,此智能型USB宿主桥接器采用定制化处理器,并搭配两个加速数据传输的直接内存存取(DMA)引擎和一个32位数字协同处理器,以实现最高的文件操作效率。它还在单一芯片中集成了内置64KB闪存和4KB内部数据SRAM。Vinculum系列产品锁定嵌入式USB控制器市场,仅需少量外部支持元件。该产品系列的一个主要特点是其程序代码长度明显短于用一般微控制器实现该功能所需的代码长度,这样核心程序代码的长度缩短后,可将实现更多功能的代码保存在芯片内的闪存中。VNC1L可处理整个USB协议并内建12MHz~48MHz 时钟,这些特性恰巧与PIC嵌入式系统形成互补。在图1中,VNC1L连接小型PIC16F688 微控制器及USB Type “A”连接器,从而实现与USB闪存盘的连接。
设计说明
在图1中,PIC16F688为系统控制器,由通用I/O引脚(引脚9、10、11上的 RC1、RC0、RA2) 来取得传感器或其它来源的数据,并对数据格式进行转换,将串流格式数据写入USB闪存盘的文件中。指令与数据系通过TXD(引脚6)传送至VNC1L RXD (引脚32)。VNC1L可处理FAT 12/16/32文件系统和储存在USB闪存盘的数据。VNC1L通过引脚28的USB2DP和引脚29的USB2DM与USB闪存盘进行通讯。通过相同的引脚能从USB闪存盘存取数据,并从VNC1L TXD (引脚31)传送到PIC的RXD(引脚5),以供PIC程序使用。
PIC16F688上的程序控制整个系统,此外PIC16F688发出的指令控制其与VNC1L之间的传输操作。VNC1L的标准程序解读并执行来自PIC16F688的指令。当然,完成整个设计还需要更多的设计资源,包括电源、控制时钟的晶振以及程序设计。
利用PIC中引脚2与引脚3的20 MHz晶振,能让UART接口达到比115,200 bps更高的波特率,而使用内部8MHz振荡器最高仅能达到9,600 bps。PIC程序把RC2与RC3 I/O引脚模拟成RTS/CTS来与VNC1L的UART接口连接。
系统需要5V/ 250mA的额定电源,其中对于USB “A”连接器提供200mA电流,并为VNC1L提供25mA电流,另外25mA电流则提供给PIC16F688。VNC1L所要求的3.3V电压由3.3V LDO稳压器提供,此外它还有兼容5V的I/O口,这样能连接至PIC而不需电位切换器。
针对低功耗应用,VNC1L可以在工作时切换至2mA休眠模式。可通过UART接口的响铃侦测(RI)引脚唤醒该元件,如果该引脚已连接至RXD线路,则可通过接续的伪指令来唤醒该元件。
此设计同样包含一个双色状态LED指示灯,由引脚16与18号供电。当成功登录USB闪存盘及存取文件系统时,系统便将给予显示。
VNC1L 程序
VNC1L内部保存了标准的程序,名为VDAP。该程序能解读从PIC传来的指令,这些指令类似DOS指令,如DIR、RD以及WR等。指令集还支持单一字节的HEX指令,更适合由微处理器进行控制。
保存在PIC程序中的VDAP指令可用来控制USB闪存盘的存取操作。典型的指令操作顺序为建立文件、读/写数据至文件,然后关闭文件。
VNC1L 与PIC 程序开发
这个设计保护有两个烧录程序的接头,各个接头分别支持器件所需要的开发环境。在产品设计环境中,每个器件可在焊上印刷电路板前被预先烧录,因此不需接头与跨接线。
在正常运作模式中,J1与J2连接,其它跨接线应为开路状态。VNC1L在烧录时需移除J1与J2 的跨接线,以隔离VNC1L UART的输入端和PIC输出端。然后先切断5V电源,在将TTL-232R-3V3 线连接至H2。通过已安装的VPROG程序工具,把线路的USB端连接到PC,然后接上J4跨接线,将VNCL1A的PROG#引脚拉低,让J3暂时短路以重设器件,并切换至烧录模式。完成烧录后,并请将跨接线设定回复至操作模式。
PIC的烧录接头需连接至器件的RA0、RA1以及MCLR#引脚,5V特烧录电压/电源则通过接头传送至元件。等切断5V电源后,再对PIC微控制器进行烧录。接头应连接至如PICKit2等标准的PIC开发环境,以便利用Microchip公司的除错与下载工具。
FTDI在网站上 ( http://www.vinculum.com/projects/SampleCsource.zip) 提供了一个PIC的范例程序。在这个C范例程序中,PIC将等待USB闪存盘被侦测出,然后开启一个名为hello.txt的档案。“Hello World”字符串以及换行指令码和line feed字符将被写入文件,待关闭文件后,USB闪存盘便可移除。
FTDI的Vinculum VNC1L 是一个容易使用、容易设计的智能型USB 宿主桥接器,使得低成本微控制器可轻易地增加USB 2.0低/全速的USB接口。在电源方面,Vinculum VNC1L 仅在USB接口增加少于10%的消耗。类似DOS的指令集,让传输的数据能在微控制器环境中轻易进行编写与除错,伴随着简易的硬件周边则大大地减轻工程师的负担,为嵌入式系统提供一个USB主控端设计方案不再是件艰难的工作。这使得低成本、高普及率的USB闪存盘能作为系统的储存媒体,并能提供现场升级软件之功能。在本文讨论范围外,值得附带一提的是,除了高容量储存设备以外,VNC1L还能用来连接许多其它USB外围设备。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。