基于DSP的USB口数据采集分析系统
EZ-USB的8051代码(Firmware)可以固化在ROM内;更好的方案是通过USB口从主机下载到内部RAM,这样,易于修改、调试和更新。之所以能下载代码是因为芯片一上电完全在硬件上自动完成枚举过程,不需要Firmware。完成枚举后便可作为一个USB设备(叫做缺省USB设备)与计算机通讯,此时即可进行Firmware下载。下载完后,8051内核脱离RESET状态开始执行代码。可以通过Firmware对USB设备重新配置,这个重新配置过程叫做再枚举。
在EZ-USB中,缺省USB设备的接口中包括14个Endpoints,如表1所示。
表1 缺省USB端点(Endpoint)
计算机与USB设备的数据通信主要包括两个方面:一是读取采样数据;二是给USB设备发送控制命令。发送控制命令先发送一个命令包(消息),然后根据情况发送后续数据或从设备读取响应数据。因此,根据EZ-USB芯片的功能,直接使用缺省配置中的6个Endpoint。
Endpoit OUT2 BULK:用来发送控制命令包。
Endpoint IN2 BULK:接收从USB设备发来的DSP消息。
Endpoint IN4 BULK:用来从USB设备读取数据,如读取采样数据、配置参数等。
Endpoint OUT4 BULK:用来向USB设备发送数据,如下载8051程序、下载FPGA程序等。
Endpoint OUT6 BULK:作辅助判断用,当PC传送完大量数据至USB设备时,向该端口写任意数据以起到通知USB设备的作用。
Endpoint IN1 INT:用来从USB设备读取响应信号,如下载FPGA程序是否成功的标志等。
在缺省配置基础上可以编写适合需要的代码,如果对8051编程经验丰富的话,完全可以在不需要调试工具的情况下编写Firmware。
本系统Firmware结构建立在对消息队列不断服务基础上,即构建一个消息队列,当接收到任何一方(DSP或计算机)的消息时,将其放入消息队列。消息的接收是通过中断服务程序来实现的。当处理完一个消息时,从消息队列取出下一个消息进行处理。这种软件结构非常简单,思路清晰,对调试十分有利。