AUTOSAR实验五 DMA+硬件触发ADC转换

时间:2024-04-03 14:46:05

一、实验目的 

(1)熟悉adc和DMA

二、实验环境

Window10

服务器:windows

和服务器交互软件 winscp putty

Autosar Version: 4.2.2

Tresos studio 23.0

MCAL Version: S32K14X_MCAL4_2_RTM_HF8_1_0_1

Compiling environment:greenhill 201714

调试环境:ic5000

 

三、实验步骤

1.完成adc硬件触发adc

2.配置DMA通道、中断相关参数

3.工程中注册DMA中断

4.涉及到了mcl模块、adc模块、mcu模块、gpt模块、port模块

5.涉及到的中断 ADC中断或DMA中断 ,没用到GPT中断

四、DMA参数配置

1.配置DMA中断,设置中断enable

AUTOSAR实验五 DMA+硬件触发ADC转换

2.配置DMA instance (非必要设置,具体作用不明AUTOSAR实验五 DMA+硬件触发ADC转换

3.配置DMA Logical Channels

highest numbered master having the highest priority

AUTOSAR实验五 DMA+硬件触发ADC转换

4.配置adc

AUTOSAR实验五 DMA+硬件触发ADC转换

四、工程中注册DMA中断

参数如何而来,参照实验二,不要忘记extern声明中断处理函数。

AUTOSAR实验五 DMA+硬件触发ADC转换

 

五、实现代码

初始化部分

    /* init Port */

    Port_Init(&PortConfigSet);

    /*init Mcl*/

    Mcl_Init(&MclConfigSet_0);

    IoHwAB_Init_Intterupt();

    /* init Gpt */

    Gpt_Init(&GptChannelConfigSet);

    Gpt_EnableNotification(GptConf_GptChannelConfiguration_GptChannelConfiguration_0);

Adc_Init(&AdcConfigSet);

Adc_SetupResultBuffer(AdcGroup_0, AdcGroup_0_Res);

Adc_EnableGroupNotification(AdcGroup_0);

Adc_EnableHardwareTrigger(AdcGroup_0);

/* start timer */

Gpt_StartTimer(GptConf_GptChannelConfiguration_GptChannelConfiguration_0, 40000);

 

中断通知函数

FUNC(void, ADC_CODE) Adc_Adc12bsarv2_DmaTransferComplete0()

{

    Adc_Adc12bsarv2_DmaEndGroupConversion((Adc_HwUnitType)ADC_UNIT_0);

}

 

六、验证

通过watch读取数据,观察数值变化。