12. 模数转换(ADC) 12.1 ADC 概述 模数转换器(ADC)可以将模拟输入信号转换为表示该信号的一个 12 位二进制数。器件使用的模拟输入 通道共用一个采样保持电路。采样保持电路的输出与模数转换器的输入相连。模数转换器采用逐次逼近法产生 一个 12 位二进制结果,并将该结果保存在 ADC 结果寄存器(ADRESL 和 ADRESH)中。 ADC 参考电压可选择内部 LDO 或 VDD。ADC 在转换完成之后可以产生一个中断。 AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN8 AN9 AN10 AN11 AN15 1.2V 00000 00001 00010 00011 00100 00101 00110 01000 01001 01010 01011 ... 01111 11111 ADC GO/DONE AGND 12 0 = 左对齐 1 = 右对齐 ADRESH ADRESL 12 CHS<4:0> GND ADON ADFM AVDD LDO 2.0V/2.4V/3.0V 图 12-1:ADC 框图 SC8F072 系列 www.mcu.com.cn V1.0.1 76 / 120 12.2 ADC 配置 配置和使用 ADC 时,必须考虑如下因素: ◆ 端口配置; ◆ 参考电压选择 ◆ 通道选择; ◆ ADC 转换时钟源; ◆ 中断控制; ◆ 结果的存储格式。 12.2.1 端口配置 ADC 既可以转换模拟信号,又可以转换数字信号。当转换模拟信号时,应该通过将相应的 TRIS 位置 1, 将 I/O 引脚配置为模拟输入引脚。更多信息请参见相应的端口章节。 12.2.2 通道选择 由 ADCON0 和 ADCON1 寄存器的 CHS 位决定将哪个通道连接到采样保持电路。 如果更改了通道,在下一次转换开始前需要一定的延迟。更多信息请参见“ADC 工作原理”章节。 12.2.3 ADC 内部基准电压 芯片内置基准电压,需要检测该基准电压时,需把设置 CHS[4:0]位为 11111。 12.2.4 ADC 参考电压 ADC 的参考电压可选择内部 LDO 输出或芯片的 VDD 和 GND 提供。内部参考电压可选 2.0V/2.4/3.0V。 当选择内部参考电压时,需要选择较慢的转换时钟,参考转换时钟章节。 注:当选择内部 LDO 作为参考电压时,ADC 有效精度会下降。检测电压越低,得到的 ADC 精度越高, 建议输入电压设置为<1V。 注:对定义为数字输入的引脚施加模拟电压可能导致输入缓冲器出现过电流。 SC8F072 系列 www.mcu.com.cn V1.0.1 77 / 120 12.2.5 转换时钟 可以通过软件设置 ADCON0 寄存器的 ADCS 位来选择转换的时钟源。有以下 4 种可能的时钟频率可供选 择: ◆ FHSI/16 ◆ FHSI/32 ◆ FHSI/64 ◆ FHSI/128 完成一位转换的时间定义为 TAD。一个完整的 12 位转换需要 16 个 TAD 周期。 必须符合相应的 TAD 规范,才能获得正确的转换结果,下表为正确选择 ADC 时钟的示例。 不同参考电压和不同 VDD 时,需要参考以下表格设置合理的分频。 参考电压 (V) 工作电压 (V) 最快分频设置 转换时间(us) FHSI=16M VDD 4.0~5.5 FHSI/16 16 VDD 2.7~4.0 FHSI/32 32 3.0 4.0~5.5 FHSI/32 32 3.0 3.3~4.0 FHSI/64 64 2.4 4.0~5.5 FHSI/32 32 2.4 2.7~4.0 FHSI/64 64 2.0 4.0~5.5 FHSI/64 64 2.0 2.7~4.0 FHSI/128 128 12.2.6 ADC 中断 ADC 模块允许在完成模数转换后产生一个中断。ADC 中断标志位是 PIR1 寄存器中的 ADIF 位。ADC 中 断允许位是 PIE1 寄存器中的 ADIE 位。ADIF 位必须用软件清零。每次转换结束后 ADIF 位都会被置 1,与是 否允许 ADC 中断无关。 12.2.7 结果格式化 12 位 A/D 转换的结果可采用两种格式:左对齐或右对齐。由 ADCON1 寄存器的 ADFM 位控制输出格式。 当 ADFM=0 时,AD 转换结果左对齐,AD 转换结果为 12Bit;当 ADFM=1 时,AD 转换结果右对齐,AD 转换结果为 10Bit。 SC8F072 系列 www.mcu.com.cn V1.0.1 78 / 120 12.3 ADC 工作原理 12.3.1 启动转换 要使能 ADC 模块,必须将 ADCON0 寄存器的 ADON 位置 1,将 ADCON0
时间: 2025-06-22 11:25:41 浏览: 35
<think>好的,我需要帮助用户理解SC8F072系列MCU的ADC工作原理及配置方法。首先,用户的问题涉及多个方面,包括端口配置、参考电压选择、通道选择、转换时钟源、中断控制和结果存储格式。我需要结合提供的引用内容,特别是引用[1]中提到的ADC时钟源配置流程,以及引用[3]中的时钟系统信息,来构建一个详细的回答。
首先,ADC的基本原理是将模拟信号转换为数字信号,这个过程包括采样、保持、量化和编码。需要简要说明这些步骤,然后转入具体配置。
接下来是端口配置。SC8F072的ADC可能需要将特定的GPIO引脚设置为模拟输入模式,并禁用数字功能以避免干扰。需要参考类似MSP430的GPIO配置方法(引用[2]),但要注意不同系列可能有差异,需建议查阅数据手册。
参考电压选择是关键部分,通常有内部参考电压(如VREF+)和外部参考电压选项。需要说明如何通过寄存器配置选择,并强调参考电压对转换精度的影响。
通道选择部分,需要解释如何通过多路复用器选择输入通道,以及如何配置寄存器(如ADC_CHSEL)来选择单通道或多通道扫描模式。
时钟源配置方面,根据引用[1],ADC的时钟源有四个选项(SOSCDIV2_CLK等),需通过PCC_ADCn[PCS]选择,再经ADIV分频。必须确保转换时钟在2-50MHz范围内,否则结果不可靠。需要详细说明设置步骤,包括选择时钟源、分频系数,以及可能的时钟校准步骤。
中断控制部分,需要描述如何使能ADC完成中断,配置中断服务函数,并处理转换完成后的数据存储。可能需要设置ADC_CR1寄存器的中断使能位,并在中断服务例程中读取结果寄存器。
结果存储格式方面,通常为右对齐的12位或16位数据,需说明如何通过寄存器配置对齐方式,并举例说明如何读取和计算实际电压值。
最后,生成相关问题,覆盖时钟源选择、参考电压影响、中断处理、误差来源等方面,帮助用户深入理解。
需要确保回答结构清晰,分步骤解释每个配置环节,正确引用提供的资料,特别是时钟配置流程和注意事项。同时,提醒用户查阅具体的数据手册以确认寄存器名称和地址,因为不同MCU可能有所不同。</think>### SC8F072系列MCU ADC工作原理及配置详解
#### 一、ADC工作原理
模数转换器(ADC)通过采样、保持、量化和编码四个步骤将模拟信号转换为数字信号。SC8F072的ADC通常为逐次逼近型(SAR),其核心是通过比较输入电压与内部DAC输出的参考电压,逐位确定数字量。
#### 二、配置步骤详解
1. **端口配置**
- 将目标GPIO引脚设置为**模拟输入模式**,需配置端口控制寄存器(如`PxMOD`)关闭数字功能[^2]。
- 示例代码:
```c
P1MOD |= 0x01; // 配置P1.0为模拟输入
```
2. **参考电压选择**
- 可选**内部参考电压**(如1.5V/2.0V)或**外部引脚输入**(如VREF+)。
- 通过寄存器`ADC_REFCR`配置:
```c
ADC_REFCR = 0x01; // 选择内部2.0V参考
```
3. **通道选择**
- 通过多路复用器选择输入通道,配置`ADC_CHSEL`寄存器:
```c
ADC_CHSEL = 0x03; // 选择通道3
```
- 支持单次转换或扫描模式,需设置`ADC_CR1[SCAN]`位。
4. **时钟源配置(关键步骤)**
- **时钟源选项**:根据引用[1],可选SOSCDIV2_CLK、SIRCDIV2_CLK等4种时钟源,通过`PCC_ADCn[PCS]`选择。
- **分频设置**:通过`ADC_CFG1[ADIV]`配置分频系数,确保ADCK频率在**2-50MHz**范围内。
- 典型配置流程:
```c
PCC_ADCn |= 0x02; // 选择SIRCDIV2_CLK
ADC_CFG1 |= 0x03 << 2; // ADIV分频系数=8
```
5. **中断控制**
- 使能转换完成中断:设置`ADC_CR1[EOCIE]=1`。
- 中断服务函数示例:
```c
void ADC_ISR() {
uint16_t result = ADC_DR; // 读取结果
// 数据处理...
}
```
6. **结果存储格式**
- 通常为**12位右对齐**,存储于`ADC_DR`寄存器。
- 电压计算公式:
$$V_{in} = \frac{ADC\_DR \times V_{REF}}{4095}$$
#### 三、注意事项
- **转换时间计算**:总时间=采样时间 + 12个ADC时钟周期(12位分辨率)[^1]。
- **噪声抑制**:建议在转换期间保持电源稳定,并启用硬件滤波功能。
阅读全文
相关推荐


















