基于STM32的多路模拟量数据采集设计
- 格式:docx
- 大小:2.12 MB
- 文档页数:51
基于STM32的远程多数据采集器的设计代成刚;任德均;蒋涛;陈仁金【摘要】为了对温湿度、二氧化碳等环境因素进行有效的监测,提出了一套基于STM32,采用无线串口通讯的远程采集器的设计方案。
详细介绍了系统电源供给电路、模拟量和数字量输入输出电路、通讯接口电路等硬件电路及系统软件设计方法,实现了多种数据采集、存储以及通过无线串口与计算机进行通信,达到远程监控和数据传输的目的。
经过实验检测,本设计合理,检测精度满足求。
% In order to carry out effective monitoring of environmental factors such as temperature humidity and carbon dioxide,this paper presents a design of remote acquisition instrument base on STM32 microprocessor and wireless serial interface communication. It mainly introduces the details of the system power supply circuits,analog signal and digital signal input and output circuits,communication interface circuits and the design methods of software. It fulfills the acquisition and storage requirements of signals. Through the wireless serial interface,it can communicate with the host computer,it also achieves the purpose of remote transmission and monitoring. After testing,the design of the acquisition instrument is reasonable and the detection accuracy can meet the requirements.【期刊名称】《机电工程技术》【年(卷),期】2013(000)005【总页数】4页(P31-34)【关键词】STM32;远程控制;数据采集【作者】代成刚;任德均;蒋涛;陈仁金【作者单位】四川大学,四川成都 610065;四川大学,四川成都 610065;中国石油四川石化南充炼油厂,四川南充 637000;四川大学,四川成都 610065【正文语种】中文【中图分类】TP390 引言温湿度及二氧化碳是自然环境的重要属性。
基于STM32的多功能模拟量输入输出系统设计夏好广【摘要】为满足列车网络中信号采集及控制的需求,设计了一种基于STM32微控制器的多通道、多功能的模拟量输入输出系统,其中输入通道可采集电流或电压信号,并由STM32微控制器控制高精度采样芯片AD7606对模拟输入信号进行转换.另外,模拟输出信号通过STM32微控制器控制精密电压/电流输出驱动器AD5750输出.每个输出通道可通过编程实现-10 V至+10 V的电压连续输出或-20 mA至+20 mA的电流连续输出.该系统还集成了INTERBUS模块,可通过INTERBUS总线进行远程通信.实验结果表明,该系统具有精度高、体积小的优点,有广阔的应用前景.【期刊名称】《铁道机车车辆》【年(卷),期】2018(038)001【总页数】4页(P19-22)【关键词】STM32;输入输出;电压源;电流源【作者】夏好广【作者单位】中国铁道科学研究院机车车辆研究所,北京100081【正文语种】中文【中图分类】U266.2现代化高速动车组普遍采用列车网络控制管理系统对车辆进行检测、控制和诊断,其中,网络系统中经常会用到模拟量输入输出模块,如一些温度传感器需要模拟输入模块来采集电压信号或电流信号。
然而,对车辆侧的一些控制则需要模拟输出模块来实现,即通过将中央控制器或司机室指令转换为模拟信号来对一些传感器进行控制。
模拟信号可以是电压信号也可以是电流信号,其中,电压信号一般应用于短距离传输,电流信号用于远距离传输(常用4~20 mA的电流环[1-2])。
目前,大多数模块或系统只针对某一种信号类型进行了设计,而现场设备往往具有多种需求,特别需要通用性更强的模拟量模块。
针对模拟量模块多功能化的需求,设计了一种基于STM32的便携式、多功能模拟量模块。
该模块可提供两通道输入信号采集(电流电压模式可切换),四通道输出(电流电压模式可切换),电流范围-20~20 mA连续可调,电压范围-10~10 V可调。
基于 STM32F0的多功能数据采集控制板系统设计徐岳清【摘要】基于以 STM32F0单片机为核心的多功能数据采集板,可以采集8路模拟量,并提供8路开关量输入和8路开关量输出,采集板通过串口 RS-232C 将采集的数据传给上位机。
本文首先介绍了 STM32F0处理器的特点,然后介绍了数据采集板的硬件原理,并对硬件设计方面的难点做了详细分析,接着介绍了系统所使用的串口通信协议,最后根据实际应用效果对该数据采集板的应用前景做了分析和展望。
% This paper introduces a kind of multifunctional data acquisition board which uses STM32F0 microcontroller as the core. This acquisition board can collect 8 analog signals, 8 input and output digital signals. The board transmits the acquired data to the upper computer by the serial communication of RS-232C. First, this paper introduces the characte-ristics of the STM32F0 processor, and then introduces the hardware principle of the data acquisition boards, analyses the difficulties of hardware design, and introduces the serial communication agreement used by the system. According to the application effect of the data acquisition boards, the paper analyses and looks forward to the application prospect.【期刊名称】《安徽电子信息职业技术学院学报》【年(卷),期】2012(000)006【总页数】5页(P22-25,88)【关键词】STM32F0;单片机;嵌入式;数据采集;串口通信【作者】徐岳清【作者单位】无锡机电高等职业技术学校, 江苏无锡 214000【正文语种】中文【中图分类】TP202近年来,随着环保意识的增强,用于环保监控领域的多功能数据采集板和其应用受到了越来越广泛的关注,数据采集板本身也有了迅速的发展,同时也应用于多种领域。
介绍如何通过意法的STM32 MCU实现用DMA完成多通道的AD采样功
能
在嵌入式产品中有时候需要实现对外部的模拟量进行采样处理和记录,而这就需要使用到ADC功能,将外部的模拟量转换成数字量。
而在复杂的嵌入式产品中,往往需要使用多路AD采样,例如在智能家居产品,电池电量检测,热敏温度传感器,烟雾传感器,气敏传感器等都是可以使用ADC来实现采样的。
在本文章,将会介绍如何通过意法的STM32 MCU实现用DMA完成多通道的AD采样功能。
什么叫ADC
ADC即模拟数字转换器(英语:Analog-to-digital converter)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。
一个模拟数字转换器可以提供信号用于测量。
与之相对的设备成为数字模拟转换器。
影响AD采样的因素有哪些
分辨率
分辨率指的是ADC的位数,例如STM32F103MCU的内部ADC的分辨率是12位,那么它所采样的结果就在0-4096之间。
最小采样单位值
根据基准电压和参考电压的不同,其值也是不同的,例如在基准电压为3.3V,参考电压最低为0V,最高为3.3V,采样分辨率位12位的嵌入式系统中,则ADC的最小量程单位则为:3.3V/4096 = 0.00080566。
量程
在无负电压的嵌入式系统中,量程范围0-基准电压。
电源噪音
电源质量直接影响了AD采样的正确性和稳定性,如果条件满足,建议使用线性稳压源,若是使用开关电源的话,需要在VDDA模拟电源输入和参考电压输入接一个线性稳压管,同时要注意减小PCB板布局走线中结电容对采样电路的影响。
基于STM32单片机的多路数据采集系统设计The Design Of Multi-channel Data Acquisition SystemBased On STM32中国地质大学(北京)指导教师2013.3.31摘要本文是基于ARM Cortex-M3的STM32系列嵌入式微控制器的应用实践,介绍了基于STM32单片机的数据采集的硬件设计和软件设计,数据采集系统是模拟域与数字域之间必不可少的纽带,它的存在具有着非常重要的作用。
本文介绍的重点是数据采集系统,而该系统硬件部分的重心在于单片机。
数据采集与通信控制采用了模块化的设计,数据采集与通信控制采用了单片机STM32来实现,硬件部分是以单片机为核心,还包括A/D 模数转换模块,显示模块,和串行接口部分。
该系统从机负责数据采集并应答主机的命令。
输入数据是由现场模拟信号产生器产生,8 路被测电压再通过模数转换器ADC0809进行模数转换,实现对采集到的数据进行模拟量到数字量的转换,并将转换后的数据传输到上位机,由上位机负责数据的接受、处理和显示,并用LCD数码显示器来显示所采集的结果。
软件部分应用Keil uVision4 通过C++编写控制软件,对数据采集系统、模数转换系统、数据显示、数据通信等程序进行了设计。
关键词:数据采集89C52 单片机ADC0809 Keil uVision4AbstractThis article is an applicati on of STM32 series embedded ARM con troller basedon Cortex-M3 and it describes the hardware desig n and software desig n of thedata on which based on signal-chip microcomputer .The data collection system is the link between the digital domain and analog domain. It has an veryimportant function. The introductive point of this text is a data to collectthe system.The hardware of the system focuses on sig nal-chipmicrocomputer.Data collecti on and com muni cation con trol use modular desig n.The data collected to con trol with corresp ondence to adopt a mach ine 8051to carry out. The part of hardware ' s core is STM32, is also includes A/D con versi on module, display module, and the serial in terface. Slave machi ne is resp on sible for data acquisiti on and an sweri ng the host machi ne.8 roads were measured the electric voltage to pass the in gen eral use mold-few conversion of ADC0809,the realization carries on the conversion that imitatesto measure the nu meral to measure towards the data that collect .The n send the data to the host machi ne.the host machi ne is resp on sible for data and display, LED digital display is resp on sible display the data. The softwareis partly programmedwith C++ of the Keil uVision4. The software can realize the fun cti on of mon itori ng and con trolli ng the whole system. It desig ns much program like data-acquisition treatment,data-display and data-communication ect.Keyword: data acquisitio n AT89C52 ADC0809 Keil uVisio n4目录第一章绪论 (1)1.1 研究背景及其目的意义 (1)1.2 国外研究现状 (2)1.3 该课题研究的主要容容 (3)第二章数据产生 (4)2.1 现场模拟信号产生器 (4)2.2基于LM331的电压频率转换 (4)2.3基于LM331的频率电压转换 (5)第三章数据采集 (7)3.1 数据采集系统 (7)3.2 方案论证 (8)3.2.1 A/D 模数转换的选择 (8)3.2.2 单片机的选择 (8)3.2.3 显示部分 (8)3.2.4 八路数据采集器 (9)第四章硬件部分 (10)4.1 主机部分 (10)4.1.1 单片机 (10)4.1.2 LCD 显示器 (11)4.2 模数转换器ADC0809 (12)第五章软件部分 (16)5.1 简介Keil Uvision4 (16)5.2 本系统所用程序代码 (16)参考文献 (19)第一章绪论1.1 研究背景及其目的意义近年来,数据采集及其应用受到了人们越来越广泛的关注,数据采集系统也有了迅速的发展,它可以广泛的应用于各种领域。
基于STM32单片机的多路数据采集系统设计毕业设计摘要:本篇设计主要以STM32单片机为核心,设计了一个多路数据采集系统。
该系统能够实现多路模拟量和数字量信号的采集和显示,并通过串口与上位机进行通信,实现数据上传和控制。
设计中使用了STM32单片机的AD转换功能实现模拟量信号的采集,使用GPIO口实现数字量信号的采集,通过串口与上位机进行通信。
经过实验验证,该系统能够稳定地采集多路数据,并实现远程数据传输和控制功能,具有较高的可靠性和实用性。
关键词:STM32单片机,数据采集,模拟量信号,数字量信号,上位机通信一、引言随着科技的发展,数据采集系统在工业控制、环境监测、生物医学等领域得到了广泛的应用。
数据采集系统可以将现实世界中的模拟量信号和数字量信号转换为数字信号,并进行处理和存储。
针对这一需求,本文设计了一个基于STM32单片机的多路数据采集系统。
二、设计思路本系统的设计思路是通过STM32单片机实现多路模拟量和数字量信号的采集和显示,并通过串口与上位机进行通信,实现数据上传和控制。
该系统采用了模块化设计方法,将系统分为采集模块、显示模块和通信模块。
1.采集模块采集模块通过STM32单片机的AD转换功能实现模拟量信号的采集,通过GPIO口实现数字量信号的采集。
通过在程序中设置采样频率和采样精度,可以对不同类型的信号进行稳定和准确的采集。
2.显示模块显示模块通过LCD显示屏显示采集到的数据。
通过程序设计,可以实现数据的实时显示和曲线绘制,使得用户可以直观地观察到采集数据的变化。
3.通信模块通信模块通过串口与上位机进行通信。
上位机通过串口发送控制命令给STM32单片机,实现对系统的远程控制。
同时,STM32单片机可以将采集到的数据通过串口发送给上位机,实现数据的远程传输。
三、实验结果与分析通过实验验证,本系统能够稳定地采集多路模拟量和数字量信号,并通过串口与上位机进行通信。
系统能够将采集到的数据实时显示在LCD屏幕上,并通过串口传输给上位机。
基于STM32的8路数据采集器⽬录【摘要】.................................................................................................................................... - 2 -⼀、实验任务及要求........................................................................................................... - 3 -1)实验任务.................................................................................................................................. - 3 -2)实验要求.............................................................................................................................. - 4 -⼆、系统硬件电路设计 ..................................................................................................... - 4 -三、软件功能模块的设计................................................................................................ - 5 -1)AD-DA模块的编写..................................................................................................... - 6 -2)按键、LED程序的嵌⼊............................................................................................ - 7 -3)串⼝程序的设计与加⼊............................................................................................. - 7 -四、遇到的问题及解决⽅案 .......................................................................................... - 8 -五、系统调试顺序 ................................................................................................................ - 8 -六、实验总结及感想.............................................................................. 错误!未定义书签。
基于STM32单片机的多路数据采集系统设计概述:多路数据采集系统是一种用于采集和处理多种传感器信号的系统。
基于STM32单片机的多路数据采集系统具有低功耗、高精度、稳定可靠的特点,广泛应用于工业控制、环境监测和医疗设备等领域。
本文将介绍基于STM32单片机的多路数据采集系统的设计方案及实现方法。
设计方案:1.系统硬件设计:系统硬件由STM32单片机、多路模拟输入通道、数模转换器(ADC)和相关模拟电路组成。
其中,多路模拟输入通道可以通过模拟开关电路实现多通道选通;ADC负责将模拟信号转换为数字信号;STM32单片机负责控制和处理这些数字信号。
2.系统软件设计:系统软件可以采用裸机编程或者使用基于STM32的开发平台来进行开发。
其中,主要包括数据采集控制、数据转换、数据处理和数据存储等功能。
具体实现方法如下:-数据采集控制:配置STM32单片机的ADC模块,设置采集通道和相关参数,启动数据采集。
-数据转换:ADC将模拟信号转换为相应的数字量,并通过DMA等方式将数据传输到内存中。
-数据处理:根据实际需求对采集到的数据进行预处理,包括滤波、放大、校准等操作。
-数据存储:将处理后的数据存储到外部存储器(如SD卡)或者通过通信接口(如UART、USB)发送到上位机进行进一步处理和分析。
实现方法:1.硬件实现:按照设计方案,选择适应的STM32单片机、模拟开关电路和ADC芯片,完成硬件电路的设计和布局。
在设计时要注意信号的良好地线与电源隔离。
2.软件实现:(1)搭建开发环境:选择适合的开发板和开发软件(如Keil MDK),配置开发环境。
(2)编写初始化程序:初始化STM32单片机的GPIO口、ADC和DMA等模块,配置系统时钟和相关中断。
(3)编写数据采集程序:设置采集参数,例如采样频率、触发方式等。
通过ADC的DMA功能,实现数据的连续采集。
(4)编写数据处理程序:根据实际需求,对采集到的数据进行预处理,例如滤波、放大、校准等操作。
基于STM32单片机的多路数据采集系统设计毕业设计本文将设计一种基于STM32单片机的多路数据采集系统。
该系统可以实现多个输入信号的采集和处理,在电子仪器、自动化控制、工业检测等领域具有广泛的应用前景。
首先,我们需要选择合适的STM32单片机作为系统的核心处理器。
STM32系列单片机具有低功耗、高性能和丰富的外设资源等优点,非常适合用于嵌入式数据采集系统的设计。
在选取单片机时,要考虑到系统对于处理速度、存储容量和外设接口的需求,以及预算等因素。
其次,我们需要设计合适的外部电路来连接待采集的信号源。
常用的信号源包括温度传感器、光敏电阻、加速度传感器等。
我们可以使用适当的模拟电路将这些信号转换为STM32单片机能够接收的电平。
此外,还可以考虑使用模数转换芯片来实现对多路模拟信号的高速采集。
接下来,我们需要设计软件算法来对采集到的数据进行处理。
在数据采集系统中,常见的算法包括滤波、数据压缩、数据存储等。
通过滤波算法可以去除噪声,提高信号的质量;数据压缩可以减少数据存储和传输的空间;数据存储可以将采集到的数据保存在存储介质中以供后续分析。
最后,我们需要设计用户界面以便用户能够方便地操作系统。
可以使用LCD屏幕和按键等外设来实现用户界面的设计。
用户界面应该直观简洁,提供友好的操作和显示效果,方便用户进行数据采集和系统设置。
综上所述,基于STM32单片机的多路数据采集系统设计需要考虑到硬件电路和软件算法的设计,以及用户界面的设计。
通过合理的设计和实现,可以实现多路信号的高速采集、滤波处理和存储,为电子仪器、自动化控制和工业检测等领域提供可靠的数据支持。
基于STM32数据采集器的设计
数据采集技术在工业、航天、军事等方面具有很强的实用性,随着现代科技发展,数据采集技术在众多领域得到了广泛的应用和发展。
同时对数
据采集器的精度、抗干扰能力、安全和通信兼容等方面提出了更高的要求。
基于上述要求提出了一种基于STM32F101 的数据采集器的设计方案,该数据采集器使用MODBUS 协议作为RS485 通信标准规约,信号调理电路与STM32F101 的AD 采样通道之间均采用硬件隔离保护,可同时采样3 路DC0-5V 电压信号、3 路DC4-20mA 电流信号和6 路开关量输入信号,实验证明本数据采集器具有较高的测量精度,符合工业现场应用需求。
信号采集主要包括电压信号、电流信号、频率信号以及开关量信号,随着现代技术的发展,传感器主要输出标准的电压电流信号,而传感器是将
外部的非电量信号转换成标准的电信号进行输出,本课题所设计的数据采集
器可以同时采集电压、电流、开关量输入输出信号,且每个部分独立工作,
硬件调理电路中均采用信号隔离技术,数据采集器与上位机采用RS485通信,使用MODBUS协议作为通信规约,便于数据采集器与其他工业设备实现数
据共享。
课题设计的基于STM32的数据采集器,使用性价比较高的
STM32F101 作为核心处理器,时钟倍频后处理速度可达36MHz ;内部自带。
基于STM32的智能仪表数据采集系统的设计共3篇基于STM32的智能仪表数据采集系统的设计1智能仪表数据采集系统是一种基于微处理器技术的新型仪表系统,能够实时采集、处理和显示各种参数信息,并具有智能、高精度、易使用等特点。
基于STM32的智能仪表数据采集系统,主要由硬件部分和软件部分构成。
一、硬件部分设计1. 硬件选型本智能仪表数据采集系统采用STM32F407ZET6微控制器作为主控制芯片,能够满足高速处理和稳定运行的要求。
除此之外,系统还选择了一些重要外设模块,包括:(1)LCD模块:以及相关驱动IC,实现有效的数据展示和用户交互。
(2)ADC模块:16路12位ADC,可以实现高分辨率和高信噪比的电压、电流和温度等模拟量信号采集。
(3)USB模块:通过USB接口与计算机通信,实现数据传输和软件在线升级功能。
(4)SD卡模块:支持高速SDIO接口,用于存储历史数据和配置信息。
(5)按键模块:用户可通过按键实现菜单选择、数值修改等功能。
2. 硬件连接整个系统的硬件连接图如下所示:(1)LCD模块的连接:将LCD模块的各个引脚连接到STM32芯片对应的引脚上,通过SPI总线与驱动IC进行通信控制;(2)ADC模块的连接:将ADC模块与芯片的模拟输入引脚连接,通过DMA通道实现数据传输;(3)USB模块的连接:将USB模块连接到芯片的USB_OTG_FS接口,通过底层USB库进行通信;(4)SD卡模块的连接:将SD模块的接口与芯片的SDIO总线相连接,实现数据读写。
(5)按键模块的连接:将按键模块的引脚连接到芯片的GPIO端口,通过中断功能识别按键事件。
二、软件部分设计1. 软件框架基于STM32的智能仪表数据采集系统的软件框架如下所示:该系统主要分为用户界面、数据采集和存储、通信和控制四个模块。
用户界面主要负责显示和操作,通过LCD显示用户需要的各种参数信息和数据图形。
数据采集和存储模块主要负责将各种传感器的模拟量信号进行采集、转换和存储,实现对各种参数的实时监测和历史数据的记录。
第32卷第12期 2010-12(上【205】基于STM32和MODBUS协议的多参数数据采集卡设计Multi-parameter data acquisition card design based on STM32 and MODBUS protocol肖前军XIAO Qian-jun(重庆工业职业技术学院,重庆 400050)摘要:为了实现工业现场数据采集的网络化和智能化,本文使用STM32作为控制器,采用MODBUS通信协议,设计了一款高性能多参数数据采集卡。
关键词:STM32;MODBUS协议;网络化;多参数中图分类号:TP391 文献标识码:A 文章编号:1009-0134(201012(上-0205-04Doi: 10.3969/j.issn.1009-0134.2010.12(上.670 引言在工业现场需要监控现场的工作环境和设备的运行状况,就需要测量现场的温度、湿度和设备的电压、电流等参数,以前的数据采集多采用变送器,变送器采集的数据采用模拟量传输,抗干扰能力较差,并且采集数据单一,不能完成多参数采集,由于采用模拟量传输不易实现网络化。
本文提出一种多参数数据采集卡的设计和实施方案,采用STM32作为微处理器,标准MODBUS协议作为通信规约,实现数据采集的网络化和智能化;该采集卡具有如下功能:可实现8路模拟量输入(混接),用户可将任一通道自由设置成标准电压、标准电流(加接取样电阻)、热电偶、热电阻等信号方式;8路继电器输出(控制或报警信号),报警继电器由I/O前端自行控制输出(组态),可单组或多组输出,每组输出为独立方式,报警输出触电电流≤3A;在串行通信方式(RS485)下,采用标准MODBUS协议,使采集卡与上位机或控制器进行通信;人机接口(键盘及显示),完成参数手动设置和测试结果现场显示。
1 系统总体方案系统总体框图如图1所示,包括电源处理电路,MCU控制器,串行通信模块,信号滤波电路,放大电路和A/D转换电路,信号隔离电路,输出报警和人机接口电路。
STM32多路AD采样DMA使用方法比画了很多天,终于今天下狠心把多通道ADC转换逼出来了,一直就看着ADC多通道的多种用法和DMA的用法眼晕,找了很多例子最多是3通道而且用的不是一个AD.终于靠自己的力量弄出来了,长出了一口气啊.我这里用的ADC的通道8~15共8个通道,采用自动连续转换模式,转换完一个通道的数据由DMA送到内存中,主程序中把每个通道的数据分检出来经过"去极值取平均值滤波"后送给LCD显示,在万利的开发板上显示的值比万利的例子稳定多了./************************************************************** ****************** Function Name : main* Description : Main program* Input : None* Output : None* Return : None*************************************************************** ****************/int main(void){#ifdef DEBUGdebug();#endif/* System clocks configuration ---------------------------------------------*/RCC_Configuration();/* NVIC configuration ------------------------------------------------------*/NVIC_Configuration();/* GPIO configuration ------------------------------------------------------*/GPIO_Configuration();LcdShow_Init();/* DMA1 channel1 configuration ----------------------------------------------*/DMA_DeInit(DMA1_Channel1);DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;//外设地址DMA_InitStructure.DMA_MemoryBaseAddr = (u32)ADC_RCVTab;//内存地址DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;//dma传输方向单向DMA_InitStructure.DMA_BufferSize = 160;//设置DMA在传输时缓冲区的长度 wordDMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//设置DMA的外设递增模式,一个外设DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//设置DMA的内存递增模式,DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//外设数据字长DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//内存数据字长DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//设置DMA的传输模式:连续不断的循环模式DMA_InitStructure.DMA_Priority = DMA_Priority_High;//设置DMA的优先级别DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//设置DMA的2个memory中的变量互相访问DMA_Init(DMA1_Channel1, &DMA_InitStructure);/* Enable DMA1 channel1 */DMA_Cmd(DMA1_Channel1, ENABLE);/* ADC1 configuration ------------------------------------------------------*/ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//独立工作模式ADC_InitStructure.ADC_ScanConvMode = ENABLE;//扫描方式ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//连续转换ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//外部触发禁止ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐ADC_InitStructure.ADC_NbrOfChannel = 8;//用于转换的通道数ADC_Init(ADC1, &ADC_InitStructure);/* ADC1 regular channels configuration [规则模式通道配置]*/ ADC_RegularChannelConfig(ADC1, ADC_Channel_8 , 1, ADC_SampleTime_239Cycles5);ADC_RegularChannelConfig(ADC1, ADC_Channel_9 , 2, ADC_SampleTime_239Cycles5);ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 3, ADC_SampleTime_239Cycles5);ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 4, ADC_SampleTime_239Cycles5);ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 5, ADC_SampleTime_239Cycles5);ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 6,ADC_SampleTime_239Cycles5);ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 7, ADC_SampleTime_239Cycles5);ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 8, ADC_SampleTime_239Cycles5);/* Enable ADC1 DMA [使能ADC1 DMA]*/ADC_DMACmd(ADC1, ENABLE);/* Enable ADC1 [使能ADC1]*/ADC_Cmd(ADC1, ENABLE);/* Enable ADC1 reset calibaration register */ADC_ResetCalibration(ADC1);/* Check the end of ADC1 reset calibration register */while(ADC_GetResetCalibrationStatus(ADC1));/* Start ADC1 calibaration */ADC_StartCalibration(ADC1);/* Check the end of ADC1 calibration */while(ADC_GetCalibrationStatus(ADC1));/* Start ADC1 Software Conversion */ADC_SoftwareStartConvCmd(ADC1, ENABLE);while(1){vu16 value1 = 0;vu16 value2 = 0;vu16 value3 = 0;vu16 value4 = 0;vu16 value5 = 0;vu16 value6 = 0;vu16 value7 = 0;vu16 value8 = 0;value1 = average(ADC_RCVTab,0); value2 = average(ADC_RCVTab,1); value3 = average(ADC_RCVTab,2); value4 = average(ADC_RCVTab,3); value5 = average(ADC_RCVTab,4); value6 = average(ADC_RCVTab,5); value7 = average(ADC_RCVTab,6); value8 = average(ADC_RCVTab,7);u8 num1 = value3 % 10;u8 num2 = (value3 / 10) % 10;u8 num3= (value3 / 100) % 10;u8 num4 = value3 / 1000;if (num1 > 9)display[3] = num1 + (65 - 10); elsedisplay[3] = num1 + (48-0);if (num2 > 9)display[2] = num2 +(65 - 10); elsedisplay[2] = num2 + (48 - 0);if (num3>9)display[1]=num3+(65-10);elsedisplay[1]=num3+(48-0);if (num4>9)display[0]=num4+(65-10);elsedisplay[0]=num4+(48-0); write_string(display); delay();}}。
STM32L476应⽤开发之⼆:模拟量数据采集采集模拟量数据在⼀台⼀起中是必不可少的功能。
在本次实验中我们要采集的模拟量值主要包括氧⽓传感器的输出以及压⼒变送器的输出。
1硬件设计我们需要采集数据对精度有⼀定的要求,⽽STM32L476⾃带ADC为12位的,所以我们采⽤独⽴的ADC芯⽚来完成这⼀⼯作。
由于使⽤经验的关系,我们选择了AD7705芯⽚。
AD7705为完整16位、低成本、Σ-Δ型ADC,适合直流和低频交流测量应⽤。
其具有低功耗(3 V时最⼤值为1 mW)特性,因⽽可⽤于环路供电、电池供电或本地供电的应⽤中。
⽚内可编程增益放⼤器提供从1⾄128的增益设置,⽆需使⽤外部信号调理硬件便可接受低电平和⾼电平模拟输⼊。
AD7705拥有两个差分通道,对外通讯⽀持SPI接⼝⽅式。
其结构图如下:在STM32L476RG开发板中,有SPI3⼝已经引到端⼦可以使⽤。
各引脚分别为:CN7-1 PC10 SPI3-SCKCN7-2 PC11 SPI3-MISOCN7-3 PC12 SPI3-MOSI在开发板上的位置如下红框标识:根据以上描述,于是我们设计电路图如下:2、软件设计完成硬件连接后我们可以开始软件开发了,⾸先我们在STM32CubeMX中对硬件部分进⾏配置。
由于板⼦上没有焊接X3外部晶振,我们使⽤内部时钟源。
使⽤SPI3的引脚PC10,PC11,PC12,如下图所⽰:然后配置SPI3的的参数,我们采⽤7为数据,⼤端以及64分频,具体的参数配置如下图所⽰:对应的SPI3端⼝的配置程序如下所⽰:static void SPI3_Configuration(void){hspi3.Instance = SPI3;hspi3.Init.Mode = SPI_MODE_MASTER;hspi3.Init.Direction = SPI_DIRECTION_2LINES;hspi3.Init.DataSize = SPI_DATASIZE_8BIT;hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;hspi3.Init.CLKPhase = SPI_PHASE_1EDGE;hspi3.Init.NSS = SPI_NSS_SOFT;hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;hspi3.Init.TIMode = SPI_TIMODE_DISABLE;hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;hspi3.Init.CRCPolynomial = 7;if (HAL_SPI_Init(&hspi3) != HAL_OK){Error_Handler();}}接下来我们实现通过SPI3接⼝读取摸你脸个采集值得程序。