IoT_SCV_CH584M/bsp/src/bsp_adc.c

56 lines
1.5 KiB
C
Raw Normal View History

2024-12-11 16:21:57 +08:00
/*
* 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);
}