ADC转换模式:
单次转换模式: 每次进行一次ADC转换后,ADC会自动停止,并将结果存储在ADC数据寄存器中。
重复单次转换模式: 当ADC完成一次转换后,它会自动启动另一次转换,持续的进行转换,直到外部触发或者软件触发的方式停止连续转换。
多通道顺序单次转换模式: 用于对多个输入通道进行依次转换。在该模式下,ADC会根据配置的通道采集顺序,对多个通道进行单次采样并转换。
多通道顺序重复转换模式: 用于对多个输入通道进行依次重复转换。在该模式下,ADC会根据配置的通道采集顺序,对多个通道进行重复采样并转换。
ADC基本参数:
分辨率: 表示ADC转换器的输出精度,通常以位数(bit)表示,MSPM0L1306支持8、10、12位的分辨率,位数越高,精度越高。
采样率: 表示ADC对模拟输入信号进行采样的速率,通常以每秒采样次数(SPS)表示,也称为转换速率,表示ADC能够进行多少次模拟到数字的转换。MSPM0G3507的SPS为4Msps。
电压基准: ADC的电压基准是用于与模拟输入信号进行比较,从而实现模拟信号到数字信号的转换的一个参考电压。
而MSPM0G3507可以支持软件选择三种基准:
(1)MCU 电源电压 (VDD) (默认)
(2)通过 VREF+和 VREF- 引脚为 ADC 提供外部基准
(3)1.4V 和 2.5V 的可配置内部专用 ADC 基准电压 (VREF)
采样范围: 指ADC可以采集到的模拟输入信号的电压范围,范围:VREF- ≤ ADC ≤ VREF+
其中VREF- 为设置的电压基准负,通常为0V。VREF+ 为电压基准正,根据软件的配置确定范围。
一,图像配置界面(ADC相关)
ADC12 Profiles:自定义模板
ADC12 Clock Source:系统时钟
Sample Cloack Divider:8分频(保证采样率为4M)
Conversion Mode:Single (单通道)
Conversion Starting Address :数据存放地址0
Sampling Mode:采样模式手动(手动开启采样)
Trigger Source:Software (软件)
Conversion Data Format :右对齐
Active Memory Control Blocks :内存0(与上面设置一致)
//内存0配置:
Input Channel :通道0
Device Pin Name :引脚
Reference Voltage:参考电压(默认VDD)
Conversion Resolution :12-bits(分辨率)
Power Down Mode:手动
PinMux:
ADC12 Peripheral ADC0
ADC12 Channel 0 Pin PA27/31
二,单通道采集代码(内存0):
void adc_getvalue(uint16_t *data)
{
//使能ADC转换
DL_ADC12_enableConversions(ADC12_0_INST);
//软件触发ADC开始转换
DL_ADC12_startConversion(ADC12_0_INST);
//如果当前状态 不是 空闲状态
while (DL_ADC12_getStatus(ADC12_0_INST) != DL_ADC12_STATUS_CONVERSION_IDLE );
//清除触发转换状态
DL_ADC12_stopConversion(ADC12_0_INST);
//失能ADC转换
DL_ADC12_disableConversions(ADC12_0_INST);
//获取数据
data[0] = DL_ADC12_getMemResult(ADC12_0_INST, ADC12_0_ADCMEM_0);
//data[1] = DL_ADC12_getMemResult(ADC12_0_INST, ADC12_0_ADCMEM_1);
}
uint32_t adc_time=0;
void ADC_Proc()
{
if(uwTick - adc_time<100) return;
uwTick = adc_time;
char buff[128];
adc_getvalue(&adc_value);
snprintf(buff, 128, "ADC:%d\r\n",adc_value);
UART_Tx_Display(buff,strlen(buff));
}