目前市场上有很多种数据采集设备可用于在PC上记录数据,如National Instrument的LabVIEW,不过这类设备的传感器件开始越来越多地采用USB接口而不是RS232或其他传统接口。过去在嵌入式系统中应用USB设备需要性能相对较强的硬件,要带有USB Host控制器接口、RTOS以及USB软件驱动,结果因USB Host功能实施成本的原因设计工程师一直都不太愿意在小型8位或16位MCU系统上增加USB设备。但随着最新一代智能USB Host控制器IC的推出,与MCU配合使用不仅可为PC应用使用USB数据采集设备,而且还可将数据存储在低成本高容量的闪存盘上。
数据记录应用
第一个应用实例显示了一个MCU控制器和一个带有两个端口的FTDI VNC1L USB Host控制器:一个用于数据传感器件读取信息,另一个用于闪存盘以存储信息。MCU和USB Host控制器之间通过UART (或者SPI)命令监控接口进行通信,可使应用通过简单的命令集控制USB设备。
应用原理框图见图1。这里选择的MCU是Microchip PICDEM 4演示板上的PIC18F1320,虽然它应该直接连到PIC系列其他成员以及其他MCU系列。MCU和VNC1L之间采用4线连接(再加上电源和地),连到PIC的EUSART (Tx和Rx)和两个I/O端口,以进行RTS/CTS数据流控制。另外,4线SPI端口还可以通过直接位拆裂I/O端口实现。下面提供了两种方法的C语言源代码。
该应用要求从一个DLP Design的DLP-TILT 2轴倾角传感器读取数据,然后以CSV格式将接收到的数据存在USB闪存盘上。当DLP-TILT模块从USB总线接收到一个包含字母“z”的OUT数据包后,就会对传感器电流读数进行采样,倾角传感器读数被一个IN数据包读取。通过VNC1L监控器,OUT数据包可以和DSD (设备发送数据)命令一起发送,后面跟着数据字节数和发送的数据。IN数据包和DRD (设备读取数据)命令一起被接收,VNC1L将返回字节数和从设备读出的所有数据。
由于USB需要将数据传递到数据包中,所以通常USB设备会有几个毫秒的延迟,尽管这可以通过对传感器数据提供更大的缓冲加以解决。当然,有些设计可能不需要USB传感器件而只是将数据存储到闪存盘上,在数据采集应用中通常都是这种情况,此时MCU采样模拟数据或者记录外部源传来的数据。由于无需探查USB设备,因此这样可以得到更高的采集数据率。
数据采集应用
图2显示了一个模拟输入应用。此例中我们还是使用Microchip PICDEM 4演示板上的PIC18F1320作为MCU。加速计模块是意法半导体的STEVAL-MKI010V1,它连到PIC的模拟输入端。PIC定期对该输入进行采样,结果送入FIFO缓冲器中,在软件中执行,然后由VNC1L写入存储设备。
VNC1L监控器提供命令对USB闪存盘文件进行读写,它还有命令管理文件系统,可对文件及文件目录进行建立、重命名以及删除操作。有了与USB设备进行通信的命令后,文件系统命令使用非常简单。将数据写入文件的顺序是:使用OPW (打开准备写入)命令,后面紧跟文件名,然后是WRF (写入文件),后面是写入字节数,然后是CLF (关闭文件),后面还是跟着文件名。
USB闪存盘的标准扇区大小是512字节,因此要达到最好效果就是在写入USB闪存盘之前提供512字节数据的缓存。USB闪存盘通常使用的文件系统是FAT12、FAT16或者FAT32,在这些系统中簇按需分配,这样当簇没有按顺序排列时可能造成一些小的延迟,然而这通常只是在那些内容快满的盘上比较常见。
使用Vinculum
几乎所有扇区容量为512字节和采用FAT文件系统的USB闪存盘都可以作为VNC1L的存储设备。VNC1L的固件可以在现场进行升级,通过USB闪存盘上特别的升级文件或者通过其UART接口进行ROM升级。基于VNC1L设计的其它优点是当USB闪存盘没有使用时它可以使其暂停以省电,而在执行文件操作期间自动唤醒,VNC1L本身也可进入低功耗睡眠模式并由微控制器应用唤醒。将USB设备协议及文件管理系统放到一个单独的IC上可为嵌入式数据记录或数据采集系统设计带来很多好处,它可使低功耗8位和16位MCU访问USB设备和闪存盘,而FTDI的VNC1L则以一种符合成本效益的方式实现了这一功能。 |