Cortex-M3开发技术及实践 第10章 ADC和DAC PPT
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
序列被以单次扫描方式进行转换; ➢ 然后,恢复上次被中断的规则组通道转换。如果在注入转换期间产生一规则
事件,注入转换不会被中断,但是规则序列将在注入序列结束后被执行。
- 19 -
ADC工作模式 --数据对齐
➢ 由于STM32F107的ADC只有12位,所以转换后数据储存在16位的 寄存器中,其数据可以左对齐或右对齐,注入组通道转换的数据值 已经减去了在ADC_JOFRx(注入通道数据偏移)寄存器中定义的偏 移量,因此结果可以是一个负值。
管脚 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PC0 PC1 PC2 PC3 PC4 PC5
管脚编号 23 24 25 26 29 30 31 32 35 36 15 16 17 18 33 34
-6-
模拟/数字转换(ADC)--ADC管脚和输 入源
➢对于ADC来说,电源和参考电压极其重要,它直接决定了转换 结果。对于STM32F107来说,相关的几个管脚
描述 单个规则通道上设置模拟看门狗 单个注入通道上设置模拟看门狗 单个规则或注入通道上设置模拟看门狗 所有规则通道上设置模拟看门狗 所有注入通道上设置模拟看门狗 所有规则和注入通道上设置模拟看门狗 不设置模拟看门狗
- 15 -
ADC工作模式 --转换模式
➢STM32F107的ADC有多种转换和工作模式,功能十分强大,可适应 不同场合的转换要求。
ADCx_IN0 ADCx_IN1
ADCx_IN15
注入通道数据寄存器 4*16
规则通道数据寄存器 16位
GPIO端口 多 路 选 择 器
温度传感器
VREFINT
最多4通道
注入通道
ADC转换器
最多16通道
规则通道
DMA请求 ADCCLK
-5-
模拟/数字转换(ADC)--ADC管脚和输 入源
➢STM32F107的ADC可以测量16个外部信号源,分别对应16根管
-4-
模拟/数字转换(ADC)--ADC功能简介
➢ADC模块主要由下列部件组成:
➢ 多路选择器,用于选择16个来自GPIO的端口和温度传感器以及VREFINT信号。 ➢ ADC转换器,用于管理最多四个注入通道和16个规则通道。 ➢ 注入通道数据寄存器,用于存放注入通道转换数据。
➢ 规则通道数据寄存器,用于存放规则通道转换数据。
➢ SEXT位是扩展的符号值。对于规则组通道,不需减去偏移值,因此 只有12个位有效。
注入组数据右对齐
SEXT
SEXT
SEXT
SEXT D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
EOC(转换结束)标志被置位 如果设置了EOC中断,则产生 中断
每次转换数据存储在 ADC_DRJ1寄存器中 JEOC(转换结束)标志被置 位
如果设置了JEOC中断,则产 生中断
- 16 -
ADC工作模式 --扫描模式
➢扫描模式用来扫描一组模拟通道,这组通道可以是已经配置好 的规则组也可以是注入组。 ➢当开启扫描模式后,ADC将扫描“被选中组”中的所有通道, 如果此时的转换模式为单次模式,则在扫描完本组所有通道后, ADC自动停止。 ➢如果转换模式为连续转换,则转换不会在所选择组的最后一个 通道上停止,而是再次从选择组的第一个通道继续转换。
输入,模拟电源地
等效于VSS的模拟电源地
-7-
模拟/数字转换(ADC)--ADC管脚和输 入源
➢注意,VDDA和VSSA应该分别连接到VDD和VSS。 ➢在STM32F107中,还内置了一个温度传感器和一个内部参考电压VREFINT, ➢其中温度传感器和通道ADC1_IN16相连接, ➢内部参照电压VREFINT和ADC1_IN17相连接。温度传感器和VREFINT只能 出现在主ADC1中。
➢STM32F107的ADC有单次转换和连续转换两种方式,而在不同的通 道分组中,当转换完成时,其转换数据存放的位置和相关标志位也不 相同
含义
规则分组
注入分组
单次转换 连续转换
在单次转换模式下,ADC只执行 一次转换
在连续转换模式下,当前面ADC 转换一结束马上会启动另一次转 换
转换数据存储在ADC_DR寄存 器中
- 12 -
模拟/数字转换(ADC)--模拟看门狗
➢如果被ADC转换的模拟电压低于“低阈值(LTR)”或高于 “高阈值(HTR)”,模拟看门狗(AWD)状态位会被置位。
模拟电压 高阈值
低阈值
警戒区域
HTR LTR
- 13 -
模拟/数字转换(ADC)--模拟看门狗
➢配置模拟看门狗的高低阈值,可调用库函数 ADC_AnalogWatchdogThresholdsConfig( ) ➢【示例10- 3】 配置高低阀值 /* 配置ADC1的模拟看门狗高阈值为0x0B00,低阈值为0x0300 */ ADC_AnalogWatchdogThresholdsConfig(ADC1, 0x0B00, 0x0300); ➢模拟看门狗可以作用于1个或多个通道,调用固件库函数 ADC_AnalogWatchdogCmd()使能模拟看门狗,例如: ➢【示例10- 4】 使能模拟看门狗 /* 在单个规则通道上使能模拟看门狗 */ ADC_AnalogWatchdogCmd(ADC1,ADC_AnalogWatchdog_SingleRegEnab le);
通道2
通道8
通道15
通道2
通道0
通道9
……
- 10 -
模拟/数字转换(ADC)--通道选择
➢ADC中断 ➢ADC中断有以下两种情况,这两种中断都有独立的中断使能位:
➢ 规则组和注入组转换结束时能产生中断。 ➢ 当模拟看门狗状态位被设置时也能产生中断。
➢在固件库中,可以通过以下语句开启ADC中断: ➢/* 使能ADC2 EOC 和 AWDOG 中断 */ ➢ADC_ITConfig(ADC2, ADC_IT_EOC | ADC_IT_AWD, ENABLE);
名称
信号类型
含义
VREF+
输入,模拟参考正极 ADC使用的高端/ 正极参考电压,2.4V ≤ VREF+ ≤ VDDA
VDDA
输入,模拟电源
等效于VDD的模拟电源且:2.4V ≤ VDDA ≤VDD(3.6V)
VREF-
输入,模拟参考负极 ADC使用的低端/ 负极参考电压,VREF- = VSSA
VSSA
【示例10- 1】 ADC校准 /* 重置ADC1校验寄存器 */ ADC_ResetCalibration(ADC1); /* 等待重置ADC1校验寄存器完成 */ while(ADC_GetResetCalibrationStatus(ADC1)) {} /* 开始ADC1校验 */ ADC_StartCalibration(ADC1); /* 等待校验完成 */ while(ADC_GetCalibrationStatus(ADC1)) {}
➢ ADC与DAC(数字/模拟转换)架起了一座沟通模拟世界与数 字世界的桥梁
➢ AD转换用来将MCU不方便处理的模拟量转换为数字量,常用 于数据采集,例如电压、电流、电阻和温度等,为MCU的计 算和控制提供数据。
-3-
模拟/数字转换(ADC)--ADC功能简介
➢ STM32F107内置两个12位逐次逼近型ADC转换器(ADC1和ADC2)。其主要特点如下: ➢ 多达18个通道,可测量16个外部信号源和2个内部信号源。 ➢ 各通道的A/D转换可以单次、连续、扫描或间断模式执行。 ➢ ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 ➢ 转换结束、注入转换结束和发生模拟看门狗事件时产生中断。 ➢ ADC转换器可进行自校准。 ➢ 采样间隔可以按通道分别编程。 ➢ 规则转换和注入转换均可由外部触发。 ➢ 规则通道转换期间有DMA请求产生。 ➢ 双ADC模式。 ➢ ADC转换时间:时钟为72MHz时转换时间为1.17μs。 ➢ ADC供电要求:2.4V到3.6V。 ➢ ADC输入范围:V REF- ≤ VIN ≤ VREF+。
-9-
模拟/数字转换(ADC)--通道选择
➢STM32F107有16个多路通道,可以在任意多个通道上以任意顺 序进行一系列转换。可以把转换组织成两组:“规则组”和“注 入组”。这两个分组比较灵活,例如可以如下顺序完成转换
➢ “规则组”最多可以设置16个转换,而“注入组”则最多可设置4个 ➢ “规则组”一般用来普通的AD转换分组 ➢ “注入组”一般用于不常用或突发的AD转换 ➢ 可以认为“注入组”是对“规则组”的一种中断行为。
- 18 -
ADC工作模式 --注入通道管理
➢ 注入通道,是对于规则通道的中断。STM32F107对于注入通道的管 理,还有两种模式,分别为触发注入和自动注入。
➢ 触发注入 ➢ 如果启用触发注入,则由以下三个步骤组成:
➢ 利用外部触发或通过软件触发,启动一组规则通道的转换; ➢ 如果在规则通道转换期间产生一外部注入触发,当前转换被复位,注入通道
ADC_IT_EOC ADC_IT_AWD ADC_IT_JEOC
ADC_IT
描述 规则通道转换结束中断 模拟看门狗中断 注入通道转换结束中断
- 11 -
模拟/数字转换(ADC)--DMA请求
➢因为规则通道转换的值储存在一个数据寄存器(ADC_DR)中, 所以当转换多个规则通道时需要使用DMA,这可以避免丢失已 经存储在寄存器中的数据。 ➢只有在规则通道的转换结束时才产生DMA请求,并将转换的数 据从ADC_DR寄存器传输到用户指定的目的地址。 ➢【示例10- 2】 打开DMA功能 ➢/* 使能 ADC1的 DMA */ ➢ADC_DMACmd(ADC1, ENABLE);
-8-
模拟/数字转换(ADC)--ADC管脚和输 入源
➢校准 ➢ADC有一个内置自校准模式。在校准期间,在每个电容器上都会计算出一个误差修正码(数字 值),这个码用于消除在随后的转换中每个电容器上产生的误差。
➢一旦校准结束,可以开始正常转换。建议在上电时执行一次ADC校准。 ➢校准阶段结束后,校准码储存在ADC_DR(数据寄存器)中。可以使用下述代码调用库函数进 行ADC1的校准。
脚,注意,这16个通道为两个ADC共用
ADC通道 ADC12_IN0 ADC12_IN1 ADC12_IN2 ADC12_IN3 ADC12_IN4 ADC12_IN5 ADC12_IN6 ADC12_IN7 ADC12_IN8 ADC12_IN9 ADC12_IN10 ADC12_IN11 ADC12_IN12 ADC12_IN13 ADC12_IN14 ADC12_IN15
- 14 -
模拟/数字转换(ADC)--模拟看门狗
ADC_AnalogWatchdog ADC_AnalogWatchdog_SingleRegEnable ADC_AnalogWatchdog_SingleInjecEnable ADC_AnalogWatchdog_SingleRegOrInjecEnable ADC_AnalogWatchdog_AllRegEnable ADC_AnalogWatchdog_AllInjecEnable ADC_AnalogWatchdog_AllRegAllInjecEnable ADC_AnalogWatchdog_None
第 10 章
ADC和DAC
本章目标
掌握ADC模块的组成 了解ADC的校准 掌握ADC不同模式的特点 了解双ADC转换模式的特点 理解DAC数据对齐 掌握DAC不同输出模式的特点
-2-
模拟/数字转换(ADC)
➢ 模拟/数字转换(Analog to Digtal Converter,简称ADC,也 可叫做“A/D转换”)是MCU上重要和常用的外设,主要用 来将模拟的数值数字化,以便更方便的进行数字化处理。
- 17 -
ADC工作模式 --间断模式
➢所谓间断模式,即可以对选择的组执行一个短序列的n次转换 (n<=8),一个外部触发信号可以启动下一轮n次转换,直到 此序列所有的转换完成为止,以规则组为例: ➢被转换的通道 = 0、1、2、3、6、7、9、10,当n=3时。 ➢第一次触发:转换的序列为 0、1、2 ➢第二次触发:转换的序列为 3、6、7 ➢第三次触发:转换的序列为 9、10,并产生EOC事件 ➢第四次触发:转换的序列 0、1、2
事件,注入转换不会被中断,但是规则序列将在注入序列结束后被执行。
- 19 -
ADC工作模式 --数据对齐
➢ 由于STM32F107的ADC只有12位,所以转换后数据储存在16位的 寄存器中,其数据可以左对齐或右对齐,注入组通道转换的数据值 已经减去了在ADC_JOFRx(注入通道数据偏移)寄存器中定义的偏 移量,因此结果可以是一个负值。
管脚 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PC0 PC1 PC2 PC3 PC4 PC5
管脚编号 23 24 25 26 29 30 31 32 35 36 15 16 17 18 33 34
-6-
模拟/数字转换(ADC)--ADC管脚和输 入源
➢对于ADC来说,电源和参考电压极其重要,它直接决定了转换 结果。对于STM32F107来说,相关的几个管脚
描述 单个规则通道上设置模拟看门狗 单个注入通道上设置模拟看门狗 单个规则或注入通道上设置模拟看门狗 所有规则通道上设置模拟看门狗 所有注入通道上设置模拟看门狗 所有规则和注入通道上设置模拟看门狗 不设置模拟看门狗
- 15 -
ADC工作模式 --转换模式
➢STM32F107的ADC有多种转换和工作模式,功能十分强大,可适应 不同场合的转换要求。
ADCx_IN0 ADCx_IN1
ADCx_IN15
注入通道数据寄存器 4*16
规则通道数据寄存器 16位
GPIO端口 多 路 选 择 器
温度传感器
VREFINT
最多4通道
注入通道
ADC转换器
最多16通道
规则通道
DMA请求 ADCCLK
-5-
模拟/数字转换(ADC)--ADC管脚和输 入源
➢STM32F107的ADC可以测量16个外部信号源,分别对应16根管
-4-
模拟/数字转换(ADC)--ADC功能简介
➢ADC模块主要由下列部件组成:
➢ 多路选择器,用于选择16个来自GPIO的端口和温度传感器以及VREFINT信号。 ➢ ADC转换器,用于管理最多四个注入通道和16个规则通道。 ➢ 注入通道数据寄存器,用于存放注入通道转换数据。
➢ 规则通道数据寄存器,用于存放规则通道转换数据。
➢ SEXT位是扩展的符号值。对于规则组通道,不需减去偏移值,因此 只有12个位有效。
注入组数据右对齐
SEXT
SEXT
SEXT
SEXT D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
EOC(转换结束)标志被置位 如果设置了EOC中断,则产生 中断
每次转换数据存储在 ADC_DRJ1寄存器中 JEOC(转换结束)标志被置 位
如果设置了JEOC中断,则产 生中断
- 16 -
ADC工作模式 --扫描模式
➢扫描模式用来扫描一组模拟通道,这组通道可以是已经配置好 的规则组也可以是注入组。 ➢当开启扫描模式后,ADC将扫描“被选中组”中的所有通道, 如果此时的转换模式为单次模式,则在扫描完本组所有通道后, ADC自动停止。 ➢如果转换模式为连续转换,则转换不会在所选择组的最后一个 通道上停止,而是再次从选择组的第一个通道继续转换。
输入,模拟电源地
等效于VSS的模拟电源地
-7-
模拟/数字转换(ADC)--ADC管脚和输 入源
➢注意,VDDA和VSSA应该分别连接到VDD和VSS。 ➢在STM32F107中,还内置了一个温度传感器和一个内部参考电压VREFINT, ➢其中温度传感器和通道ADC1_IN16相连接, ➢内部参照电压VREFINT和ADC1_IN17相连接。温度传感器和VREFINT只能 出现在主ADC1中。
➢STM32F107的ADC有单次转换和连续转换两种方式,而在不同的通 道分组中,当转换完成时,其转换数据存放的位置和相关标志位也不 相同
含义
规则分组
注入分组
单次转换 连续转换
在单次转换模式下,ADC只执行 一次转换
在连续转换模式下,当前面ADC 转换一结束马上会启动另一次转 换
转换数据存储在ADC_DR寄存 器中
- 12 -
模拟/数字转换(ADC)--模拟看门狗
➢如果被ADC转换的模拟电压低于“低阈值(LTR)”或高于 “高阈值(HTR)”,模拟看门狗(AWD)状态位会被置位。
模拟电压 高阈值
低阈值
警戒区域
HTR LTR
- 13 -
模拟/数字转换(ADC)--模拟看门狗
➢配置模拟看门狗的高低阈值,可调用库函数 ADC_AnalogWatchdogThresholdsConfig( ) ➢【示例10- 3】 配置高低阀值 /* 配置ADC1的模拟看门狗高阈值为0x0B00,低阈值为0x0300 */ ADC_AnalogWatchdogThresholdsConfig(ADC1, 0x0B00, 0x0300); ➢模拟看门狗可以作用于1个或多个通道,调用固件库函数 ADC_AnalogWatchdogCmd()使能模拟看门狗,例如: ➢【示例10- 4】 使能模拟看门狗 /* 在单个规则通道上使能模拟看门狗 */ ADC_AnalogWatchdogCmd(ADC1,ADC_AnalogWatchdog_SingleRegEnab le);
通道2
通道8
通道15
通道2
通道0
通道9
……
- 10 -
模拟/数字转换(ADC)--通道选择
➢ADC中断 ➢ADC中断有以下两种情况,这两种中断都有独立的中断使能位:
➢ 规则组和注入组转换结束时能产生中断。 ➢ 当模拟看门狗状态位被设置时也能产生中断。
➢在固件库中,可以通过以下语句开启ADC中断: ➢/* 使能ADC2 EOC 和 AWDOG 中断 */ ➢ADC_ITConfig(ADC2, ADC_IT_EOC | ADC_IT_AWD, ENABLE);
名称
信号类型
含义
VREF+
输入,模拟参考正极 ADC使用的高端/ 正极参考电压,2.4V ≤ VREF+ ≤ VDDA
VDDA
输入,模拟电源
等效于VDD的模拟电源且:2.4V ≤ VDDA ≤VDD(3.6V)
VREF-
输入,模拟参考负极 ADC使用的低端/ 负极参考电压,VREF- = VSSA
VSSA
【示例10- 1】 ADC校准 /* 重置ADC1校验寄存器 */ ADC_ResetCalibration(ADC1); /* 等待重置ADC1校验寄存器完成 */ while(ADC_GetResetCalibrationStatus(ADC1)) {} /* 开始ADC1校验 */ ADC_StartCalibration(ADC1); /* 等待校验完成 */ while(ADC_GetCalibrationStatus(ADC1)) {}
➢ ADC与DAC(数字/模拟转换)架起了一座沟通模拟世界与数 字世界的桥梁
➢ AD转换用来将MCU不方便处理的模拟量转换为数字量,常用 于数据采集,例如电压、电流、电阻和温度等,为MCU的计 算和控制提供数据。
-3-
模拟/数字转换(ADC)--ADC功能简介
➢ STM32F107内置两个12位逐次逼近型ADC转换器(ADC1和ADC2)。其主要特点如下: ➢ 多达18个通道,可测量16个外部信号源和2个内部信号源。 ➢ 各通道的A/D转换可以单次、连续、扫描或间断模式执行。 ➢ ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 ➢ 转换结束、注入转换结束和发生模拟看门狗事件时产生中断。 ➢ ADC转换器可进行自校准。 ➢ 采样间隔可以按通道分别编程。 ➢ 规则转换和注入转换均可由外部触发。 ➢ 规则通道转换期间有DMA请求产生。 ➢ 双ADC模式。 ➢ ADC转换时间:时钟为72MHz时转换时间为1.17μs。 ➢ ADC供电要求:2.4V到3.6V。 ➢ ADC输入范围:V REF- ≤ VIN ≤ VREF+。
-9-
模拟/数字转换(ADC)--通道选择
➢STM32F107有16个多路通道,可以在任意多个通道上以任意顺 序进行一系列转换。可以把转换组织成两组:“规则组”和“注 入组”。这两个分组比较灵活,例如可以如下顺序完成转换
➢ “规则组”最多可以设置16个转换,而“注入组”则最多可设置4个 ➢ “规则组”一般用来普通的AD转换分组 ➢ “注入组”一般用于不常用或突发的AD转换 ➢ 可以认为“注入组”是对“规则组”的一种中断行为。
- 18 -
ADC工作模式 --注入通道管理
➢ 注入通道,是对于规则通道的中断。STM32F107对于注入通道的管 理,还有两种模式,分别为触发注入和自动注入。
➢ 触发注入 ➢ 如果启用触发注入,则由以下三个步骤组成:
➢ 利用外部触发或通过软件触发,启动一组规则通道的转换; ➢ 如果在规则通道转换期间产生一外部注入触发,当前转换被复位,注入通道
ADC_IT_EOC ADC_IT_AWD ADC_IT_JEOC
ADC_IT
描述 规则通道转换结束中断 模拟看门狗中断 注入通道转换结束中断
- 11 -
模拟/数字转换(ADC)--DMA请求
➢因为规则通道转换的值储存在一个数据寄存器(ADC_DR)中, 所以当转换多个规则通道时需要使用DMA,这可以避免丢失已 经存储在寄存器中的数据。 ➢只有在规则通道的转换结束时才产生DMA请求,并将转换的数 据从ADC_DR寄存器传输到用户指定的目的地址。 ➢【示例10- 2】 打开DMA功能 ➢/* 使能 ADC1的 DMA */ ➢ADC_DMACmd(ADC1, ENABLE);
-8-
模拟/数字转换(ADC)--ADC管脚和输 入源
➢校准 ➢ADC有一个内置自校准模式。在校准期间,在每个电容器上都会计算出一个误差修正码(数字 值),这个码用于消除在随后的转换中每个电容器上产生的误差。
➢一旦校准结束,可以开始正常转换。建议在上电时执行一次ADC校准。 ➢校准阶段结束后,校准码储存在ADC_DR(数据寄存器)中。可以使用下述代码调用库函数进 行ADC1的校准。
脚,注意,这16个通道为两个ADC共用
ADC通道 ADC12_IN0 ADC12_IN1 ADC12_IN2 ADC12_IN3 ADC12_IN4 ADC12_IN5 ADC12_IN6 ADC12_IN7 ADC12_IN8 ADC12_IN9 ADC12_IN10 ADC12_IN11 ADC12_IN12 ADC12_IN13 ADC12_IN14 ADC12_IN15
- 14 -
模拟/数字转换(ADC)--模拟看门狗
ADC_AnalogWatchdog ADC_AnalogWatchdog_SingleRegEnable ADC_AnalogWatchdog_SingleInjecEnable ADC_AnalogWatchdog_SingleRegOrInjecEnable ADC_AnalogWatchdog_AllRegEnable ADC_AnalogWatchdog_AllInjecEnable ADC_AnalogWatchdog_AllRegAllInjecEnable ADC_AnalogWatchdog_None
第 10 章
ADC和DAC
本章目标
掌握ADC模块的组成 了解ADC的校准 掌握ADC不同模式的特点 了解双ADC转换模式的特点 理解DAC数据对齐 掌握DAC不同输出模式的特点
-2-
模拟/数字转换(ADC)
➢ 模拟/数字转换(Analog to Digtal Converter,简称ADC,也 可叫做“A/D转换”)是MCU上重要和常用的外设,主要用 来将模拟的数值数字化,以便更方便的进行数字化处理。
- 17 -
ADC工作模式 --间断模式
➢所谓间断模式,即可以对选择的组执行一个短序列的n次转换 (n<=8),一个外部触发信号可以启动下一轮n次转换,直到 此序列所有的转换完成为止,以规则组为例: ➢被转换的通道 = 0、1、2、3、6、7、9、10,当n=3时。 ➢第一次触发:转换的序列为 0、1、2 ➢第二次触发:转换的序列为 3、6、7 ➢第三次触发:转换的序列为 9、10,并产生EOC事件 ➢第四次触发:转换的序列 0、1、2