嵌入式系统设计(STM32)第7讲

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第7讲STM32的AD转换器主要内容7.1ADC的硬件结构及特征7.2工作模式7.3ADC中断7.4ADC寄存器7.5ADC库函数7.6ADC程序设计7.1ADC的硬件结构及功能STM32F103有2个12位ADC(ADC1和ADC2),是逐次逼近型模拟/数字转换器。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。ADCx的输入通道ADC123_IN0-PA0ADC123_IN1-PA1ADC123_IN2-PA2ADC123_IN3-PA3ADC12_IN4-PA4ADC12_IN5-PA5ADC12_IN6-PA6ADC12_IN7-PA7ADC12_IN8-PB0ADC12_IN9-PB1ADC123_IN10-PC0ADC123_IN11-PC1ADC123_IN12-PC2ADC123_IN13-PC3ADC12_IN14-PC4ADC12_IN15-PC5ADC3_IN4-PF6ADC3_IN5-PF7ADC3_IN6-PF8ADC3_IN7-PF9ADC3_IN8-PF10ADC主要特征12位分辨率转换结束、注入转换结束和发生模拟看门狗事件时产生中断单次和连续转换模式从通道0到通道n的自动扫描模式自校准带内嵌数据一致性的数据对齐采样间隔可以按通道分别编程规则转换和注入转换均有外部触发选项间断模式双重模式(带2个或以上ADC的器件)ADC转换时间:STM32F103xx增强型产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs)。ADC供电要求:2.4V到3.6VADC输入范围:VREF-≤VIN≤VREF+规则通道转换期间有DMA请求产生。7.2工作模式通道选择单次转换模式连续转换模式扫描模式间断模式数据对齐双ADC模式通道选择有16个多路通道。可以把转换组织成两组:规则组和注入组。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。单次转换模式单次转换模式下,ADC只执行一次转换。如果一个规则通道被转换:◦转换数据被储存在16位ADC_DR寄存器中◦EOC(转换结束)标志被设置◦如果设置了EOCIE,则产生中断。如果一个注入通道被转换:◦转换数据被储存在16位的ADC_DRJ1寄存器中◦JEOC(注入转换结束)标志被设置◦如果设置了JEOCIE位,则产生中断。然后ADC停止。连续转换模式在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。如果一个规则通道被转换:◦转换数据被储存在16位的ADC_DR寄存器中◦EOC(转换结束)标志被设置◦如果设置了EOCIE,则产生中断。如果一个注入通道被转换:◦转换数据被储存在16位的ADC_DRJ1寄存器中◦JEOC(注入转换结束)标志被设置◦如果设置了JEOCIE位,则产生中断。扫描模式此模式用来扫描一组模拟通道。ADC扫描所有被ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道)选中的所有通道。在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。如果设置了寄存器ADC_CR2中的CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。间断模式规则组:此模式通过设置ADC_CR1寄存器上的DISCEN位激活。它可以用来执行一个短序列的n次转换(n=8),此转换是ADC_SQRx寄存器所选择的转换序列的一部分。注入组:在一个外部触发事件后,该模式按通道顺序逐个转换ADC_JSQR寄存器中选择的序列。一个外部触发信号可以启动ADC_JSQR寄存器选择的下一个通道序列的转换,直到序列中所有的转换完成为止。总的序列长度由ADC_JSQR寄存器的JL[1:0]位定义。数据对齐ADC_CR2寄存器中的ALIGN位选择转换后数据储存的对齐方式。数据可以左对齐或右对齐。SEXT位是扩展的符号值。数据右对齐:数据左对齐:双ADC模式在有2个或以上ADC模块的产品中,可以使用双ADC模式。共有6种可能的模式:◦─同步注入模式◦─同步规则模式◦─快速交叉模式◦─慢速交叉模式◦─交替触发模式◦─独立模式还有可以用下列方式组合使用上面的模式:◦─同步注入模式+同步规则模式◦─同步规则模式+交替触发模式◦─同步注入模式+交叉模式7.3ADC中断规则和注入组转换结束时能产生中断,当模拟看门狗状态位被设置时也能产生中断。它们都有独立的中断使能位。ADC1和ADC2的中断映射在同一个中断向量上,而ADC3的中断有自己的中断向量。ADC中断7.4ADC寄存器SR--ADC状态寄存器CR1--ADC控制寄存器1CR2--ADC控制寄存器2SMPR1--ADC采样时间寄存器1SMPR2--ADC采样时间寄存器2JOFR1--ADC注入通道偏移寄存器1JOFR2--ADC注入通道偏移寄存器2JOFR3--ADC注入通道偏移寄存器3JOFR4--ADC注入通道偏移寄存器4HTR--ADC看门狗高阈值寄存器LTR--ADC看门狗低阈值寄存器SQR1--ADC规则序列寄存器1SQR2--ADC规则序列寄存器2SQR3--ADC规则序列寄存器3JSQR1--ADC注入序列寄存器JDR1--ADC注入数据寄存器1JDR2--ADC注入数据寄存器2JDR3--ADC注入数据寄存器3JDR4--ADC注入数据寄存器4DR--规则数据寄存器ADC状态寄存器(ADC_SR)STRT:规则通道开始位(RegularchannelStartflag)JSTRT:注入通道开始位(InjectedchannelStartflag)JEOC:注入通道转换结束位(Injectedchannelendofconversion)EOC:转换结束位(Endofconversion)AWD:模拟看门狗标志位(Analogwatchdogflag)。该位由硬件在转换的电压值超出了ADC_LTR和ADC_HTR寄存器定义的范围时设置,由软件清除。ADC控制寄存器1(ADC_CR1)AWDEN:在规则通道上开启模拟看门狗JAWDEN:在注入通道上开启模拟看门狗DUALMOD[3:0]:双模式选择(Dualmodeselection),软件使用这些位选择操作模式。DISCNUM[2:0]:间断模式通道计数JDISCEN:在注入通道上的间断模式DISCEN:在规则通道上的间断模式JAUTO:自动的注入通道组转换(AutomaticInjectedGroupconversion)AWDSGL:扫描模式中在一个单一的通道上使用看门狗。SCAN:扫描模式(Scanmode)JEOCIE:允许产生注入通道转换结束中断AWDIE:允许产生模拟看门狗中断EOCIE:允许产生EOC中断AWDCH[4:0]:模拟看门狗通道选择位ADC控制寄存器2(ADC_CR2)TSVREFE:温度传感器和VREFINT使能。SWSTART:开始转换规则通道(Startconversionofregularchannels)JSWSTART:开始转换注入通道(Startconversionofinjectedchannels)EXTTRIG:规则通道的外部触发转换模式。EXTSEL[2:0]:选择启动规则通道组转换的外部事件JEXTTRIG:注入通道的外部触发转换模式JEXTSEL[2:0]:选择启动注入通道组转换的外部事件ALIGN:数据对齐(Dataalignment)。0:右对齐;1:左对齐。DMA:直接存储器访问模式(Directmemoryaccessmode)RSTCAL:复位校准(Resetcalibration)CAL:A/D校准(A/DCalibration)CONT:连续转换(Continuousconversion)。0:单次转换;EXTSEL[2:0],启动规则通道组转换的外部事件ADC1和ADC2的触发配置如下000:定时器1的CC1事件100:定时器3的TRGO事件001:定时器1的CC2事件101:定时器4的CC4事件010:定时器1的CC3事件110:EXTI线11/TIM8_TRGO事件,仅大容量产品具有该功能011:定时器2的CC2事件111:SWSTARTADC采样时间寄存器1(ADC_SMPR1)SMPx[2:0]:选择通道x的采样时间(ChannelxSampletimeselection)这些位用于独立地选择每个通道的采样时间。000:1.5周期001:7.5周期010:13.5周期011:28.5周期100:41.5周期101:55.5周期110:71.5周期111:239.5周期ADC注入通道数据偏移寄存器x(ADC_JOFRx)(x=1..4)JOFFSETx[11:0]:注入通道x的数据偏移(Dataoffsetforinjectedchannelx)当转换注入通道时,这些位定义了用于从原始转换数据中减去的数值。转换的结果可以在ADC_JDRx寄存器中读出。ADC规则序列寄存器1(ADC_SQR1)L[3:0]:规则通道序列长度。SQ16[4:0]:规则序列中的第16个转换,这些位由软件定义转换序列中的第16个转换通道的编号(0~17)。SQ15[4:0]:规则序列中的第15个转换。。。SQ13[4:0]:规则序列中的第13个转换(13thconversioninregularsequence)ADC注入序列寄存器(ADC_JSQR)JL[1:0]:注入通道序列长度(Injectedsequencelength)(00:1个转换;01:2个转换;10:3个转换;11:4个转换)JSQ4[4:0]:注入序列中的第4个转换。(4thconversionininjectedsequence)JSQ3[4:0]:注入序列中的第3个转换(3rdconversionininjectedsequence)ADC注入数据寄存器x(ADC_JDRx)(x=1..4)JDATA[15:0]:注入转换的数据(Injecteddata)这些位为只读,包含了注入通道的转换结果。数据是左对齐或右对齐ADC规则数据寄存器(ADC_DR)ADC2DATA[15:0]:ADC2转换的数据(ADC2data)DATA[15:0]:规则转换的数据(Regulardata)7.5ADC库函数ADC_DeInit:将外设ADCx的全部寄存器重设为缺省值ADC_Init:根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器ADC_StructInit:把ADC_InitStruct中的每一个参数按缺省值填入ADC_Cmd:使能或者失能指定的ADCADC_DMACmd:使能或者失能指定的ADC的DMA请求ADC_ITConfig:使能或者失能指定的ADC的中断ADC_SoftwareStartConvCmd使能或者失能指定的ADC的软件转换启动功能ADC_GetConversionValue:返回最近一次ADCx规则组的转换结果ADC_RegularChannelConfig设置指定ADC的规则组通道,设置它们的转化顺序和采样时间ADC_GetFlagStatus:检查制定ADC标志位置1与否ADC_ClearFlag:清除ADCx的待

1 / 66
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功