2025-02-26 09:59:15 +00:00
|
|
|
|
#include "FM_ADC.h"
|
|
|
|
|
|
|
|
|
|
/* adc<64>ɼ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ı<EFBFBD><C4B1><EFBFBD> */
|
|
|
|
|
/* <20><>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ */
|
|
|
|
|
static float P_PwrOn_Voltage;
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĵ<D8B5>ѹ */
|
|
|
|
|
static float P_In_Voltage;
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĵ<D8B5><C4B5><EFBFBD> */
|
|
|
|
|
static float P_In_Current;
|
|
|
|
|
|
|
|
|
|
/* <20>ο<EFBFBD><CEBF><EFBFBD>ѹ<EFBFBD>Ĵ<EFBFBD>С */
|
|
|
|
|
#define referenceVoltage 3.3f
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>adc<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У
|
|
|
|
|
* @param val <EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>adc<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @retval У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>adc<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
static uint16_t Get_ConversionVal(int16_t val)
|
|
|
|
|
{
|
|
|
|
|
if((val + Calibrattion_Val) < 0 || val == 0)
|
|
|
|
|
return 0;
|
|
|
|
|
if((Calibrattion_Val + val) > 4095 || val == 4095)
|
|
|
|
|
return 4095;
|
|
|
|
|
return (val + Calibrattion_Val);
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-02 10:02:25 +00:00
|
|
|
|
|
2025-02-26 09:59:15 +00:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>adc
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void FM_ADC_Init(void)
|
|
|
|
|
{
|
|
|
|
|
HD_ADC_InIt();
|
|
|
|
|
ADC_DMA_Init();
|
|
|
|
|
startAdcCapture();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void proportionalInt(void)
|
|
|
|
|
{
|
|
|
|
|
P_PwrOn_Voltage = referenceVoltage / 4095.0f;
|
|
|
|
|
P_In_Voltage = ((100.0f + 10.0f) / 10.0f) * referenceVoltage / 4095.0f;
|
|
|
|
|
P_In_Current = ((1.0f / 50.0f) / (0.01f)) * referenceVoltage / 4095.0f;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>õ<EFBFBD>soc<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
float getSOCPwrOnVoltage(void)
|
|
|
|
|
{
|
2025-04-02 10:02:25 +00:00
|
|
|
|
return (Get_ConversionVal(adcData[PwrOnNum]) * P_PwrOn_Voltage);
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD>ӵĵ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
float getInCurrent(void)
|
|
|
|
|
{
|
2025-04-02 10:02:25 +00:00
|
|
|
|
return (Get_ConversionVal(adcData[CurrentNum]) * P_In_Current);
|
2025-02-26 09:59:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD>ӵĵ<EFBFBD>ѹ
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
float getInVoltage(void)
|
|
|
|
|
{
|
2025-04-02 10:02:25 +00:00
|
|
|
|
return (Get_ConversionVal(adcData[VoltageNum]) * P_In_Voltage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>¶<EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
float getTemperature(void)
|
|
|
|
|
{
|
|
|
|
|
return (Get_ConversionVal(adcData[TemperatureNum]));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ӡadc<EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void printf_adc_data(void)
|
|
|
|
|
{
|
|
|
|
|
printf("adc : %d, %d, %d, %d\n", adcData[0], adcData[1], adcData[2], adcData[3]);
|
|
|
|
|
printf("getSOCPwrOnVoltage: %d\n", (int)(getSOCPwrOnVoltage() * 1000.0f));
|
|
|
|
|
printf("getInCurrent: %d\n", (int)(getInCurrent() * 1000.0f));
|
|
|
|
|
printf("getInVoltage: %d\n", (int)(getInVoltage() * 1000.0f));
|
|
|
|
|
printf("getTemperature: %d\n", (int)(getTemperature() * 1000.0f));
|
|
|
|
|
}
|