CH32X035系列微控制器内置了12位ADC,可以用于采集模拟信号并将其转换为数字信号。关于CH32X035的ADC使用,可以参考以下步骤: - 将ADC通道配置为对应的外设通道。例如,如果想要将ADC1通道0配置为外部信号输入通道,可以使用HAL_ADC_ConfigChannel()函数,设置ADC1通道0对应的外设通道。
- 进行ADC初始化。可以使用HAL_ADC_Init()函数进行ADC初始化操作。
- 读取ADC通道的值。可以使用HAL_ADC_GetValue()函数读取指定通道的ADC值。.
下面进行ADC的使用。
主要特性:
12 位分辨率 支持 14 个外部通道和 1 个内部信号采样源
多通道的多种采样转换方式:单次、连续、扫描、触发、间断等
数据对齐模式:左对齐(仅规则组)、右对齐
采样时间可按通道分别编程
规则转换和注入转换均支持外部触发
模拟看门狗监测通道电压,自校准功能
ADC 通道输入范围:0≤VIN≤VD
框架:
ADC配置:
相关代码:
ADC_InitTypeDef ADC_InitStructure = {0};
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1);
ADC_CLKConfig(ADC1, ADC_CLK_Div6);
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);
ADC_DMACmd(ADC1, ENABLE);
ADC_Cmd(ADC1, ENABLE);
for(i = 0; i < 1024; i++){
printf("%04d\r\n", TxBuf[i]);
Delay_Ms(10);
}
<blockquote> DMA_Tx_Init(DMA1_Channel1, (u32)&ADC1->RDATAR, (u32)TxBuf, 1024);
输出结果:
PA1下拉时:
PA1上拉时:
|
不错,赞一个