STM32F10x 应用笔记之 AD 篇——作者 Cnxk521 QQ:120485446 3/20/2011
第1章 STM32 应用笔记之 AD 篇
1.1 ADC 特色介绍
STM32F10x Cortex-M3 核 MCU 系列芯片,集成了 1~3 路 12 位逐次比较型 ADC,其时钟
速率最高可达 14MHz,可编程采样时间,固定转换时间(12.5 个时钟),最快出数据速率(信
号采样时间+转换时间)可达 1MHz(14 个 clk)。2 路 ADC 提供同步、交叉、交替等灵活的
工作模式,为信号的同步采样、交替采样等应用提供了极大的便利。ADC 内部还集成了校
准器,以减小因内部电容器组变化而造成的精度误差。据笔者实际应用,其片内 12bit ADC
比较容易做到 11bit。该 ADC 其他性能如下:
¾ 在选择通道上可执行连续扫描转换;
¾ 外部可触发转换;
¾ 可编程数据对齐模式;
¾ 可编程通道采样时间,转换时间确定(12.5clk);
¾ 转换结束(仅规则组)支持 DMA 传输。
1.2 应用简介
要掌握该 ADC 的应用需要了解两部分内容:输入通道的管理、转换模式。ADC 提
供 10~21 路模拟输入,其中 2 路为内部(片上温度传感器、片上参考电压)测量。其中
片上温度传感器适于测量温度的变化量,而不是实际温度值,如果要应用于比较精准的
温度测量,需要提供外部温度传感器。控制器提供了比较灵活的通道管理方式,下面首
先介绍输入通道的管理。
1.2.1 输入通道的管理
ADC 输入通道管理模式可分为规则组、注入组。规则组指正常的转换,而注入组
则是由外部触发或者软件触发,打断正常的规则组转换(本次转换被迫复位),按照预
先设置的注入通道序列进行转换,等结束转换后继续被中断的规则组转换序列的一种转
换方式。规则组可是某单一的通道,也可是某几个通道的组合,而这些多通道的转换次
序可编程,转换次序长度最大为 16,注入通道最长为 4。
1. 规则组
规则通道的转换顺序在 ADC_SQRx 寄存器中设置,规则组中转换的总数应写入
ADC_SQR1 寄存器的 L[3:0]位中,最长可记录 16 通道的转换顺序。转换结果记录在数
据寄存器(ADC_DR) 中。规则组的转换可由外部事件触发、软件触发进行转换。
应用举例:4 路 ADC 输入通道,分别为 0、2、3、9,转换顺序分别为 2、0、9、3,
假设采用间隔为 71.5clk,其设置如下:
ADC_InitStructure.ADC_NbrOfChannel = 4;
ADC_RegularChannelConfig(ADC1, ADC_Channel_2 , 1, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_0 , 2, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_9 , 3, ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_3 , 4, ADC_SampleTime_71Cycles5);
特别说明:因为规则组的转换结果均保存在寄存器 ADC_DR 中,因此要完成多通道的
转换需要进行特别处理。处理方式有 2 种:借助 DMA 进行传输、中断手工数据搬运方式。