2.2 STM32F103x的ADC模块
STM32F103x系列微控制器所带的2个12位ADC是一种逐次逼近型模拟数字转换器。它有16个外部通道,可测量16个外部信号源。各通道的A/D 转换可以是单次、连续、扫描或不连续模式执行,其转换结果可以左对齐或右对齐方式存储在16位数据存储器中。ADC转换频率最高可达1 MHz,且每个通道的采样间隔时间均可独立编程设置。在通道转换期间,ADC能产生DMA请求,使DMA来传输ADC转换值,提高了数据传输的效率。 ADC模块的结构示意图如图2所示。
2.3 STM32F103x的USB2.0全速设备接口模块
USB接口模块为上位机和由微控制器实现的功能设备之间提供了符合USB规范的通信连接。USB接口模块通过和微控制器共享一块专用的数据缓冲区实现上位机和系统存储器之间的数据传输。这块专用数据缓冲区的大小由所使用的端点数目和每个端点最大的数据分组大小来决定,每个端点最大可使用512字节缓冲区,最多可用于16个单向或8个双向端点。USB接口模块根据UJSB
规范实现了令牌分组的检测,数据发送/接收的处理和握手分组的处理。整个传输的数据格式由硬件自动生成,其中包括CRC的生成和校验。USB2.0全速设备接口模块的结构示意图如图3所示。
3 数据采集系统软件设计
数据采集系统软件设计主要包括设备固件程序设计和上位机应用程序设计两部分。
3.1 设备固件程序
设备固件程序设计的两个主要部分是ADC模块的配置和USB模块的配置与通信。
(1)ADC模块的配置
意法半导体公司针对ARM的32位STM32F103x系列MCU提供了固件库。该固件库提供了包括ADC在内的各种功能模块的软件使用接口,使用该固件库可以有效节省用户产品的开发和调试时间。利用该库,本设计中ADC的配置代码如下:
ADC校准之后通过函数ADC_SoftwareStart-ConvCmd(ADC1,ENABLE)即可启动A/D转换。