1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#ifndef _FUELCONFIG_H
#define _FUELCONFIG_H
#include "TYW_stdint.h"
//typedef unsigned short INT16U;
//typedef unsigned char INT8_t;
//typedef unsigned int INT32_t;
#define DISPLAY_BOUNDARY_ES 1500
#define DISPLAY_BOUNDARY_1 1500
#define DISPLAY_BOUNDARY_2 1373
#define DISPLAY_BOUNDARY_3 1191
#define DISPLAY_BOUNDARY_4 1009
#define DISPLAY_BOUNDARY_5 848
#define DISPLAY_BOUNDARY_6 697
#define DISPLAY_BOUNDARY_7 545
#define DISPLAY_BOUNDARY_8 436
#define DISPLAY_BOUNDARY_9 345
#define DISPLAY_BOUNDARY_10 254
#define DISPLAY_BOUNDARY_11 188
#define DISPLAY_BOUNDARY_12 132
#define DISPLAY_BOUNDARY_13 84
#define DISPLAY_BOUNDARY_FS 65
#define BOUNDARY_FUEL_ES 0
#define BOUNDARY_FUEL_1 400
#define BOUNDARY_FUEL_2 720
#define BOUNDARY_FUEL_3 860
#define BOUNDARY_FUEL_4 1040
#define BOUNDARY_FUEL_5 1428
#define BOUNDARY_FUEL_6 2577
#define BOUNDARY_FUEL_7 3750
#define BOUNDARY_FUEL_8 4931
#define BOUNDARY_FUEL_9 5536
#define BOUNDARY_FUEL_10 5724
#define BOUNDARY_FUEL_11 6491
#define BOUNDARY_FUEL_12 6850
#define BOUNDARY_FUEL_13 7199
#define BOUNDARY_FUEL_FS 7600
#define FUEL_R_MIN_VAL 40 // 10 X ohm
#define FUEL_R_MAX_VAL 3000 // 10 X ohm
// Fuel Config
typedef struct _FuelStruct
{
uint16_t FuelShortCircuitR;
uint16_t FuelOpenCircuitR;
uint16_t DisplayZoneBoundary[22];
uint16_t FuelCapacityBoundary[22];
} FuelStruct;
extern void InitFuelParamter(FuelStruct *para);
extern uint8_t *GetFuelLibVersion(void);
extern void FuelFSM(uint16_t FuelResistance); // unit:ohm,accuracy:0.1
extern void SetMaxFuelBlockNum(uint8_t n); // call after InitFuelParamter(),default 12,max 20
extern void SetFuelSensorRecoverGroupCnt(uint16_t n); // 1:500ms,2:1000ms,3:1500ms.......,range:5s(10)-30min(3600)
extern void SetFuelSensorOpenCircuitGroupCnt(uint16_t n); // 1:500ms,2:1000ms,3:1500ms.......,range:5s(10)-30min(3600)
extern void SetFuelSensorShortCircuitGroupCnt(uint16_t n); // 1:500ms,2:1000ms,3:1500ms.......,range:5s(10)-30min(3600)
extern void SetPowerSt(uint8_t n);
extern uint8_t GetFuelSeg(void); // Segment, range:0~8
extern uint8_t GetFuelStep(void); // Pointer or Mono TFT stepless,range:0,10~((MaxFuelBlockNum + 1) * 10) 0,10:E, ((MaxFuelBlockNum + 1) * 10):F
extern uint16_t GetFuelCapacityVal(void); // unit:L,accuracy:0.1
enum
{
FuelSensorNormal,
FuelSensorShortCircuit,
FuelSensorOpenCircuit,
FuelSensorPreFault,
};
extern uint8_t GetFuelSensorState(void);
enum
{
FUEL_ST_IGN_ON_PROCESS = 1, // 1
FUEL_ST_POWER_ON_ADD_FUEL, // 2
FUEL_ST_VEHICLE_RUN, // 3
FUEL_ST_IGN_OFF_PROCESS, // 4
FUEL_ST_IGN_OFF, // 5
};
extern uint8_t GetFuelFSM_St(void);
extern uint16_t GetFuelResistance(void); // unit:ohm,accuracy:0.1
extern void SetPowerDnStep(uint8_t step); // call every ign on (after InitFuelParamter())
extern uint8_t GetPowerDnStep(void); // every 10km or ign off or refuel(FUEL_ST_POWER_ON_ADD_FUEL->FUEL_ST_VEHICLE_RUN) record
// AFC & DrivingRange
typedef struct _AFC_INIT
{
uint8_t CalcAFCMaxNum; // max 100km,default 50
uint16_t AFCMin; // unit:L,accuracy:0.1
uint16_t AFCMax; // unit:L,accuracy:0.1
uint16_t AFCPreinstall; // unit:L,accuracy:0.1
uint32_t CurODO; // unit:m,accuracy:1
uint32_t MaxDRMileage; // unit:km,accuracy:0.01
} AFC_INIT;
extern void InitAFC(AFC_INIT *data);
extern void ResetAFC(AFC_INIT *data);
typedef struct _AFC_PARA
{
uint32_t CurODO; // unit:m,accuracy:1
uint16_t FuleConsume; // unit:ul,accuracy:1
uint16_t RPM; // unit:RPM,accuracy:1
uint8_t Speed; // unit:km/h,accuracy:1
} AFC_PARA;
extern void SetAFCPara(AFC_PARA *data);
typedef struct _DAFC_PARA
{
uint32_t DAFC_FuelConsumeSum; // unit:ul (ul:m->ml:km->L:1000km)
uint32_t DAFC_ODO; // unit:m
} DAFC_PARA;
extern void DAFC_GetPowerDownPara(DAFC_PARA *data); // call every 10km or ign off or reset afc
extern void DAFC_SetPowerDownPara(DAFC_PARA *data); // call every KL30 OFF -> KL30 ON (after InitAFC())
typedef struct _DR_PARA
{
uint32_t DR_FuelConsumeSum; // unit:ul (ul:m->ml:km->L:1000km)
uint32_t DR_Mileage; // unit:km,accuracy:0.01
} DR_PARA;
extern void DR_GetPowerDownPara(DR_PARA *data); // call every 10km or ign off
extern void DR_SetPowerDownPara(DR_PARA *data); // call every KL30 OFF -> KL30 ON (after InitAFC())
extern void AFCTimerCall(void); // must per 10ms interrupt
extern uint16_t GetDRMileage(void); // unit:km,accuracy:1
extern uint16_t GetCurAFC(void); // unit:L,accuracy:0.1
// display afc
extern void DAFC_Reset(AFC_INIT *data);
extern uint16_t DAFC_GetAFC(void); // unit:L,accuracy:0.1
// display afc end
extern void SetIgnOffRefuelThreshold(uint8_t data);
#endif