Data_EngineSpeed.c 4.6 KB
Newer Older
hu's avatar
hu committed
1 2 3 4 5
#include "Data_EngineSpeed.h"
#include "CAN_Communication_Matrix.h"
#include "GaugesInterface.h"
#include "RTE_PWM_OUT.h"
//-------------------------------------------
hu's avatar
hu committed
6
//转速数据处理
hu's avatar
hu committed
7 8 9
//-------------------------------------------
//断码显示
//-------------------------------------------
hu's avatar
hu committed
10
// 342 - 3.2.   行驶记录仪
hu's avatar
hu committed
11 12 13 14
//-------------------------------------------

static struct
{
hu's avatar
hu committed
15 16 17 18
    uint16_t Value;
    uint16_t Valid;
    uint8_t CurSeg;
} TachoVariable;
hu's avatar
hu committed
19

hu's avatar
hu committed
20
static uint8_t CalTacho_CurSeg(uint8_t Valid, uint16_t Value);
hu's avatar
hu committed
21 22 23 24 25 26 27 28 29 30
/*-------------------------------------------------------------------------
 * Function Name  : Tacho_KL30_Init
 * Description    : 转速KL30初始化
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
void Tacho_KL30_Init(void)
{
hu's avatar
hu committed
31 32 33
    TachoVariable.Value = 0u;
    TachoVariable.Valid = 0u;
    TachoVariable.CurSeg = 0u;
hu's avatar
hu committed
34 35 36
}
void Tacho_KL15_ON_Init(void)
{
hu's avatar
hu committed
37 38 39
    TachoVariable.Value = 0u;
    TachoVariable.Valid = 0u;
    TachoVariable.CurSeg = 0u;
hu's avatar
hu committed
40 41 42
}
void Tacho_KL15_OFF_Init(void)
{
hu's avatar
hu committed
43 44 45
    TachoVariable.Value = 0u;
    TachoVariable.Valid = 0u;
    TachoVariable.CurSeg = 0u;
hu's avatar
hu committed
46 47 48
}
void Tacho_Wakeup_Init(void)
{
hu's avatar
hu committed
49 50 51
    TachoVariable.Value = 0u;
    TachoVariable.Valid = 0u;
    TachoVariable.CurSeg = 0u;
hu's avatar
hu committed
52 53 54
}
void Tacho_Sleep_Init(void)
{
hu's avatar
hu committed
55 56 57
    TachoVariable.Value = 0u;
    TachoVariable.Valid = 0u;
    TachoVariable.CurSeg = 0u;
hu's avatar
hu committed
58 59 60 61 62 63 64 65 66 67 68
}
/*-------------------------------------------------------------------------
 * Function Name  : Tacho_Processing_Service
 * Description    : 转速
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
void Tacho_Processing_Service(void)
{
hu's avatar
hu committed
69 70 71
    uint16_t Msg_Epm_nEng = 0u;
    uint32_t u32Result = 0u;
    uint16_t Fre = 0u;
hu's avatar
hu committed
72

hu's avatar
hu committed
73
    Msg_Epm_nEng = Get_ID_CF00400_Sig_Engine_speed();
hu's avatar
hu committed
74

hu's avatar
hu committed
75 76 77 78 79 80 81 82
    if (Msg_Epm_nEng > 0xFAFFu)
    {
        TachoVariable.Valid = 0u;
        u32Result = 0u;
    }
    else
    {
        TachoVariable.Valid = 1u;
hu's avatar
hu committed
83

hu's avatar
hu committed
84 85 86 87
        u32Result = Msg_Epm_nEng;
        u32Result *= 125u;
        u32Result += 500u;
        u32Result /= 1000u;
hu's avatar
hu committed
88

hu's avatar
hu committed
89 90 91 92 93
        if (u32Result > 3000u)
        {
            u32Result = 3000u;
        }
    }
hu's avatar
hu committed
94

hu's avatar
hu committed
95
    TachoVariable.Value = RevSpeedManage((uint16_t)u32Result);
hu's avatar
hu committed
96

hu's avatar
hu committed
97
    TachoVariable.CurSeg = CalTacho_CurSeg(TachoVariable.Valid, TachoVariable.Value);
hu's avatar
hu committed
98

hu's avatar
hu committed
99
    //转*每转脉冲数/60=频率
hu's avatar
hu committed
100

hu's avatar
hu committed
101 102 103 104 105 106
    u32Result *= 4;
    u32Result /= 60;

    Fre = (uint16_t)u32Result;

    RTE_PWM_Set_Tacho_Out(Fre, 500);
hu's avatar
hu committed
107 108 109 110 111 112 113 114 115
}
/*-------------------------------------------------------------------------
 * Function Name  : Tacho_Display
 * Description    : 计算转速当前格
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
hu's avatar
hu committed
116
static uint8_t CalTacho_CurSeg(uint8_t Valid, uint16_t Value)
hu's avatar
hu committed
117
{
hu's avatar
hu committed
118
    uint8_t u8Result = 0u;
hu's avatar
hu committed
119

hu's avatar
hu committed
120 121 122 123 124 125 126 127 128
    if (Valid)
    {
    }
    else
    {
        //范围外/CAN中断
    }
    SetGaugesPara(RevGauges, Value);
    u8Result = GetGaugesCurrentPos(RevGauges);
hu's avatar
hu committed
129

hu's avatar
hu committed
130
    return u8Result;
hu's avatar
hu committed
131 132 133 134 135 136 137 138 139 140 141 142
}
/*-------------------------------------------------------------------------
 * Function Name  : Tacho_Get_ActualValue
 * Description    : 1倍转速
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
uint16_t Tacho_Get_ActualValue(void)
{
    uint16_t u16Result = 0u;
hu's avatar
hu committed
143
    u16Result = TachoVariable.Value;
hu's avatar
hu committed
144 145 146 147
    return u16Result;
}
/*-------------------------------------------------------------------------
 * Function Name  : Tacho_Get_Valid
hu's avatar
hu committed
148
 * Description    :
hu's avatar
hu committed
149 150 151 152 153 154 155 156
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : None
 --------------------------------------------------------------------------*/
uint8_t Tacho_Get_Valid(void)
{
    uint8_t u8Result = 0u;
hu's avatar
hu committed
157
    u8Result = TachoVariable.Valid;
hu's avatar
hu committed
158 159 160 161 162 163 164 165 166 167 168 169
    return u8Result;
}
/*-------------------------------------------------------------------------
 * Function Name  : Tacho_Get_CurSeg
 * Description    : 转速当前格
 * Input          : None
 * Output         : None
 * Return         : None
 * onther         : 应用于断码
 --------------------------------------------------------------------------*/
uint8_t Tacho_Get_CurSeg(void)
{
hu's avatar
hu committed
170
    return TachoVariable.CurSeg;
hu's avatar
hu committed
171
}