/****************************************************************************** * Shanghai ChipON Micro-Electronic Co.,Ltd * ****************************************************************************** * $File Name$ : kf32a156_adc.h * * $Author$ : ChipON AE/FAE Group * * $Data$ : 2021-07-08 * * $AutoSAR Version : V2.0 * * $Description$ : This file contains the headers of the ADC * peripherals. * ****************************************************************************** * Copyright (C) by Shanghai ChipON Micro-Electronic Co.,Ltd * * All rights reserved. * * * * This software is copyright protected and proprietary to * * Shanghai ChipON Micro-Electronic Co.,Ltd. * ****************************************************************************** * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * REVISON HISTORY * * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * Data Version Author Description * * ~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * * * * * * *****************************************************************************/ #ifndef KF32A156_ADC_H_ #define KF32A156_ADC_H_ #include "KF32A156.h" /** * 描述 模数转换模块(ADC)配置信息结构体 */ typedef struct { uint32_t m_Clock; /* ADC时钟源选择, 取值为宏“ADC时钟源”中的一个。 */ uint32_t m_ClockDiv; /* ADC时钟分频, 取值为宏“ADC时钟分频”中的一个。 */ FunctionalState m_ScanMode; /* ADC扫描模式使能, 取值为TRUE或FALSE。 */ uint32_t m_ContinuousMode; /* ADC连续转换模式, 取值为宏“ADC连续转换”中的一个。 */ uint32_t m_DataAlign; /* ADC转换结果输出格式, 取值为宏“ADC转换结果对齐格式”中的一个。 */ FunctionalState m_ExternalTrig_EN; /* ADC常规通道外部触发转换模式使能, 取值为TRUE或FALSE。 */ uint32_t m_ExternalTrig; /* ADC常规通道外部触发事件, 取值为宏“ADC常规通道外部触发事件”中的一个。 */ FunctionalState m_HPExternalTrig_EN;/* ADC高优先级通道外部触发转换模式使能, 取值为TRUE或FALSE。 */ uint32_t m_HPExternalTrig; /* 高优先级通道外部触发事件, 取值为宏“ADC高优先级通道外部触发事件”中的一个。 */ uint32_t m_VoltageRef; /* 参考电压选择, 取值为宏“ADC参考电压选择”中的一个。 */ uint32_t m_NumOfConv; /* ADC常规通道扫描长度, 取值为1~16。 */ uint32_t m_NumOfHPConv; /* ADC高优先级通道扫描长度, 取值为1~4。 */ }ADC_InitTypeDef; /** * 描述 模数转换模块(ADC)快慢交叉模式信息结构体 */ typedef struct { uint32_t m_FastDelay; /* ADC快速交叉模式延时时间, 取值为1~64。 */ uint32_t m_SlowDelay; /* ADC慢速交叉模式延时时间, 取值为1~64。 */ }ADC0_DELAY_InitTypeDef; /** * 描述 模数转换模块(ADC)模拟看门狗信息结构体 */ typedef struct { uint32_t m_WDSingleCH; /* ADC模拟看门狗单通道使能, 取值为宏“ADC模拟看门狗单通道使能”中的一个。 */ FunctionalState m_HPChannelWDEN; /* ADC高优先级通道上看门狗使能, 取值为TRUE或FALSE。 */ FunctionalState m_ChannelWDEN; /* ADC常规通道上看门狗使能, 取值为TRUE或FALSE。 */ uint32_t m_WDChannel; /* ADC模拟看门狗通道选择, 取值为宏“ADC模拟看门狗通道选择”中的一个。 */ uint32_t m_Threshold_H; /* ADC模拟看门狗高阈值, 取值为0~0xFFF。 */ uint32_t m_Threshold_L; /* ADC模拟看门狗低阈值, 取值为0~0xFFF。 */ }ADC_WD_InitTypeDef; /** * ADC内存指针 */ #define CHECK_ADC_ALL_PERIPH(PERIPH) (((PERIPH) == ADC0_SFR) \ || ((PERIPH) == ADC1_SFR) \ || ((PERIPH) == ADC2_SFR)) /** * ADC时钟源 */ #define ADC_SCLK ((uint32_t)0<> 12) == 0) /** * ADC模拟看门狗通道选择 */ #define ADC_WDCH_0 ((uint32_t)0<= 0x1) && ((RANK) <= 0x4)) /** * ADC模拟看门狗单通道使能 */ #define ADC_WD_ALL_CH ((uint32_t)0<= 0x1) \ && ((LENGTH) <= 0x10)) /** * ADC高优先级通道扫描长度 */ #define CHECK_ADC_HIGH_PRIORITY_LENGTH(LENGTH) (((LENGTH) >= 0x1) \ && ((LENGTH) <= 0x4)) /** * ADC间隔模式通道计数 */ #define CHECK_ADC_REGULAR_DISC_NUMBER(NUMBER) (((NUMBER) >= 0x1) \ && ((NUMBER) <= 0x8)) /** * 双ADC模式 */ #define ADC_SINGLE ((uint32_t)0<> ADC_CTL1_HCH0_POS) \ <= 0x47) \ && (((REGTRIG) << (32 - ADC_CTL1_HCH0_POS)) \ == 0)) /** * ADC常规通道外部触发事件 */ #define ADC_EXTERNALTRIG_CCP1_CH1 ((uint32_t)0x0<> ADC_CTL1_NCH0_POS) \ <= 0x47) \ && (((REGTRIG) << (32 - ADC_CTL1_NCH0_POS)) \ == 0)) /** * ADC高优先级数据失调寄存器 * */ #define CHECK_ADC_DISORDER(VALUE) ((VALUE) <= 0xFFF) /* 模数转换模块(ADC)初始化函数定义******************************************/ void ADC_Reset (ADC_SFRmap* ADCx); void ADC_Configuration (ADC_SFRmap* ADCx, ADC_InitTypeDef* adcInitStruct); void ADC_Delay_Configuration (ADC0_DELAY_InitTypeDef* adc0Delay); void ADC_Delay_Struct_Init (ADC0_DELAY_InitTypeDef* adc0Delay); void ADC_Cmd (ADC_SFRmap* ADCx, FunctionalState NewState); /* 模数转换模块(ADC)模拟看门狗初始化函数定义********************************/ void ADC_Analog_Watchdog_Configuration (ADC_SFRmap* ADCx,ADC_WD_InitTypeDef * adcAnalogWatchdog); void ADC_Analog_Watchdog_Struct_Init (ADC_WD_InitTypeDef* adcAnalogWatchdog); /* 模数转换模块(ADC)控制功能配置函数定义************************************/ void ADC_Watchdog_Single_Channel_Enable (ADC_SFRmap* ADCx,FunctionalState NewState); void ADC_Scan_Mode_Enable (ADC_SFRmap* ADCx, FunctionalState NewState); void ADC_Bosssel_Comparator_Calibration (ADC_SFRmap* ADCx,FunctionalState NewState); void ADC_Bosssel_Calibration (ADC_SFRmap* ADCx, FunctionalState NewState); void ADC_Trim_Current_Intensity_Bias (ADC_SFRmap* ADCx,FunctionalState NewState); void ADC_Analog_Clock_Config (ADC_SFRmap* ADCx, uint32_t ClockSelect); void ADC_Data_Align_Config (ADC_SFRmap* ADCx, uint32_t DataAlign); void ADC_Clock_Source_Config (ADC_SFRmap* ADCx, uint32_t ClockSource); void ADC_Regular_Channel_DMA_Cmd (ADC_SFRmap* ADCx, FunctionalState NewState); void ADC_High_Priority_Channel_DMA_Cmd (ADC_SFRmap* ADCx,uint32_t HPChannel,FunctionalState NewState); void ADC_Double_Mode_Config (uint32_t WorkMode); void ADC_Reference_Voltage_Config (ADC_SFRmap* ADCx, uint32_t RefVoltage); void ADC_Analog_Watchdog_Channel_Config (ADC_SFRmap* ADCx, uint32_t Channel); void ADC_Extra_Sampling_Time(ADC_SFRmap* ADCx, uint32_t ExTime); /* 模数转换模块(ADC)常规通道功能配置函数定义********************************/ void ADC_Regular_Channel_Watchdog_Enable (ADC_SFRmap* ADCx,FunctionalState NewState); void ADC_External_Trig_Conv_Enable (ADC_SFRmap* ADCx,FunctionalState NewState); void ADC_External_Trig_Conv_Config (ADC_SFRmap* ADCx,uint32_t ExternalTrigEvent); void ADC_Regular_Channel_Config (ADC_SFRmap* ADCx,uint32_t Channel, uint32_t Rank); void ADC_Regular_Sequencer_Length_Config (ADC_SFRmap* ADCx, uint32_t Length); void ADC_Regular_Channel_TxCCRy_Trig_Enable (ADC_SFRmap* ADCx,uint32_t ExternalTrigEvent, FunctionalState NewState); void ADC_Software_Start_Conv(ADC_SFRmap* ADCx); void ADC_Continuous_Mode_Cmd (ADC_SFRmap* ADCx, FunctionalState NewState); void ADC_Disc_Mode_Channel_Count_Config (ADC_SFRmap* ADCx, uint8_t Number); void ADC_Disc_Mode_Cmd (ADC_SFRmap* ADCx, FunctionalState NewState); uint16_t ADC_Get_Conversion_Value (ADC_SFRmap* ADCx); /* 模数转换模块(ADC)高优先级通道功能配置函数定义****************************/ void ADC_High_Priority_Watchdog_Enable (ADC_SFRmap* ADCx,FunctionalState NewState); void ADC_HPExternal_Trig_Conv_Enable (ADC_SFRmap* ADCx,FunctionalState NewState); void ADC_High_Priority_Channel_Config (ADC_SFRmap* ADCx,uint32_t Channel, uint32_t Rank); void ADC_High_Priority_Sequencer_Length_Config (ADC_SFRmap* ADCx,uint32_t Length); void ADC_High_Priority_TxCCRy_Trig_Enable (ADC_SFRmap* ADCx,uint32_t ExternalTrigEvent, FunctionalState NewState); void ADC_Set_HPChannel_Conv_Value_Offset (ADC_SFRmap* ADCx,uint32_t HPDoffChannel, uint32_t Offset); void ADC_HPExternal_Trig_Conv_Config (ADC_SFRmap* ADCx,uint32_t HPExternalTrigEvent); void ADC_Software_HPStart_Conv (ADC_SFRmap* ADCx); void ADC_HPAuto_Conv_Cmd (ADC_SFRmap* ADCx, FunctionalState NewState); void ADC_HPDisc_Mode_Cmd (ADC_SFRmap* ADCx, FunctionalState NewState); uint16_t ADC_Get_HPConversion_Data (ADC_SFRmap* ADCx, uint8_t HPDataChannel); /* 模数转换模块(ADC)中断管理函数定义****************************************/ void ADC_Set_INT_Enable (ADC_SFRmap* ADCx,uint32_t InterruptType, FunctionalState NewState); FlagStatus ADC_Get_INT_Flag (ADC_SFRmap* ADCx, uint32_t InterruptType); RetStatus ADC_Clear_INT_Flag (ADC_SFRmap* ADCx, uint32_t InterruptType); INTStatus ADC_Get_INT_Status (ADC_SFRmap* ADCx, uint32_t InterruptType); #endif /* KF32A156_ADC_H_ */