APP下载

基于STM32的USB数据采集器的设计

2018-10-21李雪静邓成中

汽车实用技术 2018年17期

李雪静 邓成中

摘 要:随着计算机科学技术的快速发展,PC机作为控制平台的数据采集系统已经成为了当前发展的主要趋势。文章设计了基于微处理器平台STM32的USB数据处理采集系统,USB通信的方式实现和PC软件之间的数据交换,数据通过USB接口传输,并在PC机进行实时数据显示,给出了主要模块的具体的硬件电路设计和程序的设计模块。

关键词:数据采;USB通信;STM32

中图分类号:V557 文献标识码:A 文章编号:1671-7988(2018)17-172-05

Abstract: With the rapid development of computer science and technology, PC machine as the control platform of the data acquisition system has become the main trend of the current development. In this paper, the design of based on STM32 microprocessor platform USB data acquisition and processing system, data exchange between the USB communication and the PC software, data is transmitted through the USB interface and in the PC for real-time data display, gives the main module of the specific hardware circuit design and program design module.

Keywords: Data acquisition; USB communication; STM32

CLC NO.: V557 Document Code: A Article ID: 1671-7988(2018)17-172-05

前言

数据采集一般指的是将待测设备或传感器中的模拟和数字结构单元中自动的采集信号(包括电量和非电量),然后发送到远程的PC或服务器上再进行分析处理[1]。

数据采集器是一种能够对现场或远程采集的数据进行分析记录的设备。其轻便的特性使其在多种场合适用。数据采集器的输入源一般是以自带的过程传感器或震动传感器等的测量信号作为它的输入,在其内部搭载了十分复杂的测量分析技术和丰富多样化的显示系统,所有这些组成的检测系统能很方便的对机器设备进行周期性的故障排查和状态检测。它同计算机一起构成了机器设备诊断主要的辅助手段[2]。

20世纪90年代至今,许多科技发达的国家已经广泛的推广使用这种数据采集技术。而且随着集成电路制造技术的飞速发展,高性能,高可靠性的专业单片机数据采集系统(DAS)开始出现。目前随处可见精度高达16位的DAS产品,其采集数据每秒就可以达到十万次以上。至此数据采集技术已经逐渐发展成为了一门专门的技术。

目前,智能化的控制系统,模块化的接口是数据采集系统的主要发展方向[3]。

1 系统结构组成

1.1 USB数据采集器硬件系统设计

本设计是基于STM32F103主控器的硬件系统电路设计,其中包括电源管理电路、数据采集电路、控制电路三部分。采用STM32自带的USB2.0功能简化电路设计;模拟信号采用具有双通道可调增益的采样芯片LMH6517;脉冲计数采用带施密特触发器的光耦隔离芯片H11L1M;输入、输出通道均采用光耦隔离,所有信号通过USB通信发送回主机[4]。图一为为该系统的整体组成框图。

1.2 USB数据采集器软件设计

本设计中软件系统设计包括单片机下位程序设计和PC界面数据显示界面程序(上位机程序)设计。下位机程序由硬件驱动程序、用户配置程序、系统控制程序。主要包括8通道开关状态的数据讀取,8通道开关状态的数据控制输出,两路脉冲信号的中断输入,模拟信号的ADC采集,以及对USB功能的实现。上位机程序包括数据通道控制程序、8通道开关状态显示界面、8通道开关量输出控制界面、脉冲计数显示界面、模拟信号波形显示界面、模拟直流信号显示界面。本设计中下位程序采用KEIL5编译器编译,上位机程序采用Visual Studio 2013编译,并生成可执行文件[5], 图2为整个软件系统框图。

2 系统硬件电路设计

2.1 电源模块

本设计中不需要使用备份工作电压,直接将VBAT连接到系统工作电压上,保证芯片正常工作,并连接一个旁路电容到地。图3为主控制器外围电路。由于存在多通道开关量输出端口,考虑到USB输出功率不能较好的驱动功率较大的器件,本设计中使用了USB供电和外部输入直流电压两张可选择的供电方案。当不存在外部电源时,系统工作电压由USB提供,当有外部电源接入时,系统自动切换到外部电源供电[6]。

2.1.1 宽输入电压稳压设计

根据使用性能需求和硬件设计要求,采用MPQ4558宽电压输入芯片作为稳压芯片,其设计电路如图3所示。

2.1.2 线性稳压设计

采用低电流,低电压的单通道线性稳压器MPQ8904,其使用PNP放大电路,内部具有热开关和限流保护,输出电压值由反馈引脚输入电压值与0.5V参考电压通过比较器确定,通过对PNP的控制实现稳压输出[7]。电路设计如图4所示。

如果芯片上电时间低于100μs则需要设计RC电路增加上电时间,电阻典型值为100kΩ,电容典型值为10nF。PG引脚与MCU引脚相连接,3.3V电压输出端并联两个电容器[8],得到稳定3.3V电压。

2.1.3 电源多路复用器设计

因为在该系统中可能同时存在两个电源输入,具有热保护器,浪涌电流控制电路,具有交叉传导阻断和反向传导阻塞功能,在切换时可以实现无缝过渡,设计时选用TPS2115多路复用器自动选择系统电源[9]。其电路设计如图5所示。

2.2 模拟数据采集模块

模拟信号表示的是信息参数在一定变化范围内表现为非间断的信号。压力、温度、电流、电压这样的信号通常是模拟信号,所以人们通常将模拟信号称为连续信号。不同数据的传输必须转换为相应的信号,在进行数据分析是我们需要将这些信号从机械结构、人体表面、器件端口读取回来。将外界的连续信号读取会回来作为有用数据分析的过程就是模拟信号采集的过程。然而这些信号强度差异很大,有的信号变化比较微弱、有的信号变化比较明显。本设计主要是考虑针对不同的信号进行采集,为了有更大适应范围,信号采集后的处理可以根据不同情况改变信号增益倍数,选用高性能的LMH6517作为信号处理芯片。在采集比较微弱信号时可以增加增益倍数,采集变化比较明显的信号时可以减小增益倍数。其硬件电路设计如图6所示[10]。

通道A用于波形信号的采集和放大输入端信号,采用选用的LC滤波电路为高通滤波设计。在信号输出端,采用LC构成的带通滤波器使输出信号完整和清楚,本设计的电气参数对应的中心频率为75MHZ,40MHz带宽。在通道B用于直流信号的采集和放大,输入端阻抗为200Ω,输出端通过RC电路组成低通滤波器,采集信号变化状况。

2.3 数字计数器模块

在本设计中,需要对外界的脉冲信号进行计数。外部信号的表现状态有很多,很多需要计数的信号不是标准的高低电平,电压也可能与引脚电压不匹配。为了满足更多的外界情况,本设计采用自带施密特触发器的光耦合隔离芯片。硬件设计电路如图7所示。

H11L1M可以达到1MHz的数据传输速度,工作电压为5V。设计时在输入端串联1K的限流电阻避免电流过大烧坏芯片。在输出端串联两个电阻分压,匹配芯片引脚电压。因为内部自带施密特触发器,当没有信号输入时,输出端引脚为高电平。当有信号输入时,输出端引脚為低电平[11]。

2.4 多通道隔离开关量输入模块

在设计中对外部信号进行隔离输入常用的有电磁隔离和光耦合隔离。电磁隔离包括隔离变压器方式,隔离变压器使信息通过隔离势垒的方式是用变压器线圈来传输,使得前端的电流变化状态只能通过线圈来引起另一侧的电流变化[30]。交流信号的隔离非常适合于变压器耦合。变压器隔离的优点是可以给隔离端供电而且速度高,然而巨大的体积是变压器的不足之处。在隔离的透明的绝缘层上的光传输的光耦合技术,可以实现隔离目的[12]。其电路设计如图8所示。

2.5 多通道隔离开关量输出模块

本设计要求8通道隔离开关量输出,光耦合更适合小信号传输,并且有体积小、成本低的优点。其电路设计如图9所示。

ISP321-4正向输入电流为10mA,在输入端串联330Ω限流电阻,输出端由1KΩ电阻连接到5V电压。当输入端为高电压时,输出端为高电压。当输入端为低电压时,输出为低电压。通过对I/O口的控制实现,隔离后的开关量输出[13]。

3 系统软件部分设计

3.1 USB通信程序设计

本设计将USB自定义描述为串口设备。由于官方提供了大量的库函数,在使用中不需要从底层描述开始。在软件设计时,对API的调用使我们只需要对配置文件部分和数据转换部分配置[14]。其配置如图10所示。

3.2 高速模拟数据采集程序设计

STM32F103支持双通道同时工作,达到12位采样精度。使用DMA传输ADC转换值,DMA通道11在每次输入变化时将变化后的值转换到自定义的变量中。通过在使用的DMA通道上使能循环模式,传输连续进行,此时ADC通道被配置为连续转换。DMA通道的使用在代码量和时间上使ADC到内存的数据传送更容易。DMA循环模式也允许没有人为干涉时的连续的数据传递。其设计如图11所示。

3.3 脉冲计数输入程序设计

本设计中将脉冲计数的输入引脚分别接入到TIM1_CH2N和TIM1_CH3N上,在使用时需要将输入引脚PB0和PB1配置浮空输入。能够精确的捕捉波形,使用中断触发方式计数。这种方式需要配置中断的优先级,在本设计中配置为高级,还需要配置定时器和编程自己需要的中断函数[15]。设计如图12所示。

3.4 多通道输入输出程序设计

STM32的多个IO并行操作有两种配置方发,方法A:单个配置使用,这样可以不会影响用于某系功能的GPIO端口,但是这样配置在软件编写的过程中比较复杂。

方法B:ODR设置法,优点是操作简单,缺点是该功能口上的其余IO口不作为普通的IO输出使用。

结合硬件设计,由于GPIOC和GPIOB均有部分IO口作为其它功能操作,所以选择方法A进行软件设计[16]。其设计如下图13所示。

3.5 上位机设计

由于本设计中需要采集的数据较多,在考虑到传输速度和不同情况对数据的需求不同设计了开关量输入按钮、开关量输出按钮、波形显示按钮、模拟信号按钮、脉冲计数按钮。通过这些按钮选择需要通信的数据,当波形显示按钮和模拟信号显示按钮按下后,可以通过增益放大旋钮选择模拟量采集的增益放大倍数[17]。

在设计过程中,控件可以使用官方提供的控件库,也可以自定义控件。根据本设计的需求,设计界面还包括开关量输入的信号通过8个LED灯来指示。如果某通道有信号输入,则其对应通道的LED点亮[18]。观察LED的情况判断是否有信号输入。通过8个开关按钮选择要输出的端口,当按钮为ON时引脚为高电压,当开关按钮为OFF时输出低电压。本设计中还需要显示外部波形信号的输入[19],不同的要求选择需要的信息,显示的模拟信号是通过PC处理后得到的。同时设计一个数据显示窗口显示直流输入的小信号,这路模拟信号是通过B通道中的数据计算得到的,在本设计中默认使用电压值表示。设计两个脉冲计数显示通道,分别显示脉冲计数器1和脉冲计数器2。可以直观的从数据端口读取脉冲计数个数。完成界面布局设计后需要实现应用程序和下位机程序的通信。由于数据量较多,并且类型不同本设计中采用先发送命令后发送数据的方式实现[20]。

4 结论

本次设计的基于STM32的USB数据采集系统,介绍了其相应的硬件电路设计、下位机与上位机设计思路,完成的基于STM32的USB数据采集器具有体积小、可靠性高、功耗低等特点。使用USB总线来传输数据,为数据的采集提供了一种方便有效的采集方式,在工业监控等领域上具有一定的应用前景。

参考文献

[1] 张全士.USB接口驱动程序的设计与开发[D].电子科技大学,2009.

[2] 钟志彬.基于单片机的USB设备的研究与设计[D].安徽农业大学,2010.DOI:10.766 6/d.y1735134.

[3] 方旭.基于STM32处理器和PC主机的USB通信协议的实现[D].山东大学,2009.DOI:10.766 6/d.y1651973.

[4] 蔡磊.基于STM32F103芯片的USB接口的研究与实现[D].复旦大学,2009.DOI:10.766 6/d.y1968196.

[5] 鲜征征.USB通信协议及接口驱动程序的研究与开发[D].科技大学,2004.

[6] 刘有利.基于USB的高速数据采集系统设计[D].西安电子科技大学,2006.DOI:10.7666/d.y8 58651.

[7] 文先仕.基于ARM Cortex-M3的智能监控器的设计[D].西华大学,2010.DOI:10.7666/d.y17 50437.

[8] 樊龙.基于STM32的智能仪表数据采集系统的设计[D].太原理工大学,2014.

[9] 赵圣飞.基于STM32的数据采集存储系统的设计与实现[D].中北

大学,2014.

[10] 张佳瑞.基于单片机的数据采集和无线数据传输系统[D].西南交通大学,2013.DO I:10.7666/d.Y2334411.

[11] Y. H. Sheu, Y. P. Dai and D. S. Fu, "Embedded USB homecare internet system," Circuits and Systems (APCCAS), 2010 IEEE Asia Pacific Conference on, Kuala Lumpur, 2010, pp. 442-445.

[12] T. S. Wey and Y. H. Sheu, "Embedded USB Host/Slave Broadcas ting System for Computer Assisted Learning System," Innovations in Bio-inspired Computing and Applications (IBICA),2011 Second International Conference on, Shenzhan, 2011, pp. 249-252.

[13] E. Missimer, Y. Li and R. West, "Real-time USB communication in the Quest operating system," Real-Time and Embedded Technol -ogy and Applications Symposium (RTAS), 2013 IEEE 19th, Phi -ladelphia, PA, 2013, pp. 11-20.

[14] C. Y. Ing and T. L. Lee, "USB Device Sharing Server for Office Environment," Asia-Pacific Services Computing Conference, 2008. APSCC '08. IEEE, Yilan, 2008, pp. 953-956.

[15] F. He, "USB Port and power delivery: An overview of USB port interoperabiliy," Product Compliance Engineering (ISPCE), 2015 IEEE Symposium on, Chicago, IL, 2015, pp. 1-5.

[16] Lakkoju, S. Gudla and B. S. Mantravadi, "AVR-USB data acquisition," Electronics Computer Technology (ICECT), 2011 3rd International Conference on, Kanyakumari, 2011, pp. 35-39.

[17] L. Letaw, J. Pletcher and K. Butler, "Host Identification via USB Fingerprinting," Systematic Approaches to Digital Forensic Engine -ering (SADFE), 2011 IEEE Sixth International Workshop on, Oakland, CA, 2011, pp. 1-9.

[18] 選兵.基于USB数据采集的虚拟仪器设计[D].太原理工大学, 2006.DOI: 10.7666/d. y979365.

[19] 琚彬.基于WPF平台的自定义控件开发[D].西安电子科技大学, 2008.DOI:10.766 6/d.y1431474.

[20] 魏旭可.基于STM32单片机的光谱仪数据采集及处理系[D].中国海洋大学,2012.DOI:10.7666/d.y2159712.