STM32双路ADC注入通道和规则通道采样

文章详细描述了在STM32F103C8T6微控制器上使用ADC进行规则和注入通道采样,同时利用DMA进行数据传输,避免了中断干扰。作者分享了解决连续转换模式导致的问题、规则通道采集错误以及数据滤波溢出的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

电机控制使用四路注入通道采集,参考ST官方库,使用定时器10us触发一次,使用ADC1和ADC2各2路注入通道。

需要一路ADC进行规则采样油门信号,使用中断的话会和注入通道中断放在同一个函数里面 ,我不喜欢,所以使用了DMA中断。

PreKnowledge:

规则通道:最多16个规则通道,采样数据存储ADCx-->DR

注入通道:最多4个注入通道,采样数据存储ADCx-->JDR。注入通带顾名思义是在规则通道转换中插队的通道。在规则通道转换的时候有注入通道的信息进来,则先将注入通道转换结束再回到规则通道,所以注入通道只有在规则通道存在时才会出现。

DMA通道:DMA转换注入通道还是规则通道,外设地址进行不同设置就行。还有一个,就是DMA只有在规则通道转换结束的时候才会被触发,记不清在哪篇博客里面看到的了,但是官方文档中没找到这句话。

使用芯片:STM32F103C8T6    软件:keil5

1.ADC设置

    ADC_InitTypeDef ADC_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 |RCC_APB2Periph_ADC2, ENABLE);
	RCC_ADCCLKConfig(RCC_PCLK2_Div6);  		//ADC时钟=(晶振频率/分频)72Mhz/6 = 12Mhz
	
	ADC_InitStructure.ADC_Mode = ADC_Mode_RegInjecSimult; 	//混合的同步规则和注入
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
	ADC_InitStructure.ADC_ScanConvMode 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值