STM32单片机仿真开发实例 课件 4.7 ADC的电压模拟信号采集.pptx

STM32单片机仿真开发实例 课件 4.7 ADC的电压模拟信号采集.pptx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;能力目标:

理解并掌握ADC的使用方法,能使用阻塞法读取可调电阻连续输出的电压模拟量对应的数字量。

任务要求:

仿真电路如图所示,单片机每隔1秒采集一次模拟量值,并通过串口输出其对应的数字量(ASCII格式)。;4.7.1模/数转换器

在单片机控制系统中,反馈通道需要采集控制系统的受控量,就必须要用到适合的传感器。绝大部分传感器都是将被测量转换为电压或者电流模拟量信号,不能直接被单片机所识别,因此必须在传感器的输出端使用一个模/数转换器(AnalogtoDigitalConverter,简称ADC),将传感器输出的模拟量转换为相应的数字量信号,然后再送给单片机作控制处理,反馈通道的信号处理过程如图所示。;STM32F103R6单片机自带2个ADC(ADC1、ADC2),作用是将输入的模拟量电压信号转换为数字量信号输出,特性如下:

●12位ADC,每个ADC均具备16个外部通道(编号0~15),其中ADC1有一路内部通道(编号16)连

接到STM32内部温度传感器;

●转换模拟量电压范围:0~3.6V;

●支持单次或连续转换模式;

●支持多通道的自动扫描模式;

●支持转换结果的左对齐或右对齐模式;

●支持DMA(DirectMemoryAccess,直接存储器访问);

●最大支持14MHz工作频率。

ADC每一次转换过程需要的时间称为“转换时间”。转换时间的长短取决于①输入时钟(即ADC工作频率)与②采样周期两个因素,两个参数都可以在STM32CubeIDE中进行图形化设置,转换时间的计算公式为:

转换时间TCOVN=采样周期+12.5周期;ADC转换的12位数字量结果:

①左对齐(LeftAlignment)

取值范围0x0000~0xFFF0

②右对齐(RightAlignment)

取值范围0x0000~0x0FFF;4.7.2任务程序的编写

工程的图形化配置,如图所示打开“Analog”→“ADC1”,勾选“IN1”即通道1,其余均采用默认设定。;在如图所示时钟树设定中,ADC输入时钟直接采用了系统默认的4MHz,结合系统默认设定的采样周期1.5周期,此时的ADC转换时间为:

TCOVN=1.5周期+12.5周期=14周期=14÷4MHz=3.5μs

接着设定串口1参数:19200-N-1;本次任务需要用到的新的API函数有:

①ADC运行启动函数HAL_ADC_Start

例程:;②ADC运行停止函数HAL_ADC_Stop

例程:;③等待ADC转换过程结束函数HAL_ADC_PollForConversion

例程:;④读取ADC转换结果函数HAL_ADC_GetValue

例程:;此外,在本次任务中,还用到了一个C语言中的“sprintf()”函数,其作用为将数字转换为字符串,使用前需包含头文件“stdio.h”。

其函数声明为:intsprintf(char*string,char*format[,argument,...]);

参数1为转换结果存入的字符串数组,参数2为格式化字符串,最后参数3为输入的数据,返回值为字符串的长度。

例程:;(现场操作演示…)

技能训练(选做):

ADC选择左对齐模式,其它要求同本次任务。;Tobecontinued...

您可能关注的文档

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档