电阻电压采集(M4扫描法)

一.ADC介绍和STM32F429芯片介绍

1.ADC介绍

12位ADC是一种逐次逼近型模拟数字转换器。它有18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。

2.STM32F429芯片介绍

STM32属于一个微控制器,自带了各种常用通信接口,功能非常强大
1、串口一USART,用于跟跟串口接口的设备通信,比如:USB转串口模块、ESP8266 WIFI、GPS 模块,GSM模块,串口屏、指纹识别模块
2、内部集成电路一12C,用于跟I2C接口的设备通信,比如:EEPROM、电容屏、陀螺仪 MPU6050、0.96寸OLED 模块
3、串行通信接口一SPI,用于跟 SPI 接口的设备通信,比如:串行 FLASH、以太网 W5500、音频模块VS1053
4、SDIO、FSMC的超级、I2S、ADC、GPIO
5、STM32常用在嵌入式领域。

(1)智能车:循迹小车,读取光电传感器或者摄像头的数据,驱动电机前进和转弯。

(2)无人机:读取陀螺仪加速度计的姿态数据,根据控制算法控制电机速度,保证飞机稳定飞行。

(3)机器人:驱动舵机,控制其关节,让机器人运动。

(4)无线通信:给STM32连接一些2.4G无线模块或者蓝牙、WIFI模块,则具备无线通信能力。

(5)物联网:借助无线通信模块,再通过STM32驱动继电器来控制220v电路的通断。

(6)工业控制:PLC主控。

(7)娱乐电子产品:流水灯之类……

6、STM32功能强大、性能优异、片上资源丰富、功耗低、是一款经典的嵌入式微控制器。

二.ADC主要特征

(1) 12-位分辨率
(2)转换结束,注入转换结束和发生模拟看门狗事件时产生中断
(3)单次和连续转换模式
(4)从通道0到通道n的自动扫描模式
(5)自校准
(6)带内嵌数据一致的数据对齐
(7)通道之间采样间隔可编程
(8) 规则转换和注入转换均有外部触发选项
(9)间断模式
(10)双重模式(带2个或以上ADC的器件)
(11) ADC供电要求:2.4V到3.6V
(12)ADC输入范围:VREF- ≤ VIN ≤ VREF+
(13)规则通道转换期间有DMA请求产生。

三.电路原理图

在这里插入图片描述

四.具体操作

1. 建工程模板

(1)建两个新的.c和.h文件,gpio.init.c、gpio.init.h文件和delay.c、delay.h文件,步骤如下。
(1.1)点击file,选择第一个New.
在这里插入图片描述
(1.2)点击左上角保存,弹出一个窗口(注:保存在工程模板里的user),给text命名后保存在这里插入图片描述
(1.3)相同步骤,创建.h文件在这里插入图片描述
(1.4)创建好文件如图在这里插入图片描述
(1.5)把下面文件下载复制到user里
usart文件链接
在这里插入图片描述
(1.6)把下载的usart文件和建好的.c和.h文件加入工程模板里,

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1.7)最后把.h文件也添加入工程模版,步骤如下
在这里插入图片描述
在这里插入图片描述

2.运行代码

(1)gpio.init.c文件的代码

#include "gpio.init.h"

static void ADC_GPIO_Config(void)//ADC管脚配置方式
{
	GPIO_InitTypeDef  GPIO_InitStruct;
	//使能gpio时钟
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
	//配置IO
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AN;
	GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
	
	GPIO_Init(GPIOC,&GPIO_InitStruct);
}

static void ADC_CommonInit_Config(void)//ADC通用初始化
{
	
	ADC_CommonInitTypeDef  ADC_CommonInitStruct;
	//
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//开启ADC时钟
	
	ADC_CommonInitStruct.ADC_Mode=ADC_Mode_Independent ;//独立ADC模式
	ADC_CommonInitStruct.ADC_Prescaler= ADC_Prescaler_Div2;//时钟为fpclk x分频
	ADC_CommonInitStruct.ADC_DMAAccessMode=ADC_DMAAccessMode_Disabled ;//禁止DMA直接访问模式
	ADC_CommonInitStruct.ADC_TwoSamplingDelay= ADC_TwoSamplingDelay_20Cycles;//采样时间间隔
	
	ADC_CommonInit(&ADC_CommonInitStruct);
	
}

static void ADC_Init_Config(void)
{
  ADC_InitTypeDef  ADC_InitStruct;//创建结构体对象
	
	ADC_StructInit(&ADC_InitStruct);
	
	ADC_InitStruct.ADC_Resolution=ADC_Resolution_12b;//ADC分辨率
	ADC_InitStruct.ADC_ScanConvMode=DISABLE;//禁止扫描模式,多通道采集需要
	ADC_InitStruct.ADC_ContinuousConvMode=ENABLE;//连续转换
	ADC_InitStruct.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;//禁止外部边缘触发
	ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC1 ;//外部触发通道,
	ADC_InitStruct.ADC_DataAlign= ADC_DataAlign_Right;//数据右对齐
	ADC_InitStruct.ADC_NbrOfConversion=1;//转换通道1个
	ADC_Init(ADC1, & ADC_InitStruct);
	
	//配置ADC通道转换顺序为1,第一个转换,采样时间为3个时钟周期
	ADC_RegularChannelConfig(ADC1,ADC_Channel_13, 1,ADC_SampleTime_56Cycles);
	ADC_Cmd(ADC1,ENABLE);//使能ADC
	ADC_SoftwareStartInjectedConv(ADC1);//开始adc转换,软件触发
	
}

//整合文件
void ADC_DMA_Init(void)
{
	ADC_GPIO_Config();
	ADC_CommonInit_Config();
	ADC_Init_Config();
}

(2)gpio.init.h文件的代码

#include "stm32f4xx.h"

void ADC_DMA_Init(void);

(3)delay.c文件的代码

#include "delay.h"

void delay_ms(int a)
{
	 while(a--);
}

(4)delay.h文件的代码

#include "stm32f4xx.h"

void ADC_DMA_Init(void);

(5)主函数main的代码

#include "stm32f4xx.h"
#include "delay.h"
#include "gpio.init.h"
#include "./usart/bsp_debug_usart.h"

extern __IO uint16_t ADC_ConventedValue;
float ADC_Vol;

int main(void)
{
	   Debug_USART1_Config();
	   ADC_DMA_Init();
  	  while(1)
			{
				ADC_ConventedValue=ADC_GetConversionValue(ADC1);
				printf("\r\n The current AD value=0x%04X\r\n",ADC_ConventedValue);
				printf("\r\n The current AD value=%fv\r\n",ADC_Vol);
				
				ADC_Vol=(float ) ADC_ConventedValue/4096*(float)3.3;
				delay_ms(55555555);
			}

}

五、运行效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值