RT1064学习笔记(1)--ADC例程(ADC Demo)

RT1064之ADC例程

Ps:本例程主要作用是,展示如何使用ADC库函数。
主板为:逐飞RT1064 + 母板

一,ADC—模块

1)简介:RT1052 有 2 个 ADC,每个 ADC 有 12 位、 10 位、 8 位可选,每个 ADC 有 16 个外部通道。 ADC 具有最高 1MS/s 采样率,支持单次或连续转换模式,可配置的采样时间和转换
速度,支持硬件求平均,支持自动比较转换结果为小于、大于或等于某一设定的值,或者
在设定的范围内、范围外。
2)两个ADC,16个通道对应的管脚

typedef enum    // 枚举ADC通道
{
    ADC1_CH0_B27,    
    ADC1_CH1_B12,    
    ADC1_CH2_B13,    
    ADC1_CH3_B14,    
    ADC1_CH4_B15,    
    ADC1_CH5_B16,    
    ADC1_CH6_B17,    
    ADC1_CH7_B18,        
    ADC1_CH8_B19,        
    ADC1_CH9_B20,        
    ADC1_CH10_B21,       
    ADC1_CH11_B22,
    ADC1_CH12_B23,
    ADC1_CH13_B24,
    ADC1_CH14_B25,
    ADC1_CH15_B26,
    
    ADC2_CH0_B27,    
    ADC2_CH1_B28,    
    ADC2_CH2_B29,    
    ADC2_CH3_B30,    
    ADC2_CH4_B31,    
    ADC2_CH5_B16,    
    ADC2_CH6_B17,    
    ADC2_CH7_B18,        
    ADC2_CH8_B19,        
    ADC2_CH9_B20,        
    ADC2_CH10_B21,       
    ADC2_CH11_B22,
    ADC2_CH12_B23,
    ADC2_CH13_B24,
    ADC2_CH14_B25,
    ADC2_CH15_B26,
}ADCCH_enum;

//此枚举定义不允许用户修改
typedef enum    // 枚举ADC通道
{
    ADC_8BIT,     //8位分辨率
    ADC_10BIT,    //10位分辨率
    ADC_12BIT,    //12位分辨率

}ADCRES_enum;
二,ADC采集程序解析

1)代码

//-------------------------------------------------------------------------------------------------------------------
//  @brief      ADC初始化
//  @param      adcn            选择ADC模块(ADC_1、ADC_2)
//  @param      ch              选择ADC通道
//  @param      resolution      选择选择通道分辨率(如果同一个模块初始化时设置了不同的分辨率 则最后一个初始化的分辨率生效)
//  @return     void
//  Sample usage:               adc_init(ADC_1,ADC1_CH0_B27,ADC_8BIT);//初始化B27为ADC功能 分辨率为8位
//-------------------------------------------------------------------------------------------------------------------
void adc_init(ADCN_enum adcn, ADCCH_enum ch, ADCRES_enum resolution)

2)adc_convert函数(AD转换值获取)

/-------------------------------------------------------------------------------------------------------------------
//  @brief      ADC转换一次
//  @param      adcn            选择ADC模块(ADC_1、ADC_2)
//  @param      ch              选择ADC通道
//  @return     void
//  Sample usage:               adc_convert(ADC_1,ADC1_CH0_B27);
//-------------------------------------------------------------------------------------------------------------------
uint16 adc_convert(ADCN_enum adcn, ADCCH_enum ch)

3)while循环中的初采集代码

    while(1)
    {
        //采集一次ADC
        adc_value = adc_convert(ADC_1,ADC1_CH3_B14);
        systick_delay_ms(100);
        
    }
三,整体代码与运行测试

1)整体代码展示

#include "headfile.h"

uint16 adc_value;
int main(void)
{
    DisableGlobalIRQ();
    board_init();   //务必保留,本函数用于初始化MPU 时钟 调试串口
    
    //初始化ADC_1模块 3通道 引脚为B14, 精度为12位
	//每一个ADC模块 所包含的通道,分辨率应设置为一样
	//如果设置不一样则最后一个初始化的分辨率生效
    adc_init(ADC_1,ADC1_CH3_B14,ADC_8BIT);
    
    //通过在线调试直接查看adc_value的值
	//将ADC引脚接到GND,adc_value的值在0附近
	//将ADC引脚接到3.3V,adc_value的值在255附近
    EnableGlobalIRQ(0);
       
    while(1)
    {
        //采集一次ADC
        adc_value = adc_convert(ADC_1,ADC1_CH3_B14);
        systick_delay_ms(100);
        
    }
    
}

2)采集VCC
数值:254
RT1064学习笔记(1)--ADC例程(ADC Demo)_第1张图片
数据:0
RT1064学习笔记(1)--ADC例程(ADC Demo)_第2张图片

你可能感兴趣的:(RT1064学习笔记,单片机)