基于USB接口的高增益数据采集系统
C8051F000片内集成的增益放大器PGA编程范围为0.5~16,当ICL7650作为一个电压跟随器时,系统可编程增益范围为0.5~16;当ICL7650对输入信号进行8倍放大时,系统可编程增益范围为4~128,由此可见,系统可编程增益范围较宽,满足大多数情况下增益放大需要。
2 软件设计与实现
系统软件包括单片机固件程序,USB驱动程序及其链接库,及用户应用程序。为了降低开发难度及缩短开发周期,系统采用了周立功公司开发的D12 SMART套件中的USB驱动程序及其链接库[3],该链接库为用户应用程序提供了API函数,在编写应用程序时,只需调用API函数与采集系统之间交换数据,而不需要关心具体的USB通讯协议。
单片机固件设计采用中断驱动方式。CPU在前台进行数据采集, USB传输则在后台进行, 而其中断和主循环的数据交换则通过事件标志和数据缓冲区进行。这样既保证了数据采集的实时性,又获得了最佳的传输速率。固件结构如图4 所示。
中断服务程序主要负责从PDIUSBD12收集数据, 将建立包和OUT数据存入数据缓冲结构体,并设置相应的标志位;而主循环负责对数据进行处理,根据标志位区分是标准请求还是厂商请求,进而调用标准请求处理程序和厂商请求处理程序。其中标准请求处理程序主要负责在设备枚举过程中主机为识别设备而发送的请求, 主要包括读取USB设备描述符、给USB设备分配地址、配置USB设备等功能。只有在计算机与USB设备建立链接之后,计算机才能识别出USB设备,与USB设备进行通讯。而厂商请求处理中是自行定义的请求处理函数, 用来处理计算机发送给采集系统的各个设定命令,主要包括设定采集系统的量程、读取通道采样数据等命令。标准设备请求是在枚举过程中由安装在PC机中的USB驱动程序发送给USB设备的,而厂商请求是由用户应用程序通过调用USB链接库提供的API函数将命令传递到功能驱动程序后, 通过相应例程发送到USB设备的。
PDIUSBD12 命令接口是一套访问PDIUSBD12 所有功能的处理函数,主要包括对PDIUSBD12设置地址、设置端点使能、设置模式、读中断寄存器、选择端点、读端点状态、读取缓冲区、清缓冲区等操作。当固件中的其它程序需要对PDIUSBD12 进行操作时, 只须调用其中相应的子程序即可。
硬件提取层是固件中的最底层代码, 直接对PDIUSBD12访问,其执行与具体硬件电路有关,使用的单片机不同, 或者实现的设备功能不同时这部分代码也有所不同。
3 结束语
系统采用高速SOC单片机C8051F000和PDIUSBD12实现了宽量程的数据采集和基于USB接口的数据传输,基于该方案的采集系统已经在实验室调试通过,能够准确地进行数据采样和传输。本文作者创新点:利用了C8051F000片内集成的增益放大器PGA,并结合外围增益放大电路使系统的最大增益放大倍数达到了128倍,从而使系统能完成较宽范围内的电压信号采集;系统在PDIUSBD12与单片机之间的接口电路设计中采用了单地址数据总线方案,相对于通常所采用的多路地址/数据总线方式大大减少了单片机I/O引脚的占用。
- 实现WUSB设备控制器的设计考虑因素(09-12)
- 基于USB2.0的高速无线数传接收设备的数据接收存储方法(09-09)
- 四种短距离无线监控解决方案的性能对比(09-16)
- Wibree:一个可供选择的新无线联网技术(11-07)
- TI 单芯片手机多媒体电话解决方案(12-01)
- 蓝牙技术硬件实现模式分析(01-11)