S32的进阶之路->5,S32DS的ADC配置

硬件:S32K144开发板

软件:S32DS 2.2

1,S32K144硬件连接说明

        本章使用S32K144芯片的ADC0,其中CH2、CH3分别接一个可调变阻器,实现模拟信号的采集。

ADC0通道2 ----> PTA6

ADC0通道3 ----> PTA7

2,S32DS的ADC配置

        打开基础工程,双击Components框(1)下方的Components按钮(2)打开外设配置工具Components Library 。双击外设配置工具Components Library 下方的adc选项(3)添加adc外设。最后双击adcConv1(4)进入ADC配置界面。可以双击空白处最大化窗口方便配置。

        下方是转换设置,分别是Sample time(1)采样时间,默认为12,采样时间越长准确性越高。Resolution(2)采样分辨率,默认为8bit。Trigger(3)触发方式,默认为软件触发。Voltage Reference(4)参考电平标准。

        下面我们增加一个ADC的采样通道。选择Channel configuration(1)进行通道配置,点击+号(2)新增一个通道设置。在Input Channel(3)选项中选择我们对应的通道。Chnconfig0对应通道2,Chnconfig1对应通道3,完成配置后如(4)。至此ADC外设配置完成,下面开始进入代码的编写。

3,S32DS的ADC常用函数说明

1,ADC初始化配置函数ADC_DRV_ConfigConverter。输入变量instance基地址,输入变量config配置结构体。

void ADC_DRV_ConfigConverter(const uint32_t instance,
                             const adc_converter_config_t * const config);

2,ADC自动校准函数ADC_DRV_AutoCalibration。输入变量instance基地址。

void ADC_DRV_AutoCalibration(const uint32_t instance);

3,ADC配置通道函数ADC_DRV_ConfigChan。输入变量instance基地址,输入变量chanIndex触发方式,输入变量config通道配置结构体。

void ADC_DRV_ConfigChan(const uint32_t instance,
                        const uint8_t chanIndex,
                        const adc_chan_config_t * const config);

4,等待ADC转换完成函数ADC_DRV_WaitConvDone。输入变量instance基地址。

void ADC_DRV_WaitConvDone(const uint32_t instance);

5,获取ADC转换值函数ADC_DRV_GetChanResult。输入变量instance基地址,输入变量chanIndex触发方式,输入变量result转换结果值。

void ADC_DRV_GetChanResult(const uint32_t instance,
                           const uint8_t chanIndex,
                           uint16_t * const result);

4,S32K144的ADC实战

        首先添加几个变量和宏定义。分别是ADC参考电压、ADC的采样值、ADC的电压值、ADC最大量程。

#define ADC_MAX  	256		//8位,最大为256
#define ADC_VREF 	3.3f	//参考电压3.3V
float adcValue;				//adc采集电压值
uint16_t adcRegValue;		//adc读取到寄存器值

float adc0_ch2_Vloat;		//adc0通道2的电压值
float adc0_ch3_Vloat;		//adc0通道3的电压值

        其次编写读取转换ADC值的函数,如下所示。

float adc0_ch2_read(void)
{
	ADC_DRV_ConfigChan(INST_ADCONV1, 0U, &adConv1_ChnConfig0);
	ADC_DRV_WaitConvDone(INST_ADCONV1);
	ADC_DRV_GetChanResult(INST_ADCONV1, 0U, &adcRegValue);

	adcValue = ((float)adcRegValue/ADC_MAX)*ADC_VREF;
	return adcValue;
}
float adc0_ch3_read(void)
{
	ADC_DRV_ConfigChan(INST_ADCONV1, 0U, &adConv1_ChnConfig1);
	ADC_DRV_WaitConvDone(INST_ADCONV1);
	ADC_DRV_GetChanResult(INST_ADCONV1, 0U, &adcRegValue);

	adcValue = ((float)adcRegValue/ADC_MAX)*ADC_VREF;
	return adcValue;
}

        再其次,编写main函数和while(1)循环中的内容,进行Bulid编译,随后进行Debug测试。

	ADC_DRV_ConfigConverter(INST_ADCONV1, &adConv1_ConvConfig0);//初始化ADC0
	ADC_DRV_AutoCalibration(INST_ADCONV1);//自动校准ADC

    while(1)
    {
    	adc0_ch2_Vloat = adc0_ch2_read();//读取ADC的值
    	adc0_ch3_Vloat = adc0_ch3_read();
    }

        最后,可以查看变量值发现试验成功,读取到ADC电压值。

        感谢各位的观看,喜欢的朋友记得关注博主哦~后续还会继续出与S32DS的相关文章,浅浅的期待一下吧。

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值