// // Created by CFIF on 14.12.23. // #include #include "fc7xxx_driver_port.h" #include "Adcs.h" tAdcs ADCS; void Bsp_ADC0_HandleResult(const uint32_t *const pBuffer) { Get_ADC_Result(ADCS.adc_0_IO.env); } void Bsp_ADC1_HandleResult(const uint32_t *const pBuffer) { Get_ADC_Result(ADCS.adc_1_IO.env); } #define ADC0_CHN_NUM_EN 5 static uint32_t s_aAdc0ResultBuf[ADC0_CHN_NUM_EN] = {0U}; static const ADC_ChannelCfgType s_aChannelsAdc0[ADC0_CHN_NUM_EN] = { { .eChannel = ADC_CHANNEL_1, // IGN_ANS_PE5_ADC0_1 (Напряжение зажигание ДЕЛИТЕЛЬ) .eSampleTimeOption = ADC_SAMPLE_TIME_OPTION_1 }, { .eChannel = ADC_CHANNEL_25, // Pressure_DIAG_PE6_ADC_0_25 (Напряжение датчика давления ДЕЛИТЕЛЬ) .eSampleTimeOption = ADC_SAMPLE_TIME_OPTION_1 }, { .eChannel = ADC_CHANNEL_28, // Вывод диагностики BTS5180_2EKA (2 штуки) (0 - Канал 0; 1 - Канал 1) .eSampleTimeOption = ADC_SAMPLE_TIME_OPTION_1 }, { .eChannel = ADC_CHANNEL_27, // Вывод диагностики BTS5180_2EKA_TwoWayValveAndReservePowerSupply (0 - Канал 0; 1 - Канал 1) .eSampleTimeOption = ADC_SAMPLE_TIME_OPTION_1 }, { .eChannel = ADC_CHANNEL_30, // Вывод диагностики BTS5180_2EKA_2xChannelPTCPower (0 - Канал 0; 1 - Канал 1) .eSampleTimeOption = ADC_SAMPLE_TIME_OPTION_1 } }; #define ADC1_CHN_NUM_EN 1 static uint32_t s_aAdc1ResultBuf[ADC1_CHN_NUM_EN] = {0U}; static const ADC_ChannelCfgType s_aChannelsAdc1[ADC1_CHN_NUM_EN] = { { .eChannel = ADC_CHANNEL_2, // PBATT_CHECK_PE15_ADC1_2 (Напряжение сети ДЕЛИТЕЛЬ) .eSampleTimeOption = ADC_SAMPLE_TIME_OPTION_1 } }; /* #define ADC0_CHN_NUM_EN 1 static uint32_t s_aAdc0ResultBuf[ADC0_CHN_NUM_EN] = {0U}; static const ADC_ChannelCfgType s_aChannelsAdc0[ADC0_CHN_NUM_EN] = { { .eChannel = ADC_CHANNEL_0, .eSampleTimeOption = ADC_SAMPLE_TIME_OPTION_1 } }; #define ADC1_CHN_NUM_EN 1 static uint32_t s_aAdc1ResultBuf[ADC1_CHN_NUM_EN] = {0U}; static const ADC_ChannelCfgType s_aChannelsAdc1[ADC1_CHN_NUM_EN] = { { .eChannel = ADC_CHANNEL_25, .eSampleTimeOption = ADC_SAMPLE_TIME_OPTION_1 } }; */ void Adcs_Init() { tAdcs *env = &ADCS; PORT_InitType tInitStruct = {0}; // PTA25: ADC0_SE0 tInitStruct.u32PortPins = PORT_PIN_25; tInitStruct.uPortPinMux.u32PortPinMode = PORTA_25_ADC0_SE0; tInitStruct.bPullEn = false; tInitStruct.ePullSel = PORT_PULL_UP; PORT_InitPins(PORT_A, &tInitStruct); // PTD15: ADC0_SE11 // tInitStruct.u32PortPins = PORT_PIN_15; // tInitStruct.uPortPinMux.u32PortPinMode = PORTD_15_ADC0_SE11_CMP0_IN1; // tInitStruct.bPullEn = false; // tInitStruct.ePullSel = PORT_PULL_UP; // PORT_InitPins(PORT_D, &tInitStruct); ADC_Initial( &env->adc_0, ADC_INSTANCE_0, // ADC_INSTANCE_0, ADC_INSTANCE_1 DMA_CHANNEL_4, // DMA_CHANNEL_0 .. DMA_CHANNEL_15 DMA4_IRQn, 0xFF, DMA4_IRQn, s_aAdc0ResultBuf, ADC0_CHN_NUM_EN, (ADC_ChannelCfgType *) s_aChannelsAdc0, 0, 0, 0, Bsp_ADC0_HandleResult ); env->adc_0_IO = vAdcGetIo(&env->adc_0); // PTB9: ADC1_SE25 tInitStruct.u32PortPins = PORT_PIN_9; tInitStruct.uPortPinMux.u32PortPinMode = PORTB_9_ADC1_SE25; tInitStruct.bPullEn = false; tInitStruct.ePullSel = PORT_PULL_UP; PORT_InitPins(PORT_B, &tInitStruct); ADC_Initial( &env->adc_1, ADC_INSTANCE_1, // ADC_INSTANCE_0, ADC_INSTANCE_1 DMA_CHANNEL_3, // DMA_CHANNEL_0 .. DMA_CHANNEL_15 DMA3_IRQn, 0xFF, DMA3_IRQn, s_aAdc1ResultBuf, ADC1_CHN_NUM_EN, (ADC_ChannelCfgType *) s_aChannelsAdc1, 0, 0, 0, Bsp_ADC1_HandleResult ); env->adc_1_IO = vAdcGetIo(&env->adc_1); }