当前位置:首页 > 单片机 > 单片机
[导读] 下面介绍一种利用STM32单片机制作的16路多通道ADC采集电路图和源程序。采用USB接口与电脑连接,实则USB转串口方式,所以上位机可以用串口作为接口。电路图中利用LM324作为电压跟随器,起到保护单片机引

 

下面介绍一种利用STM32单片机制作的16路多通道ADC采集电路图和源程序。采用USB接口与电脑连接,实则USB转串口方式,所以上位机可以用串口作为接口。电路图中利用LM324作为电压跟随器,起到保护单片机引脚的作用。直接在电脑USB取点,省去外接电源麻烦,实测耗电电流不到20ma.

1.主控电路图:

2. USB转串口电路图

3.LM324电压跟随器电路图

4.滤波电路图

5.16路接口电路图

6.电源电路图

 

7.16路ADC初始化程序:

voidAdc_Init(void)
{

//先初始化IO口

RCC->APB2ENR|=0X7<<2;//使能PORTA\PORAB\PORTC口时钟

GPIOA->CRL&=0X00000000;//PA01234567anolog输入

GPIOB->CRL&=0XFFFFFF00;//PB01anolog输入

GPIOC->CRL&=0XFF000000;//PC012345anolog输入

//通道10/11设置

RCC->APB2ENR|=1<<9;//ADC1时钟使能

RCC->APB2RSTR|=1<<9;//ADC1复位

RCC->APB2RSTR&=~(1<<9);//复位结束

RCC->CFGR&=~(3<<14);//分频因子清零

//SYSCLK/DIV2=12MADC时钟设置为12M,ADC最大时钟不能超过14M!

//否则将导致ADC准确度下降!

RCC->CFGR|=2<<14;
ADC1->CR1&=0XF0FFFF;//工作模式清零

ADC1->CR1|=0<<16;//独立工作模式

ADC1->CR1&=~(1<<8);//非扫描模式

ADC1->CR2&=~(1<<1);//单次转换模式

ADC1->CR2&=~(7<<17);

ADC1->CR2|=7<<17;//软件控制转换

ADC1->CR2|=1<<20;//使用用外部触发(SWSTART)!!!必须使用一个事件来触发

ADC1->CR2&=~(1<<11);//右对齐ADC1->SQR1&=~(0XF<<20);

ADC1->SQR1&=0<<20;//1个转换在规则序列中也就是只转换规则序列1

//设置通道采样时间

ADC1->SMPR2&=0X00000000;//通道0,1,2,3,4,5,6,7,8,9采样时间清空

ADC1->SMPR2|=7<<27;//通道9239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<24;//通道8239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<21;//通道7239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<18;//通道6239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<15;//通道5239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<12;//通道4239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<9;//通道3239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<6;//通道2239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<3;//通道1239.5周期,提高采样时间可以提高精确度

ADC1->SMPR2|=7<<0;//通道0239.5周期,提高采样时间可以提高精确度

ADC1->SMPR1&=0XFFFC0000;//通道10,11,12,13,14,15采样时间清空

ADC1->SMPR1|=7<<15;//通道15239.5周期,提高采样时间可以提高精确度

ADC1->SMPR1|=7<<12;//通道14239.5周期,提高采样时间可以提高精确度

ADC1->SMPR1|=7<<9;//通道13239.5周期,提高采样时间可以提高精确度

ADC1->SMPR1|=7<<6;//通道12239.5周期,提高采样时间可以提高精确度

ADC1->SMPR1|=7<<3;//通道11239.5周期,提高采样时间可以提高精确度

ADC1->SMPR1|=7<<0;//通道10239.5周期,提高采样时间可以提高精确度

ADC1->CR2|=1<<0;//开启AD转换器

ADC1->CR2|=1<<3;//使能复位校准

while(ADC1->CR2&1<<3);//等待校准结束

//该位由软件设置并由硬件清除。在校准寄存器被初始化后该位将被清除。

ADC1->CR2|=1<<2;//开启AD校准

while(ADC1->CR2&1<<2);//等待校准结束

//该位由软件设置以开始校准,并在校准结束时由硬件清除
}

 

8.获取ADC值的程序:

//获得ADC值
//ch:通道值1~16
u16Get_Adc(u8ch)
{

u8ch_ch;

switch(ch)

{

case1:ch_ch=8;break;

case2:ch_ch=9;break;

case3:ch_ch=14;break;

case4:ch_ch=15;break;

case5:ch_ch=6;break;

case6:ch_ch=7;break;

case7:ch_ch=4;break;

case8:ch_ch=5;break;

case9:ch_ch=2;break;

case10:ch_ch=3;break;

case11:ch_ch=1;break;

case12:ch_ch=0;break;

case13:ch_ch=12;break;

case14:ch_ch=13;break;

case15:ch_ch=11;break;

case16:ch_ch=10;break;

default:ch_ch=88;break;

}

if(ch_ch==88)return0;

//设置转换序列

ADC1->SQR3&=0XFFFFFFE0;//规则序列1通道ch

ADC1->SQR3|=ch_ch;

ADC1->CR2|=1<<22;//启动规则转换通道

while(!(ADC1->SR&1<<1));//等待转换结束

returnADC1->DR;//返回adc值
}

 

9.把ADC值转换成电压值的函数:

//ch范围1~16
voidfetch_adc(u8ch)
{

u16adcx;

u32temp;

if((ch==0)||(ch>16))return;//如果不是1到16,通道无效,退出函数

adcx=Get_Adc(ch);// 获得ADC值

temp=(u32)adcx*3300/4096;//计算电压值单位mv

adcx=temp;//获得计算出的电压值

adc_buf[ch*2-2]=adcx>>8;//给adc_buf赋值,先赋高8位,后赋低8位

adc_buf[ch*2-1]=adcx;
}

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

稳压器只能起到稳定直流电压的作用,它无法改变交流电压的大小和方向,也就无法替代变压器的作用。而变压器虽然自身并没有稳压功能,但是却能够改变电压大小和方向,使得电力设备能够正常传输和分配。

关键字: 稳压器 电压

自举电路(Bootstrap Circuit)是一种在电子电路中广泛应用的升压技术,其核心作用是通过电路自身的工作状态提升某个节点的电压,而无需增加外部电源电压。

关键字: 自举电路 电压

电路保护的意义在于保护电子电路中的元件免受过电压、过电流、浪涌和电磁干扰等有害因素的影响,从而防止设备损坏,确保电子设备的安全和稳定运行‌‌。

关键字: 电路保护 电压

在电子电路中,负电压的产生通常需要一种特殊的电路配置。然而,有一个简单的方法可以获得负电压,那就是利用运算放大器(Op-Amp)和地线。具体来说,你可以将运算放大器配置为一个反相放大器,其输入端接地,并通过适当的电阻和电...

关键字: 电压 运算放大器

一直以来,变压器都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来变压器的相关介绍,详细内容请看下文。

关键字: 变压器 电压 减容

在实际应用中,高压输电通常采用升压变压器将电能升压至数十万伏甚至更高,以减少在输电过程中的电能损耗,并提高输电效率。例如,在我国,送电距离在200-300公里时采用220千伏的电压输电;在100公里左右时采用110千伏;...

关键字: 电压 电网

锂电池多次筛选的关键原因是内阻的重要性‌。锂电池的内阻是指电池在工作时,电流流过电池内部所受到的阻力,包括欧姆内阻和极化内阻‌。内阻的大小直接影响电池的性能和寿命。

关键字: 电压 锂电池

今天,小编将在这篇文章中为大家带来摇表的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 摇表 电阻 电压

上海 2025年6月10日 /美通社/ -- MPS芯源系统(NASDAQ代码:MPWR)近期发布了两款新产品:NovoOne开关MPXG2100系列和PFC稳压器MPG44100系列,旨在为快速发展的快速充电市场、工...

关键字: ACDC 高集成 PS 电压

新型SMD保险丝可实现紧凑的全自动装配,并为高压应用提供增强的保护

关键字: SMD保险丝 自动化 电压
关闭