56 lines
1.5 KiB
C
56 lines
1.5 KiB
C
|
/*
|
|||
|
* bsp_adc.c
|
|||
|
*
|
|||
|
* Created on: 2024<EFBFBD><EFBFBD>11<EFBFBD><EFBFBD>29<EFBFBD><EFBFBD>
|
|||
|
* Author: 123
|
|||
|
*/
|
|||
|
#include "bsp_adc.h"
|
|||
|
#include "CONFIG.h"
|
|||
|
#include "log.h"
|
|||
|
|
|||
|
signed short RoughCalib_Value = 0; // ADC<44>ֵ<EFBFBD>ƫ<EFBFBD><C6AB>ֵ
|
|||
|
static tmosTaskID vbat_task_id = INVALID_TASK_ID;
|
|||
|
void VBAT_ADC_Init(void)
|
|||
|
{
|
|||
|
//ADC_CTRL
|
|||
|
// GPIOA_SetBits(GPIO_Pin_0);
|
|||
|
// GPIOA_ModeCfg(GPIO_Pin_0, GPIO_ModeOut_PP_5mA);
|
|||
|
|
|||
|
//ADC<44><43>ʼ<EFBFBD><CABC>
|
|||
|
/* <20><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>adcͨ<63><CDA8>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ PA1<41><31><EFBFBD>ţ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD> */
|
|||
|
GPIOA_ModeCfg(GPIO_Pin_1, GPIO_ModeIN_Floating);
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8M
|
|||
|
ADC_ExtSingleChSampInit(SampleFreq_8_or_4, ADC_PGA_1_2);
|
|||
|
|
|||
|
RoughCalib_Value = ADC_DataCalib_Rough(); // <20><><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>ADC<44>ڲ<EFBFBD>ƫ<EFBFBD><EFBFBD><EEA3AC>¼<EFBFBD><C2BC>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD> RoughCalib_Value<75><65>
|
|||
|
logDebug("RoughCalib_Value =%d \n", RoughCalib_Value);
|
|||
|
|
|||
|
ADC_ChannelCfg(8);
|
|||
|
ADC_ExcutSingleConver();//ʱ<><CAB1><EFBFBD>㹻ʱ<E3B9BB><CAB1><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD>ADC<44><43><EFBFBD><EFBFBD>
|
|||
|
DelayMs(10);
|
|||
|
}
|
|||
|
|
|||
|
uint16_t VBAT_ProcessEvent(uint8_t task_id, uint16_t events)
|
|||
|
{
|
|||
|
if (events & VBAT_EVT_START)
|
|||
|
{
|
|||
|
uint16_t adc_vbat = 0;
|
|||
|
float vbat = 0;
|
|||
|
|
|||
|
ADC_ChannelCfg(8);
|
|||
|
adc_vbat = ADC_ExcutSingleConver() + RoughCalib_Value;
|
|||
|
logDebug("adc_vbat =%d \n", adc_vbat);
|
|||
|
vbat = (adc_vbat/1024.0-1)*1.05;
|
|||
|
logDebug("vbat =%f \n", vbat);
|
|||
|
tmos_start_task(vbat_task_id, VBAT_EVT_START, MS1_TO_SYSTEM_TIME(1000));
|
|||
|
return (events ^ VBAT_EVT_START);
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
void BSP_VBAT_Init(void)
|
|||
|
{
|
|||
|
VBAT_ADC_Init();
|
|||
|
vbat_task_id = TMOS_ProcessEventRegister(VBAT_ProcessEvent);
|
|||
|
tmos_set_event(vbat_task_id, VBAT_EVT_START);
|
|||
|
}
|