嵌入式系统导论(第2版)-教学课件 嵌入式导论10_第1页
嵌入式系统导论(第2版)-教学课件 嵌入式导论10_第2页
嵌入式系统导论(第2版)-教学课件 嵌入式导论10_第3页
嵌入式系统导论(第2版)-教学课件 嵌入式导论10_第4页
嵌入式系统导论(第2版)-教学课件 嵌入式导论10_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统导论主讲教师:第10章

STM32的模拟接口本章内容提要10.1STM32的ADC接口10.2STM32的DAC接口模拟量——连续变化的物理量模拟/数字转换器ADCDAC数字/模拟转换器数字量——时间和数值上都离散的量10.1STM32的ADC接口拥有1~3个12位ADC每个ADC具有16个模拟输入通道可以测量16个外部信号源主ADC1还可以测量2个内部信号源各个通道可以采用单次、连续、扫描或间断模式将模拟量转换为数字量12位转换结果保存于16位数据寄存器中可以选择左对齐或右对齐方式存储ADC相关引脚引脚名称信号类型说明VREF+输入,模拟参考正极使用的高端/正极参考电压,2.4V≤VREF+≤VDDAVDDA

输入,模拟电源等效于VDD的模拟电源,2.4V≤VDDA≤VDD(3.6V)VREF-输入,模拟参考负极ADC使用的低端/负极参考电压,VREF-=VSSAVSSA输入,模拟电源地等效于VSS的模拟电源地ADCx_IN[15:0]模拟输入信号16个模拟输入通道ADC通道选择ADC共16个多路复用通道,可组织成两组一个组由一系列转换组成可以是在任何通道上、并以任何顺序进行规则组:由最多16个转换组成注入组:由最多4个转换组成存放ADC转换出来的数据分为规则通道数据寄存器(1个)注入通道数据寄存器(4个)。注入通道的转换可以打断规则通道的转换ADC触发选择ADC部件需要收到触发信号才开始进行转换对于ADC1和ADC2,触发信号可以来自外部(规则通道EXTI11,注入通道EXTI15)来自内部定时器(TIM1~TIM4的有关事件)使用软件触发转换ADC3触发信号来自内部定时器(TIM1~TIM4、TIM5和TIM8的有关事件)也可以是软件触发ADC转换时间采样时间(可变)+12.5个时钟周期(固定)ADCCLK时钟最大14MHzADC最小转换时间=1.5+12.5=14个时钟12位结果在16位寄存器的数据对齐ADC中断中断事件事件标志允许控制位规则组转换结束EOCEOCIE注入组转换结束JEOCJEOCIE模拟看门狗状态位置位AWDAWDIEADC的DMA请求规则组通道的转换结果只有一个数据寄存器多个规则通道的转换,有必要使用DMA方式处理数据,以免数据溢出一个规则通道转换结束,就可产生DMA请求将规则组数据寄存器ADC_DR的数据利用DMA方式 传送到用户事先选定的目的位置只有ADC1(和ADC3)能够产生DMA请求ADC2可以在双ADC模式中使用ADC1的DMA请求【例10-1】ADC应用示例:数据采集一个20K滑动变阻器接在PC1上通过滑动变阻器提供的模拟输入电压经A/D转换获得电压的数字量采用DMA方式传输到主存再由主存传送到串口显示

初始化ADC1-1voidADC1_Config(void){

ADC_InitTypeDefADC_InitStructure;/*(1)配置ADC1相关的外设*/

GPIOC_Config();DMA1_Config();/*(2)开启ADC1时钟

*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);初始化ADC1-2/*(3)配置ADC1工作模式*/

ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode=DISABLE;ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;

ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel=1;ADC_Init(ADC1,&ADC_InitStructure);

初始化ADC1-3/*(4)配置ADC时钟*/

RCC_ADCCLKConfig(RCC_PCLK2_Div8);//设置PCLK2分频系数为8,即ADCCLK=72MHz/8

ADC_RegularChannelConfig(ADC1,ADC_Channel_11,1,ADC_SampleTime_55Cycles5); //*选择ADC1的通道11为55.5个采样周期,序列为1/*(5)允许ADC1的DMA*/

ADC_DMACmd(ADC1,ENABLE);/*(6)允许ADC1,开启A/D转换*/

ADC_Cmd(ADC1,ENABLE);初始化ADC1-4/*(7)ADC校准*/

ADC_ResetCalibration(ADC1); //复位校准寄存器

while(ADC_GetResetCalibrationStatus(ADC1)); //等待校准寄存器复位完成

ADC_StartCalibration(ADC1); //启动ADC校准

while(ADC_GetCalibrationStatus(ADC1)); //等待校准完成/*(8)软件触发A/D转换*/

ADC_SoftwareStartConvCmd(ADC1,ENABLE);}【例10-1】软件仿真10.2STM32的DAC接口DAC模块是一个12位电压输出的D/A转换器可配置为8位或12位的数字输入由内部软件或外部信号触发转换DAC模块有两个输出通道每个通道具有各自的转换器,都支持DMA传输DAC模块还支持双DAC通道模式,可同时或分别转换DAC可输出直流电压或规则波形电压信号比如:三角波、噪声波、锯齿波等DAC结构DAC相关引脚引脚名称信号类型说明VREF+输入,模拟参考正极高端/正极参考电压,2.4V≤VREF+≤VDDA(3.3V)VDDA

输入,模拟电源模拟电源VSSA输入,模拟电源地模拟电源地DAC_OUTx模拟输出信号DAC通道x的模拟输出DAC触发和转换D/A转换的触发源微控制器的内部定时器事件(TIM2~TIM8)外部引脚(EXTI_9)软件控制触发(SWTRIG)数字输入量经DAC被线性转换为模拟电压输出范围为0到参考电压(VREF+)【例10-2】DAC应用示例:输出模拟电压控制DAC通道1(即PA4引脚)输出模拟电压利用开发板上的按键KEY1(PA0)改变输出电压值程序根据输出的数字量按照输出电压公式计算出理论模拟电压值并通过USART1发送给终端显示用万用表测量其实际输出的模拟电压值对比显示的理论值与万用表测量的实际值DAC1初始化-1voidDAC_Config(void){DAC_InitTypeDefDAC_InitStructure;DAC_GPIO_Config(); //配置PA4

RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);//开启DAC的时钟

DAC_InitStructure.DAC_Trigger=DAC_Trigger_None;//不需要触发

DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None;//不生成噪声或三角波DAC1初始化-2DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_4095; //可省

DAC_InitStructure.DAC_OutputBuffer=DAC_Outp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论