refactor: streamline adc_init()
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user