0 引言
随着物联网技术的发展与应用,A/D数据采集是其中一项重要的研究课题,A/D多路采集系统实现方案可以多种,通过对三种实现方案进行比较,最终采用STM32系列ARM芯片进行设计。STM32是基于ARM Cortex-M3内核的32位处理器,具有杰出的功耗控制以及众多的外设,并具有极高的性价比,目前正逐渐抢占了电子领域原有的51、AVR的市场。本设计中采用STM32F103RBT6作为主控制器,该芯片配置丰富,便于今后的系统功能扩展。
1 方案比较与论证
为实现多路数据采集要求,提出如下三种设计方案:
(1)基于单片机的数据采集系统
本方案采用双单片机的方法,即在数据采集的远端、近端均采用单片机控制,远端完成数据的采集、抽样、发送;近端完成数据的接收、校验、处理和显示等,键盘控制数据显示。在近端与远端的通信中,采用RS 485差分方式接口,以提高通信速度与传输距离。该方案存在不足之处是:A/D接口和RS 485接口编程不方便,采集信号的频率范围和速率较低,实用性不大。
(2)基于CPLD的数据采集系统
采用CPLD对A/D芯片的采集控制,通过USB接口传输给上位机,优点是可以实现高的采集速率和采集精度,有着较大的实用性,但难点之处是CPLD对A/D模块的控制,及单片机对USB的配置。
(3)基于ARM的数据采集系统
本方案主控器采用STM32系列的ARM芯片,方案如图1所示。
此方案中A/D转换器为ARM芯片内置,采集的方式、起始时间和持续时间由上位机通过RS 232口控制,数据通过USB接口传输至上位机保存。考虑到使用笔记本作为控制上位机时没有232接口,使用USB转232的电缆提供RS 232控制信息。
由于A/D芯片内置,芯片价格也便宜,电路设计较前面的简单,且ARM自带的A/D采集方式多样,并可以通过配置ARM芯片内相应的寄存器就可以实现,因此实现简便。考虑到后面的扩展需要和应用的广泛与实用性,本设计采用此方案。
[page]
2 系统设计原理
电路设计原理如图2所示。
[page]
该电路主要由电源模块,主控器模块,显示模块,SD卡模块,USB转232模块等几个部分组成。
(1)主控制器
采用STM32F103RBT6作为MCU,其性价比很高,该芯片具有20 KB SRAM、128 KB FLASH、3个普通的16位定时器、1个16位的高级定时器、2个SPI、2个I2C、3个串口、1个USB、1个CAN、2个12位的ADC、51个通用I/O口。因为主控器STM32是3.3 V供电的,所以需要将USB的5 V电压转换为3.3 V。这里采用电源线性稳压芯片AMS1117—3.3,将5 V转换为3.3 V。
(2)液晶显示
电路中采用通用的LCD接口,支持8位或者16位总线或者SPI的液晶屏。该模块采用TFTLCD面板(薄膜晶体管液晶显示器),可以显示16位色的真彩图片,提高数据显示效果,同时也可以将采集数据以图形曲线的方式形象的表现出来。该模块有2.4’/2.8’两种大小的屏幕可选,320×240的分辨率,16位真彩显示,自带触摸屏。接口采用80并口与外部连接,采用16位数据线。
(3)JTAG
采用标准的JTAG接法,STM32的SWD接口与JTAG是共用的,只要接上JTAG,也可以使用SWD模式下载并调试代码,多数情况下使用SWD来下载调试代码,节省资源、而且下载速度也快。
(4)SD卡
利用SD卡,扩大容量存储设备,用来实时保存采集的数据,既可以弥补没有上位机的情况,也更方便于事后对大量的数据的分析与处理。
(5)A/D采集
STM32本身拥有1~3个ADC,这些ADC可以独立使用,也可以使用双重模式(提高采样率)。STM32的ADC是12位逐次逼近型的模拟数字转换器。它有18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。最大的转换速率为1 MHz,也就是转换时间为1μs。
3 软硬件综合调试结果
编写数据采集、触摸屏控制、上位机控制程序和液晶显示模块程序主要几个模块,将程序下载并进行系统调试,最终效果如图3,图4所示。
系统可以通过触摸屏选择实现对8路数据的单路采集或多路循环采集模式,数据采集的结果可在液晶屏上显示,也可传输给上位机或保存在SD卡中。通过比较被测电压和数据采集到的电压值,测量精度符合设计要求。
4 结语
本系统电路简单,成本低,并具有一定的可扩展性和实用性。ARM自带的A/D采集方式多样,可以通过配置ARM芯片内相应的寄存器就可以实现,因此实现简便。主控器STM32芯片是基于ARM Cortex—M3内核的32位处理器,具有杰出的功耗控制以及众多的外设,具有极高的性价比,在工业控制、消费类电子产品、通信系统、网络系统、无线系统等多个领域具有广泛的应用前景,因此值得研究和推广。
关键字:数据采集 ARM AD转换 STM32
引用地址:
多路数据采集系统的设计与实现
推荐阅读最新更新时间:2024-03-16 13:15
【STM32平衡小车】平衡倾角为负的解决办法
MPU6050,x轴俯仰的范围是0-360°,有时候安装的时候会出现0负的情况,即陀螺仪显示的是300+的形式,而假如程序ZHONGZHI也写300+,车是不知能直立的! 请教ZHONGZHI的范围是这个时候可以试试改成负值,就对了。
[单片机]
STM32只开启SWD模式调试程序
由于IO口不足,需要将JTAG复用成IO口使用,保留SWD功能调试程序。设置如下: GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
[单片机]
一个单片机串行数据采集/传输模块的设计
摘 要 以GMS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器,设计了一个串行数据采集/传输模块,给出了硬件原理图和主要源程序。
关键词 串行A/D转换器 串行数据传输 GMS97C2051单片机
在微机测控系统中,经常要用到A/D转换。常用的方法是扩展一块或多块A/D采集卡。当模拟量较少或是温度、压力等缓变信号场合,采用总线型A/D卡并不是最合适、最经济的方案。这里介绍一种以GNS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器构成的采样模块,该模块的采样数据由单片机串口经电平转换后送到上位机(IBM PC兼容机)的串口COM1或COM2,形成一种串行数据采集串行数据传
[单片机]
【STM32】STM32之timer1产生PWM(互补通道)
一、简介 本文介绍STM32系列如何使用timer1的第TIM1_CH2N通道(PB14)产生PWM。 二、实验平台 库版本:STM32F10x_StdPeriph_Lib_V3.5.0 编译软件:MDK4.53 硬件平台:STM32开发板(主芯片stm32f103c8t6) 仿真器:JLINK 三、版权声明 博主:甜甜的大香瓜 声明:喝水不忘挖井人,转载请注明出处。 原文地址:http://blog.csdn.NET/feilusia 联系方式:897503845@qq.com 香瓜BLE之CC2541群:127442605 香瓜BLE之CC2640群:5572784
[单片机]
吉时利发布新版数据采集、测量与控制手册
美国俄亥俄州克利夫兰市2007年3月21日讯 -新兴测量需求解决方案领导者美国吉时利(Keithley)仪器公司(NYSE代码:KEI), 日前发布最新《掌握最新的数据采集、测量与控制开发手段》一书。本手册厚达220多页,是关于高性能测试与测量技术的实用指南,读者能从 http://www.ggcomm.com/Keithley/MAR07DAQ_NR.html 上免费下载。 本手册共分9个部分,详细介绍与数据采集和控制设备选型相关的各种技术问题,涵盖如下领域: ·数据采集与测量技术概述,包括插件板和外部数据采集系统介绍; ·计算机总线、协议与硬件知识,重点强调计算机对数据采集系统总体性能和可靠性的重要影响; ·软件知识以及如何选
[新品]
STM32 USB学习笔记8
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library 现在分析USB器件库核心文件的最后一个文件usbd_ctlreq,该文件提供了标准请求的处理,跟USB2.0协议的第九章节紧密关联。在Setup阶段根据bmRequest字段的内容分为:设备请求、接口请求、端点请求。并根据不同的请求调用不同的函数体,USB2.0协议中定义的标清请求有以下几种 通过第一个竖栏可以看出同一个请求代码可以对应多个接收者,例如CLEAR_FEATURE请求可以是设备请求也可以是接口请求,同样也可以是
[单片机]
STM32—无需中断来实现使用DMA接收串口数据
本节目标: 通过DMA,无需中断,接收不定时长的串口数据 描述: 当在串口多数据传输下,CPU会产生多次中断来接收串口数据,这样会大大地降低CPU效率,同时又需要CPU去做其它更重要的事情,我们应该如何来优化? 比如四轴飞行器,当在不停地获取姿态控制方向时,又要去接收串口数据. 答:使用DMA,无需CPU中断便能实现接收串口数据 1.DMA介绍 DMA,全称为: Direct Memory Access,即直接存储器访问, DMA 传输方式无需 CPU 直接控制传输,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大为提高。 2在main()中调用串口配置函数,初始化串口后,然后使能UA
[单片机]
STM32简单任务调度的总结
概述 STM32的开发目前大多数还开处于“裸奔”的阶段,处于开发成本的考虑,可能还未嵌入任何的RTOS系统,由于没有操作系统的支持,因而不能方便的对多任务进行调度和管理。而有的任务不紧急,不需要过多的时间去循环执行,因此需要一个简单的任务调度来解决这个问题。 STM32F103ZE的AHB时钟为72MHz,通过HSE的8M倍频到72M,然后APB1预分频系数为2,所以TIM2-7时钟为2*36M。由于定时器是16位,PSC寄存器最大为65536,不支持71999,所以只能以0.1ms计数。 整个系统在获取时间的累增时,定义64位变量,即可运行很久的时间,不用担心溢出或者死机。定义64位变量有2个方法,一就是用long lo
[单片机]