stm32f103c8t6学习笔记 DAY8 AD多通道采集

STM32 ADC配置基本流程:

1.开启对应的GPIO口时钟和ADC时钟

2.开启ADC时钟,分频使得ADCCLK小于14MHz

3.对对应端口的GPIO口进行初始化,定义GPIO结构体,初始化GPIO配置,设为模拟输入模式

4.选择规则组输入通道

5.定义ADC结构体,初始化ADC配置

6.如果需要进行中断和看门狗配置

7.使能ADC

8.ADC校准

具体代码如下

#include "stm32f10x.h"                  // Device header

void AD_Init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN,ENABLE);
    
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);               /*使得CLK小于14MHz*/
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA,&GPIO_InitStructure); 


    
    ADC_InitTypeDef ADC_InitStructure;
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;/*失能连续转换*/
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;/*ADC数据右对齐*/
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;/*外部触发源:None为使用内部软件触发*/
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;         /*ADC工作模式:独立模式*/
    ADC_InitStructure.ADC_NbrOfChannel = 1;/*通道数目1*/
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;/*失能扫描转换模式*/
    ADC_Init(ADC1,&ADC_InitStructure);
    
    ADC_Cmd(ADC1,ENABLE);/*开启ADC1*/
    
    ADC_ResetCalibration(ADC1);/*复位校准*/
    while (ADC_GetResetCalibrationStatus(ADC1) == SET);/*等待复位校准完成,如果校准位一直为1则死等*/
    ADC_StartCalibration(ADC1);/*开始校准*/
    while (ADC_GetCalibrationStatus(ADC1) == SET);/*等待校准完成,如果校准位一直为1则死等*/
    
    
}

uint16_t AD_GetValue(uint8_t CH)
{
    ADC_RegularChannelConfig(ADC1,CH,1,ADC_SampleTime_55Cycles5);/*选择规则组输入通道,通道CH,序列1*/
    ADC_SoftwareStartConvCmd(ADC1,ENABLE);/*软件触发转换*/
    while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == RESET);/*等待转换完成,如果EOC一直为0则还在转换一直死等*/
    return ADC_GetConversionValue(ADC1);/*获取ADC值0-4095*/
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: STM32F103C8T6是一款常用的STM32系列单片机,它具有多通道AD采集功能。多通道AD采集可以同时采集多个模拟信号,提高了采集效率和精度。在使用多通道AD采集时,需要配置ADC的多通道扫描模式,并设置每个通道的采样时间和顺序。同时,还需要注意ADC的参考电压和分辨率,以保证采集精度和稳定性。 ### 回答2: STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器,其内置模数转换器(ADC)。多通道AD采集是指在同一时刻,将多个信号输入到MCU的ADC进行采集。对于STM32F103C8T6来说,它有多个ADC通道可供使用,可以实现多通道AD采集,使得在一定程度上提升系统的精度和性能。 首先,由于STM32F103C8T6具备高可扩展性,因此我们可以灵活配置ADC通道,以满足不同的应用需求。STM32F103C8T6ADC模块提供了最多10个独立的单通道或5个双通道ADC,每个通道都有12位精度,并支持多种采样时间。我们可以根据具体要求选择ADC所需要的通道,使多个信号同时输入进来。 其次,STM32F103C8T6ADC模块也支持DMA(直接内存访问)传输,这样可以提高ADC数据采集的效率和稳定性,避免CPU的干预,使系统更加稳定可靠。 除此之外,为了在多通道AD采集过程中提高系统的精度,我们可以采取一些措施,例如: 1.在采集过程中,为不同的信号选择不同的采样时间,使得每个信号都能够得到合理的采样。 2.合理安排ADC采样顺序,避免不同信号之间的相互干扰。 3.对于需要进行滤波处理的信号,可以通过滤波器等方法对其进行处理,提高精度。 综上所述,STM32F103C8T6具备多通道AD采集的能力,并且由于其高可扩展性和支持DMA传输等特性,可以在实现高精度、高效率的数据采集方面发挥重要作用。需要注意的是,在设计时要充分了解STM32F103C8T6的硬件特性和规格要求,根据具体的应用需求合理配置ADC通道,以实现最佳的采集效果。 ### 回答3: stm32f103c8t6是一款带有12位ADC(模数转换器)的微控制器,可以进行多通道AD采集多通道AD采集是指在一个单独的AD转换器上同步地进行多个模拟电压信号的采集。通过使用多通道AD采集,可以在一个设备上同时采集多个传感器的信号,并减少硬件成本和减小系统的复杂性。 在stm32f103c8t6中,多通道AD采集可以通过以下步骤实现: 1. 配置ADC模块:配置ADC时钟频率和精度等。可以使用标准库函数进行配置,例如“HAL_ADC_Init”。 2. 配置多通道采集选择需要采集模拟信号的通道和采样时间,可以使用“HAL_ADC_ConfigChannel”函数设置多个通道。 3. 启动ADC转换:使用“HAL_ADC_Start_DMA”或“HAL_ADC_Start_IT”函数启动ADC转换。DMA(直接存储器访问)是一种高效的方式,可以将采集的数据传输到内存,并且不需要CPU占用。而IT(中断)方式可以及时响应ADC转换完成的中断。 4. 处理数据:一旦采集完成,数据可以在内存中访问。可以使用DMA或IT中断来处理数据,例如进行滤波或计算平均值等。 需要注意的是,由于多通道采集需要更多的时间和精力,因此需要考虑ADC转换的采样率和处理速度等因素。此外,在选择采集模拟信号的通道时,还需要考虑信号的后处理和滤波等问题,以确保采集到的数据质量良好。 总之,stm32f103c8t6多通道AD采集功能在实际应用中有着广泛的应用。只要仔细设计和优化,就可以实现高质量的模拟信号采集,并且可以降低成本和提高效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值