From 8164d47b353a850de13f2d512ca851c39e9be2e2 Mon Sep 17 00:00:00 2001 From: roy01 Date: Fri, 12 Jun 2026 10:39:14 +0800 Subject: [PATCH] refactor: streamline adc_init() --- .../PFC_LLC_2026-05-20_2P2Z_ok/inc/init.h | 2 +- .../PFC_LLC_2026-05-20_2P2Z_ok/src/init.c | 81 ++++++++----------- 2 files changed, 34 insertions(+), 49 deletions(-) diff --git a/pec930_sdk-v1.0.1/Examples/template/PFC_LLC_2026-05-20_2P2Z_ok/inc/init.h b/pec930_sdk-v1.0.1/Examples/template/PFC_LLC_2026-05-20_2P2Z_ok/inc/init.h index 72d300d..7e406b2 100644 --- a/pec930_sdk-v1.0.1/Examples/template/PFC_LLC_2026-05-20_2P2Z_ok/inc/init.h +++ b/pec930_sdk-v1.0.1/Examples/template/PFC_LLC_2026-05-20_2P2Z_ok/inc/init.h @@ -13,7 +13,7 @@ void SYS_Config(); void gpio_config(); void opa_config(); -void adc_config(); +void adc_init(void); //------------------------------------- void llc_pwm_config(); // LLC diff --git a/pec930_sdk-v1.0.1/Examples/template/PFC_LLC_2026-05-20_2P2Z_ok/src/init.c b/pec930_sdk-v1.0.1/Examples/template/PFC_LLC_2026-05-20_2P2Z_ok/src/init.c index 6bc5f78..cf39e4c 100644 --- a/pec930_sdk-v1.0.1/Examples/template/PFC_LLC_2026-05-20_2P2Z_ok/src/init.c +++ b/pec930_sdk-v1.0.1/Examples/template/PFC_LLC_2026-05-20_2P2Z_ok/src/init.c @@ -1,8 +1,5 @@ -/* - * init.c - * - * Created on: 2025年8月18日 - * Author: jim_liao +/** + * Copyright (c) 2026 Wisetop. All Rights Reserved. */ #include "init.h" @@ -12,7 +9,6 @@ //============================================================================= // Constant Definition //============================================================================= -// #define CONFIG_OPA_PGA_GAIN OPAMP_PGAGain_1 //OPAMP_PGAGain_5 //============================================================================= // Public Function Definition @@ -75,7 +71,7 @@ void SYS_Config() gpio_config(); opa_config(); - adc_config(); + adc_init(); llc_pwm_config(); // 初始化但不輸出 EPWM_CH1 pfc_pwm_config(); // 初始化但不輸出 TIM2_CH1 @@ -123,15 +119,6 @@ void gpio_config() GPIO_InitStruct.GPIO_AF_Mode = GPIO_AF_5; // AF5 = TIM2 GPIO_Init(GPIOA, &GPIO_InitStruct); - //-----------------// - // ADC - // PA7(iac), PA10(vbus), PA13(vac) // PA11(cr), PA12(vfb)-->GPIO - //-----------------// - GPIO_InitTypeDef GPIO_InitADC; - GPIO_InitADC.GPIO_Pin = GPIO_Pin_07 | GPIO_Pin_10 | GPIO_Pin_13; // | GPIO_Pin_11; // PA11(cr) - GPIO_InitADC.GPIO_Mode = GPIO_Mode_ANAL; - GPIO_Init(GPIOA, &GPIO_InitADC); - //-----------------// // Button //-----------------// @@ -178,42 +165,40 @@ void opa_config(void) OPAMP_Enable(OPAMP0); } //=================================================================================== -void adc_config(void) +void adc_init(void) { - ADC_InitTypeDef init = { 0 }; - ADC_StructInit(&init); + // gpio + GPIO_InitTypeDef gpio_init; + gpio_init.GPIO_Pin = GPIO_Pin_10; // vbus = PA10(AIN4) + gpio_init.GPIO_Pin |= GPIO_Pin_07; // iac = PA7(AIN9) + gpio_init.GPIO_Pin |= GPIO_Pin_13; // vac = PA13(AIN7) + gpio_init.GPIO_Pin |= GPIO_Pin_11; // vcr = PA11(AIN5) + gpio_init.GPIO_Mode = GPIO_Mode_ANAL; + GPIO_Init(GPIOA, &gpio_init); - ADC_InitTypeDef init1 = { 0 }; - ADC_StructInit(&init1); - // iac = PA7 = ADC_Channel_09 - // vac = PA13 = ADC_Channel_07 - // vbus = PA10 = ADC_Channel_04 - // ---------------------------------------------- - // vcr = PA11 = ADC_Channel_05 (未使用) - // vfb = PA12 = ADC_Channel_06 (使用 GPIO) - init1.SelChannels = ADC_Channel_04 | ADC_Channel_07 | ADC_Channel_09 | ADC_Channel_05; - // init1.SelChannels = ADC_Channel_09 ;// OP_O 指定到 PA7 時,ADC 需要用 CH_09 讀取 - init1.ClkPrescaler = ADC_ClkDiv_4; // 60M/4 = 15M,接近 1MSPS (1us 轉換時間), 最快速度 - init1.DataAlign = ADC_DataAlign_Right; - init1.Mode = ADC_Mode_Scan; // Scan mode - ADC_Init(ADC0, &init1); + // adc + ADC_InitTypeDef adc_init = { 0 }; + ADC_StructInit(&adc_init); + adc_init.SelChannels = ADC_Channel_04; + adc_init.SelChannels |= ADC_Channel_09; + adc_init.SelChannels |= ADC_Channel_07; + adc_init.SelChannels |= ADC_Channel_05; + adc_init.ClkPrescaler = ADC_ClkDiv_4; // 60M/4 = 15MHz, ADC max working clock is 16MHz + adc_init.DataAlign = ADC_DataAlign_Right; + adc_init.Mode = ADC_Mode_Scan; // Scan mode + ADC_Init(ADC0, &adc_init); + ADC_ExtTrigConfig(ADC0, ADC_ExtTrigSource_TIM0, ADC_ExtTrigMode_Enable); // tim0 trigger adc - // ADC_ExtTrigConfig(ADC0, ADC_ExtTrigSource_EPWM_CH2R, ADC_ExtTrigMode_Enable); - ADC_ExtTrigConfig(ADC0, ADC_ExtTrigSource_16, ADC_ExtTrigMode_Enable); // use tim0 trigger + // ADC interrupt config + sys_irq_attr_t irq_attr = { + .disable_vector = false, + .trig_mode = SYS_IRQ_TRIGGER_LEVEL, + .level = SYS_IRQ_LEVEL_H, + .priority = SYS_IRQ_PRIORITY_MIDDEN, + }; + sys_register_IRQ(ADC0_IRQn, isr_adc_handle, &irq_attr); -#if 1 - { // Configure TIM interrupts - sys_irq_attr_t irq_attr = { - .disable_vector = false, - }; - - irq_attr.trig_mode = SYS_IRQ_TRIGGER_LEVEL; - irq_attr.level = SYS_IRQ_LEVEL_H; - irq_attr.priority = SYS_IRQ_PRIORITY_MIDDEN; - sys_register_IRQ(ADC0_IRQn, isr_adc_handle, &irq_attr); - ADC0->CON0_b.INT_EN = 1; - } -#endif + ADC0->CON0_b.INT_EN = 1; // ADC interrupt enable } //=================================================================================== void llc_pwm_config() // complimentary PWM for LLC