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)
|
|
|
|
|
{
|
2025-03-21 11:44:42 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
|
|
|
|
R32_PIN_IN_DIS |= (1U << 4); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>
|
2024-12-11 16:21:57 +08:00
|
|
|
|
//ADC<44><43>ʼ<EFBFBD><CABC>
|
2025-03-20 11:26:08 +08:00
|
|
|
|
/* <20><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>adcͨ<63><CDA8>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ PA4<41><34><EFBFBD>ţ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD> */
|
|
|
|
|
GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_Floating);
|
2024-12-11 16:21:57 +08:00
|
|
|
|
// <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);
|
|
|
|
|
|
2025-03-20 11:26:08 +08:00
|
|
|
|
ADC_ChannelCfg(0);
|
2024-12-11 16:21:57 +08:00
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-20 11:26:08 +08:00
|
|
|
|
void ADC_GPIO_Init(void)
|
|
|
|
|
{
|
|
|
|
|
GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_Floating);
|
2025-03-21 11:44:42 +08:00
|
|
|
|
// ȷ<><C8B7>ADC<44><43>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
R8_ADC_CFG |= RB_ADC_POWER_ON;
|
2025-03-20 11:26:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
2024-12-11 16:21:57 +08:00
|
|
|
|
uint16_t VBAT_ProcessEvent(uint8_t task_id, uint16_t events)
|
|
|
|
|
{
|
|
|
|
|
if (events & VBAT_EVT_START)
|
|
|
|
|
{
|
|
|
|
|
uint16_t adc_vbat = 0;
|
|
|
|
|
float vbat = 0;
|
2025-03-20 11:26:08 +08:00
|
|
|
|
ADC_GPIO_Init();
|
2024-12-11 16:21:57 +08:00
|
|
|
|
|
2025-03-20 11:26:08 +08:00
|
|
|
|
ADC_ChannelCfg(0);
|
2024-12-11 16:21:57 +08:00
|
|
|
|
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);
|
2025-03-27 10:16:52 +08:00
|
|
|
|
tmos_start_task(vbat_task_id, VBAT_EVT_START, MS1_TO_SYSTEM_TIME(1000*300)); //1000*60
|
2024-12-11 16:21:57 +08:00
|
|
|
|
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);
|
|
|
|
|
}
|