Commit 0f4f61d2 authored by 高士达's avatar 高士达

Merge branch 'gaoshida' into 'dev'

Gaoshida

See merge request !18
parents 3fa7100a b768d65a
...@@ -139,10 +139,10 @@ void Can_Set_Buff_510(uint8_t CopyData[]) ...@@ -139,10 +139,10 @@ void Can_Set_Buff_510(uint8_t CopyData[])
temp16 = FuelR/10; //temp16 = FuelR/10;
if(FuelR>3100){ //if(FuelR>3100){
temp16 = 320; // temp16 = 320;
} //}
CopyData[2] = (temp16>>8)&0xff; CopyData[2] = (temp16>>8)&0xff;
CopyData[3] = temp16&0xff; CopyData[3] = temp16&0xff;
......
#include "common.h"
#include "Fuel.h" #include "Fuel.h"
#include "gpio.h" #include "gpio.h"
#include "Analog_Signals.h" #include "Analog_Signals.h"
#include "Common_Interface.h" #include "Common_Interface.h"
#include "Flash_synchronizer.h" #include "Flash_synchronizer.h"
_Fuel_Dis FuelDis;
#define FUEL_DATA_TIME 25u /*这里填写多长时间采集一个数据,单位ms*/ _FuelData Fuel_Data;
#define FUEL_DATA_NUM 20u /*燃油电阻采集数据总数 最大255*/
#define FUEL_CAL_START 5u /*数据排序后取中间部分计算平均:起始*/
#define FUEL_CAL_END 15u /*数据排序后取中间部分计算平均:结束*/
#define RETURN_DIFFERENCE 25u /*判断上升或下降的回差,精度0.1*/
#define FUEL_SEG_UP 0u
#define FUEL_SEG_DOWN 1u
uint16_t FuelData[FUEL_DATA_NUM];
uint8_t FuelDataCount = 0u;
uint16_t FuelR = 0u; /*滤波后的燃油电阻,精度0.1*/
static uint16_t FuelRBak = 0;
uint8_t DesFuelSetp = 0u;
uint8_t CurFuelSetp = 0u;
uint8_t FuelInitFlag = 0u;
uint8_t FuelStateInitFlag = 0u;
uint8_t FuelDir = FUEL_SEG_UP;
FuelSensorSts_t FuelSensorState = FuelSensorNormal;
uint16_t FuelSensorNormalTime = 0u;
uint16_t FuelSensorShortTime = 0u;
uint16_t FuelSensorOpenTime = 0u;
uint8_t FuelADCompleteFlg = 0u;
void Fuel_KL30_Init(void) void Fuel_KL30_Init(void)
{ {
PORT_ClrBit(Fuel_Vcc_en); PORT_ClrBit(Fuel_Vcc_en);
Fuel_Data.u8FuelInitFlag = 0u;
Fuel_Data.FuelDir = Up_Dir;
Fuel_Data.FuelSensorState = FuelSensorNormal;
Fuel_Data.u8FuelDataCount = 0u;
for (uint8_t i = 0; i < FUEL_DATA_NUM; i++)
{
Fuel_Data.FuelDataBuffer[i] = 0;
}
Fuel_Data.FuelDataArray[0] = 0u; /* Short */
Fuel_Data.FuelDataArray[1] = 970u; /* Seg1 */
Fuel_Data.FuelDataArray[2] = 790u; /* Seg2 */
Fuel_Data.FuelDataArray[3] = 610u; /* Sge3 */
Fuel_Data.FuelDataArray[4] = 430u; /* Seg4 */
Fuel_Data.FuelDataArray[5] = 250u; /* Seg5 */
Fuel_Data.FuelDataArray[6] = 1100u; /* Open */
Fuel_Data.u8FuelInitFlag = 1;
Fuel_Data.u8FuelInitState = 1;
Fuel_Data.u8FuelADCompleteFlg = 0;
Fuel_Data.u16SensorNormalTimer = 0;
Fuel_Data.u16SensorOpenTimer = 0;
Fuel_Data.u16SensorShortTimer = 0;
FuelDis.u8Curseg = 0;
FuelDis.u8DestSeg = 0;
FuelDis.u16Down_Timer = Creep_Down_Up_Timer;
} }
void Fuel_KL15_Init(void) void Fuel_KL15_Init(void)
{ {
PORT_SetBit(Fuel_Vcc_en); PORT_SetBit(Fuel_Vcc_en);
DesFuelSetp = 0u; Fuel_Data.FuelDir = Up_Dir;
CurFuelSetp = 0u; Fuel_Data.FuelSensorState = FuelSensorNormal;
FuelInitFlag = 1u; Fuel_Data.u8FuelDataCount = 0u;
FuelStateInitFlag = 1u; for (uint8_t i = 0; i < FUEL_DATA_NUM; i++)
FuelDir = FUEL_SEG_UP; {
FuelSensorState = FuelSensorNormal; Fuel_Data.FuelDataBuffer[i] = 0;
FuelSensorNormalTime = 0u; }
FuelSensorShortTime = 0u;
FuelSensorOpenTime = 0u; Fuel_Data.FuelDataArray[0] = 0u; /* Short */
FuelADCompleteFlg = 0u; Fuel_Data.FuelDataArray[1] = 970u; /* Seg1 */
Fuel_Data.FuelDataArray[2] = 790u; /* Seg2 */
Fuel_Data.FuelDataArray[3] = 610u; /* Sge3 */
Fuel_Data.FuelDataArray[4] = 430u; /* Seg4 */
Fuel_Data.FuelDataArray[5] = 250u; /* Seg5 */
Fuel_Data.FuelDataArray[6] = 1100u; /* Open */
Fuel_Data.u8FuelInitFlag = 1;
Fuel_Data.u8FuelInitState = 1;
Fuel_Data.u8FuelADCompleteFlg = 0;
Fuel_Data.u16SensorNormalTimer = 0;
Fuel_Data.u16SensorOpenTimer = 0;
Fuel_Data.u16SensorShortTimer = 0;
FuelDis.u8Curseg = 0;
FuelDis.u8DestSeg = 0;
FuelDis.u16Down_Timer = Creep_Down_Up_Timer;
} }
/**
uint16_t TestFuelR = 320u; * @brief 燃油采集计算服务
*
*/
void Fuel_R_Cal(uint8_t deltaTime) void Fuel_R_Cal(uint8_t deltaTime)
{ {
uint16_t FuelRes = 0; uint16_t FuelRes = 0;
uint8_t i,j; uint8_t i, j;
uint32_t temp32; uint32_t temp32;
static uint16_t timeCount = 0; static uint16_t timeCount = 0;
if(timeCount >= FUEL_DATA_TIME){ if (Fuel_Data.u8FuelCollectCount >= FUEL_DATA_TIME) /* 多久采集一次燃油数据 */
timeCount = 0; {
if(FuelDataCount < FUEL_DATA_NUM) Fuel_Data.u8FuelCollectCount = 0;
if (Fuel_Data.u8FuelDataCount < FUEL_DATA_NUM)
{ {
/*获取燃油电阻*/ /*获取燃油电阻*/
FuelRes = ADC_Read_Signal(ADC_CH_FUEL1); FuelRes = 0;
/*四舍五入*/ /*四舍五入*/
if(FuelRes < 32000){ if (FuelRes < Fuel_Data.FuelDataArray[6]) /* 小于开路阻值 */
if(FuelRes % 10 >= 5){ {
if (FuelRes % 10 >= 5)
{
FuelRes += 5; FuelRes += 5;
} }
} }
else{ else
FuelRes = 32000; {
FuelRes = Fuel_Data.FuelDataArray[6];
} }
/*由小到大插入数据*/ /*由小到大插入数据*/
for(i=0; i < FuelDataCount; i++) for (i = 0; i < Fuel_Data.u8FuelDataCount; i++)
{ {
if(FuelRes < FuelData[i]) if (FuelRes < Fuel_Data.FuelDataBuffer[i])
{ {
break; break;
} }
} }
for(j=FuelDataCount; j>i; j--) for (j = Fuel_Data.u8FuelDataCount; j > i; j--)
{ {
FuelData[j] = FuelData[j-1]; Fuel_Data.FuelDataBuffer[j] = Fuel_Data.FuelDataBuffer[j - 1];
} }
FuelData[i] = FuelRes; Fuel_Data.FuelDataBuffer[i] = FuelRes;
FuelDataCount++; Fuel_Data.u8FuelDataCount++;
} }
else else
{ {
/*一组数据采集完毕,取中间部分计算平均值*/ /*一组数据采集完毕,取中间部分计算平均值*/
temp32 = 0; temp32 = 0;
for(i=FUEL_CAL_START; i<FUEL_CAL_END; i++ ) for (i = FUEL_CAL_START; i < FUEL_CAL_END; i++)
{ {
temp32 += FuelData[i]; temp32 += Fuel_Data.FuelDataBuffer[i];
} }
FuelR = temp32 / (FUEL_CAL_END - FUEL_CAL_START); Fuel_Data.Fuel_Res = temp32 / (FUEL_CAL_END - FUEL_CAL_START);
FuelDataCount = 0; Fuel_Data.u8FuelDataCount = 0;
FuelADCompleteFlg = 1; Fuel_Data.u8FuelADCompleteFlg = 1;
} }
} }
timeCount += deltaTime; Fuel_Data.u8FuelCollectCount += deltaTime;
} }
/**
* @brief 检查燃油传感器状态
*
*/
void Fuel_State_Check(uint8_t deltaTime) void Fuel_State_Check(uint8_t deltaTime)
{ {
if (FuelR < 20) // if (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[0])
{ /*短路 1*/ //{ /*短路 1*/
FuelSensorOpenTime = 0; // Fuel_Data.u16SensorOpenTimer = 0;
FuelSensorNormalTime = 0; // Fuel_Data.u16SensorNormalTimer = 0;
if ((FuelSensorShortTime > 3000) || ((FuelStateInitFlag) && (FuelSensorShortTime > 3000))) // if ((Fuel_Data.u16SensorShortTimer > Fuet_Short_Dealy_Timer) || ((Fuel_Data.u8FuelInitState) && (Fuel_Data.u16SensorShortTimer > Fuet_Short_Dealy_Timer)))
{ // {
FuelSensorState = FuelSensorShortCircuit; // Fuel_Data.FuelSensorState = FuelSensorShortCircuit;
DesFuelSetp = 0; // FuelDis.u8DestSeg = 0;
CurFuelSetp = 0; // FuelDis.u8Curseg = 0;
FuelStateInitFlag = 0; // Fuel_Data.u8FuelInitState = 0;
FuelInitFlag = 1; // Fuel_Data.u8FuelInitFlag = 1;
FuelDir = FUEL_SEG_UP; // Fuel_Data.FuelDir = FUEL_SEG_UP;
} // }
else // else
// {
// Fuel_Data.u16SensorShortTimer += deltaTime;
// }
// }
// else
if (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[6]) /* 开路 */
{ {
FuelSensorShortTime += deltaTime; Fuel_Data.u16SensorShortTimer = 0;
} Fuel_Data.u16SensorNormalTimer = 0;
} if ((Fuel_Data.u16SensorOpenTimer > Fuel_Open_Dealy_Timer) || ((Fuel_Data.u8FuelInitState) && (Fuel_Data.u16SensorOpenTimer > Fuel_Open_Dealy_Timer)))
else if (FuelR >= 3200)
{ /*断路 320*/
FuelSensorShortTime = 0;
FuelSensorNormalTime = 0;
if ((FuelSensorOpenTime > 3000) || ((FuelStateInitFlag) && (FuelSensorOpenTime > 3000)))
{ {
FuelSensorState = FuelSensorOpenCircuit; Fuel_Data.FuelSensorState = FuelSensorOpenCircuit;
DesFuelSetp = 0; FuelDis.u8DestSeg = 0;
CurFuelSetp = 0; FuelDis.u8Curseg = 0;
FuelStateInitFlag = 0; Fuel_Data.u8FuelInitState = 0;
FuelInitFlag = 1; Fuel_Data.u8FuelInitFlag = 1;
FuelDir = FUEL_SEG_UP; Fuel_Data.FuelDir = Up_Dir;
} }
else else
{ {
FuelSensorOpenTime += deltaTime; Fuel_Data.u16SensorOpenTimer += deltaTime;
} }
} }
else else
{ {
FuelSensorShortTime = 0; Fuel_Data.u16SensorShortTimer = 0;
FuelSensorOpenTime = 0; Fuel_Data.u16SensorOpenTimer = 0;
if (FuelSensorNormalTime > 3000) if (Fuel_Data.u16SensorNormalTimer > Fuel_Normal_Dealy_Timer)
{ {
FuelSensorState = FuelSensorNormal; Fuel_Data.FuelSensorState = FuelSensorNormal;
FuelStateInitFlag = 0; Fuel_Data.u8FuelInitState = 0;
} }
else else
{ {
FuelSensorNormalTime += deltaTime; Fuel_Data.u16SensorNormalTimer += deltaTime;
} }
} }
} }
/**
* @brief 燃油显示服务
*
*/
void Fuel_Gauges_Cal(uint8_t deltaTime) void Fuel_Gauges_Cal(uint8_t deltaTime)
{ {
static uint16_t time = 0; if ((Fuel_Data.FuelSensorState == FuelSensorNormal) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[0]) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[6]))
if((FuelSensorState == FuelSensorNormal)&& (FuelR >= 20)&& (FuelR < 3200)){//32000 //FuelR >10 change FuelR >20 {
/*采集完第一组数据后,开始计算燃油格数*/ /*采集完第一组数据后,开始计算燃油格数*/
if(FuelADCompleteFlg){ if (Fuel_Data.u8FuelADCompleteFlg)
{
if(FuelInitFlag){ if (Fuel_Data.u8FuelInitFlag)
FuelRBak = FuelR; {
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
} }
/*根据回差计算走动方向*/ /*根据回差计算走动方向*/
if(FuelDir == FUEL_SEG_UP){ if (Fuel_Data.FuelDir == Up_Dir)
{
if(FuelR >= FuelRBak + RETURN_DIFFERENCE){ if (Fuel_Data.Fuel_Res >= Fuel_Data.Fuel_Res_Back + RETURN_DIFFERENCE)
FuelDir = FUEL_SEG_DOWN; {
FuelRBak = FuelR; Fuel_Data.FuelDir = Down_Dir;
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
} }
if(FuelR < FuelRBak){ if (Fuel_Data.Fuel_Res < Fuel_Data.Fuel_Res_Back)
FuelRBak = FuelR; {
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
} }
} }
else{ else
if(FuelRBak >= FuelR + RETURN_DIFFERENCE){ {
FuelDir = FUEL_SEG_UP; if (Fuel_Data.Fuel_Res_Back >= Fuel_Data.Fuel_Res + RETURN_DIFFERENCE)
FuelRBak = FuelR; {
Fuel_Data.FuelDir = Up_Dir;
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
} }
if(FuelR > FuelRBak){ if (Fuel_Data.Fuel_Res > Fuel_Data.Fuel_Res_Back)
FuelRBak = FuelR; {
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
} }
} }
/*计算目标格数*/ /*计算目标格数*/
if(FuelDir == FUEL_SEG_UP){
if(((DesFuelSetp == 4)||FuelInitFlag) && (FuelR < 150)){ if (Fuel_Data.FuelDir == Up_Dir)
DesFuelSetp = 5; {
} if (((FuelDis.u8DestSeg == 4) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[5]))
else if(((DesFuelSetp == 3)||FuelInitFlag) && (FuelR < 490)){ {
DesFuelSetp = 4; FuelDis.u8DestSeg = 5;
}
else if(((DesFuelSetp == 2)||FuelInitFlag) && (FuelR < 820)){
DesFuelSetp = 3;
} }
else if(((DesFuelSetp == 1)||FuelInitFlag) && (FuelR < 1280)){ else if (((FuelDis.u8DestSeg == 3) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[4]))
DesFuelSetp = 2; {
FuelDis.u8DestSeg = 4;
} }
else if(((DesFuelSetp == 0)||FuelInitFlag) && (FuelR < 1870)){ else if (((FuelDis.u8DestSeg == 2) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[3]))
DesFuelSetp = 1; {
FuelDis.u8DestSeg = 3;
} }
else if (((FuelDis.u8DestSeg == 1) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[2]))
{
FuelDis.u8DestSeg = 2;
} }
else if(FuelDir == FUEL_SEG_DOWN){ else if (((FuelDis.u8DestSeg == 0) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[1]))
if(((DesFuelSetp == 1)||FuelInitFlag) && (FuelR >= 1870)){ {
DesFuelSetp = 0; FuelDis.u8DestSeg = 1;
} }
else if(((DesFuelSetp == 2)||FuelInitFlag) && (FuelR >= 1280)){
DesFuelSetp = 1;
} }
else if(((DesFuelSetp == 3)||FuelInitFlag) && (FuelR >= 820)){ else if (Fuel_Data.FuelDir == Down_Dir)
DesFuelSetp = 2; {
if (((FuelDis.u8DestSeg == 1) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[1]))
{
FuelDis.u8DestSeg = 0;
} }
else if(((DesFuelSetp == 4)||FuelInitFlag) && (FuelR >= 490)){ else if (((FuelDis.u8DestSeg == 2) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[2]))
DesFuelSetp = 3; {
FuelDis.u8DestSeg = 1;
} }
else if(((DesFuelSetp == 5)||FuelInitFlag) && (FuelR >= 150)){ else if (((FuelDis.u8DestSeg == 3) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[3]))
DesFuelSetp = 4; {
FuelDis.u8DestSeg = 2;
} }
else if (((FuelDis.u8DestSeg == 4) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[4]))
{
FuelDis.u8DestSeg = 3;
} }
else if (((FuelDis.u8DestSeg == 5) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[5]))
{
FuelDis.u8DestSeg = 4;
} }
/*IGN ON 1秒/故障恢复后,开始走格 立即指向当前格 20220704*/
if(Common_GetIgnOnTime() >= 3000ul){
time += deltaTime;
if(FuelInitFlag){
FuelInitFlag = 0;
time = 0;
CurFuelSetp = DesFuelSetp;
} }
if(time >= 15000){ if (Fuel_Data.u8FuelInitFlag == 1) /* 首次上电 当前格等于目标格 */
{
time = 0; FuelDis.u8Curseg = FuelDis.u8DestSeg;
Fuel_Data.u8FuelInitFlag = 0;
if(CurFuelSetp < DesFuelSetp){
CurFuelSetp ++;
} }
else if(CurFuelSetp > DesFuelSetp){
CurFuelSetp --;
} }
} /* 阻尼处理 上升下降每10S一格 */
if(CurFuelSetp == DesFuelSetp){ if (FuelDis.u8Curseg > FuelDis.u8DestSeg) /* 下降方向 */
time = 0; {
} FuelDis.u16Up_Timer = 0;
FuelDis.u16Down_Timer += deltaTime;
if (FuelDis.u16Down_Timer >= Creep_Down_Up_Timer)
{
FuelDis.u8Curseg--;
FuelDis.u16Down_Timer = 0;
} }
} }
} else if (FuelDis.u8Curseg < FuelDis.u8DestSeg) /* 上升方向 */
uint8_t Get_Fuel_Disp_Byte(void)
{
uint8_t FuelDispByte = 0u;
FuelDispByte = CurFuelSetp;
if (FuelSensorState == FuelSensorShortCircuit)
{ {
//Short FuelDis.u16Down_Timer = 0;
FuelDispByte = FLASH_SYNC_1Hz ? 7 : 0; FuelDis.u16Up_Timer += deltaTime;
} if (FuelDis.u16Up_Timer >= Creep_Down_Up_Timer)
else if (FuelSensorState == FuelSensorOpenCircuit)
{ {
//Open FuelDis.u8Curseg++;
FuelDispByte = FLASH_SYNC_1Hz ? 6 : 0; FuelDis.u16Up_Timer = 0;
} }
else if (CurFuelSetp == 1)
{
FuelDispByte = FLASH_SYNC_1Hz ? 1 : 0;
} }
else
else if(CurFuelSetp == 0)
{ {
FuelDispByte = 0; FuelDis.u16Down_Timer = 0;
FuelDis.u16Up_Timer = 0;
FuelDis.u8Curseg = FuelDis.u8DestSeg;
}
} }
return FuelDispByte;
} }
/**
void Fuel_Cal_Sevice(uint8_t deltaTime) * @brief 用于计算燃油电阻值
* 10ms 调用
*/
void Fuel_Res_Call(uint8_t deltaTime)
{ {
/*计算燃油电阻值*/
Fuel_R_Cal(deltaTime); Fuel_R_Cal(deltaTime);
}
/**
* @brief 燃油服务函数
* 100ms
*/
void Fuel_Cal_Sevice(uint8_t deltaTime)
{
/*检测燃油电阻状态*/ /*检测燃油电阻状态*/
Fuel_State_Check(deltaTime); Fuel_State_Check(deltaTime);
/*显示燃油格*/ /*显示燃油格*/
Fuel_Gauges_Cal(deltaTime); Fuel_Gauges_Cal(deltaTime);
} }
/**
* @brief 获取燃油当前格数
* @return 格数 Seg0~Sge5
*/
uint8_t Get_CurFuelSetp(void) uint8_t Get_CurFuelSetp(void)
{ {
return CurFuelSetp; return FuelDis.u8Curseg;
} }
/**
* @brief 获取燃油传感器状态
* @return 0 FuelSensorNormal
* 1 FuelSensorShortCircuit
* 2 FuelSensorOpenCircuit
*/
FuelSensorSts_t Get_Fuel_Sensor_State(void) FuelSensorSts_t Get_Fuel_Sensor_State(void)
{ {
return FuelSensorState; return Fuel_Data.FuelSensorState;
} }
#ifndef FUEL_H #ifndef FUEL_H
#define FUEL_H #define FUEL_H
typedef enum{ #include "common.h"
#define Fuel_Short_Value 0 /* 燃油短路值 精度0.1ohm */
#define Fuel_Open_Value 1100 /* 燃油开路值 精度0.1ohm */
#define Fuet_Short_Dealy_Timer 3000 /* 燃油从正常进入短路的延迟时间 单位ms*/
#define Fuel_Open_Dealy_Timer 3000 /* 燃油从正常进入开路的延迟时间 单位ms*/
#define Fuel_Normal_Dealy_Timer 3000 /* 燃油从异常状态进入正常的延迟时间 单位ms*/
#define FUEL_DATA_TIME 25u /*这里填写多长时间采集一个数据,单位ms*/
#define FUEL_DATA_NUM 20u /*燃油电阻采集数据总数 最大255*/
#define FUEL_CAL_START 5u /*数据排序后取中间部分计算平均:起始*/
#define FUEL_CAL_END 15u /*数据排序后取中间部分计算平均:结束*/
#define RETURN_DIFFERENCE 25u /*判断上升或下降的回差,精度0.1*/
#define Creep_Down_Up_Timer 10000 /* 一个格的时间 单位ms */
typedef enum
{
Up_Dir = 0,
Down_Dir = 1,
Unvalid = 0XFF,
} _FuelDir;
typedef enum
{
FuelSensorNormal = 0, FuelSensorNormal = 0,
FuelSensorShortCircuit, FuelSensorShortCircuit,
FuelSensorOpenCircuit, FuelSensorOpenCircuit,
}FuelSensorSts_t; } FuelSensorSts_t;
typedef struct
{
uint8_t u8FuelDataCount; /* 燃油采集计数 */
uint8_t u8FuelCollectCount; /* 多久采集一次燃油数据 */
uint16_t FuelDataBuffer[FUEL_DATA_NUM]; /* 存储燃油数据buffer */
uint8_t u8FuelInitState; /* 燃油传感器初始化状态 */
uint8_t u8FuelInitFlag; /* 燃油初始化标志 */
uint16_t FuelDataArray[7]; /* 数组下标0用于存储短路值,1~5用于存储当前对应格数阻值,6用于存储开路阻值 */
uint16_t Fuel_Res; /* 进行滤波处理后的燃油阻值 */
uint16_t Fuel_Res_Back; /* 历史燃油阻值 */
uint16_t u16SensorShortTimer; /* 传感器进入短路时间 */
uint16_t u16SensorOpenTimer; /* 传感器进入开路时间 */
uint16_t u16SensorNormalTimer; /* 传感器进入正常时间 */
uint8_t u8FuelADCompleteFlg; /* 一组数据采集完成标志 */
_FuelDir FuelDir; /* 燃油方向 */
FuelSensorSts_t FuelSensorState; /* 燃油传感器状态 */
} _FuelData;
typedef struct
{
uint8_t u8Curseg; /* 当前格 */
uint8_t u8DestSeg; /* 目标格 */
uint16_t u16Down_Timer; /* 上升延迟时间 */
uint16_t u16Up_Timer; /* 下降延迟时间 */
} _Fuel_Dis;
extern _Fuel_Dis FuelDis;
extern _FuelData Fuel_Data;
extern void Fuel_KL15_Init(void); extern void Fuel_KL15_Init(void);
extern void Fuel_KL30_Init(void); extern void Fuel_KL30_Init(void);
extern void Fuel_Cal_Sevice(uint8_t deltaTime); extern void Fuel_Cal_Sevice(uint8_t deltaTime);
extern uint8_t Get_Fuel_Disp_Byte(void);
extern uint8_t Get_CurFuelSetp(void); extern uint8_t Get_CurFuelSetp(void);
extern FuelSensorSts_t Get_Fuel_Sensor_State(void); extern FuelSensorSts_t Get_Fuel_Sensor_State(void);
void Fuel_Res_Call(uint8_t deltaTime);
#endif #endif
#include "Unit_Convert_Service.h"
#define GUI_DISP_MODE_NORMAL 0x00 //正常
#define GUI_DISP_MODE_NEGATIVE 0x01 //负数
/**
* @brief 公里转换英里服务函数
* @return 英里 精度 1
*/
uint32_t Unit_Conv_km_To_mile(unsigned long km)
{
return km * 621 / 1000; //mile = km * 3937 / 6336
}
#ifndef UNIT_CONVERT_SERVICE_H
#define UNIT_CONVERT_SERVICE_H
#include "common.h"
extern uint32_t Unit_Conv_km_To_mile(unsigned long km);
#endif
\ No newline at end of file
...@@ -91,6 +91,7 @@ void Sys_Run_Mode_10ms_Tasks(void) ...@@ -91,6 +91,7 @@ void Sys_Run_Mode_10ms_Tasks(void)
Data_Mileage_Write_EEPROM(); Data_Mileage_Write_EEPROM();
Fuel_Res_Call(10u);
} }
/*============================================================================*/ /*============================================================================*/
...@@ -147,7 +148,9 @@ void Sys_Run_Mode_100ms_Tasks_Group2(void) ...@@ -147,7 +148,9 @@ void Sys_Run_Mode_100ms_Tasks_Group2(void)
void Sys_Run_Mode_100ms_Tasks_Group3(void) void Sys_Run_Mode_100ms_Tasks_Group3(void)
{ {
Services_Mileage_Callback();
Data_Trip_Processing();
Data_ODO_Processing();
} }
void Sys_Run_Mode_100ms_Tasks_Group4(void) void Sys_Run_Mode_100ms_Tasks_Group4(void)
...@@ -156,8 +159,14 @@ void Sys_Run_Mode_100ms_Tasks_Group4(void) ...@@ -156,8 +159,14 @@ void Sys_Run_Mode_100ms_Tasks_Group4(void)
RTC_Service(); RTC_Service();
} }
uint32_t TRIPATEST = 0;
uint32_t ODOTEST = 0;
uint32_t MileageTest = 0;
void Sys_Run_Mode_100ms_Tasks_Group5(void) void Sys_Run_Mode_100ms_Tasks_Group5(void)
{ {
TRIPATEST = Data_Read_Trip(EM_TRIP_A);
ODOTEST = Data_ODO_Read();
MileageTest = Data_Mileage_Read();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment