- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
STM32F103x的USB多路数据采集系统设计
3 数据采集系统软件设计
数据采集系统软件设计主要包括设备固件程序设计和上位机应用程序设计两部分。
3.1 设备固件程序
设备固件程序设计的两个主要部分是ADC模块的配置和USB模块的配置与通信。
(1)ADC模块的配置
意法半导体公司针对ARM的32位STM32F103x系列MCU提供了固件库。该固件库提供了包括ADC在内的各种功能模块的软件使用接口,使用该固件库可以有效节省用户产品的开发和调试时间。利用该库,本设计中ADC的配置代码如下:
ADC校准之后通过函数ADC_SoftwareStart-ConvCmd(ADC1,ENABLE)即可启动A/D转换。
(2)USB模块的配置与通信
意法半导体公司还提供了针对STM32F系列的USB开发工具包。该工具包是一个完整的固件和软件包,包括所有USB传输方式的范例,大大减少了开发人员的工作量。利用USB工具包主要完成对IJSB模块的配置及与USB主机(即上位机)之间的通信。
USB规范定义了4种数据传输类型:控制传输、块传输、中断传输和同步传输。块传输适用于传输大量的且对传输时间和传输速率均无要求的数据;中断传输适用于传输少量或中量的且对传输时间有要求的数据;同步传输适用于传输大量的,速率恒定的且对传输时间有要求的数据;控制传输适用于传输少量的且对传输时间和传输速率均无要求,但必须保证数据传输的可靠性。
在本设计中,端点0为控制传输端点,实现USB设备上电后的配置过程;端点1为OUT中断传输端点,用以接收上位机发送的命令,实现上位机对数据采集过程的控制;端点2为IN块传输端点,将数据采集结果实时地传送到上位机,供上位机进行数据分析和处理。利用意法半导体公司提供的USB开发工具包并参照范例,修改一些描述符(设备描述符、配置描述符、接口描述符和端点描述符等)和设备复位函数,添加相应的端点传输中断服务程序等,即可方便地实现本系统的 USB设备开发。端点2的配置代码如下:
在设置端点2发送有效之后,USB模块可自动完成端点2缓冲区的数据发送。
3.2 上位机应用程序
本设计采用一种使用NI-VISA和LabVIEW进行USB数据采集系统上位机程序开发的快速简单而且有效的方法,从而避开传统的Windows编程技术。通过在LabVIEW下调用NI-VISA子控件程序,可以方便地实现与USB设备的通信和应用程序界面的开发。
VISA(Virtual Instrument Software Architecture)是一个用来与各种仪器总线进行通信的高级应用编程接口(API),不受平台、总线和环境的限制。在利用NI-VISA完成对 USB设备的驱动后,即可在LabVIEW开发环境中直接使用VISA面板对USB设备进行控制和通信。LabVIEW是当今国际上唯一的编译型图形化编程语言,能方便、快捷地进行应用程序开发。本系统利用Lab-VIEW设计的USB多路数据采集系统用户界面如图4所示。
本系统实现了对16路外部信号的实时采集。图4中在实时波形显示区域,可以实时地显示4个通道的波形曲线。这4个通道通过选择可以是16个通道中的任意一个通道。在实时数据显示区域,能观测到每一路数据采集的结果;在左侧的控制及状态显示区域,可以实现设备选择、采集过程的控制以及数据采集系统的工作状态显示。
结 语
本设计实现了基于STM32F103x的USB多路数据采集系统,以STM32F103x微控制器为主控芯片实现了外部信号的调理、采集、预处理和USB 数据传输,以及上位机应用程序的开发。主控芯片STM32F103x内部集成了丰富的功能模块,使系统无需外扩大量芯片而能实现数据采集功能,降低了开发的复杂度和成本,达到了提高系统稳定性的目的。
作者:唐伟 于平 李峥辉 中国科学院 来源:中华电子网