/******************************************************************************
�� �� ����Analog_Signal_Conversion.h
����������ģ���ź�ת����ͷ�ļ�
��    �ߣ�����
��    ����V1.0
��    �ڣ�2017.03.25
******************************************************************************/

#ifndef _ANALOG_SIGNAL_CONVERSION_H_
#define _ANALOG_SIGNAL_CONVERSION_H_

#include "ADC.h"
#include "CAN_Communication_Matrix.h"
#include "Non_volatile_Memorys.h"
/******************************************************************************
KL30��Դ��ѹ�������

1.ʹ��/��ֹKL30��ѹ���
2.����·��Ϊ���µ�Ч��·
3.���򻯺�ĵ�Ч��·����Ӳ����ز���

����������������������������������������������������������������������������������������������������������������
��                 Equivalent Circuit                                                                         ��
����������������������������������������������������������������������������������������������������������������
��     KL30                                                                                                   ��
��     ����                                                                                                 ��
��       ��                                                                                                   ��
��     ���ة�                                                                                                 ��
��     ��  �� RE1                                                                                             ��
��     ����                                                                                                 ��
��       ��                   ADC Analog Input Channel                                                        ��
��       ��������������������������������>  ANALOG_KL30_ADC_CH                                              ��
��       ��                ��                                                                                 ��
��     ���ة�              ��                                                                                 ��
��     ��  �� RE2        ���ة� CE1                                                                           ��
��     ����            ����                                                                               ��
��       ��                ��                                                                                 ��
��     ���ة�            ���ة�                                                                               ��
��      GND               GND                                                                                 ��
����������������������������������������������������������������������������������������������������������������
******************************************************************************/
#define   ANALOG_SIG_KL30_VOLTAGE                     0  //ģ�������Ͷ���
#define   ANALOG_KL30_VOLTAGE_DET_ENABLE              1  //KL30��Դ��ѹ���ʹ��  //Ӳʹ�ܡ�

#define   ANALOG_KL30_ADC_CH                          11
#define   ANALOG_KL30_EQU_CIRCIUT_RE1                 330
//#define   ANALOG_KL30_EQU_CIRCIUT_RE2                 47

#define   ANALOG_KL30_VOLTAGE_OFFSET                  0  //KL30��Դ��ѹƫ��������,��λ��mV
#define   ANALOG_KL30_VOLTAGE_NEGATIVE_OFFSET         0  //0 - KL30��Դ��ѹ��ƫ�� 1 - KL30��Դ��ѹ��ƫ��

/******************************************************************************
KL15��Դ��ѹ�������

1.ʹ��/��ֹKL15��ѹ���
2.����·��Ϊ���µ�Ч��·
3.���򻯺�ĵ�Ч��·����Ӳ����ز���

����������������������������������������������������������������������������������������������������������������
��                 Equivalent Circuit                                                                         ��
����������������������������������������������������������������������������������������������������������������
��     KL15                                                                                                   ��
��     ����                                                                                                 ��
��       ��                                                                                                   ��
��     ���ة�                                                                                                 ��
��     ��  �� RE1                                                                                             ��
��     ����                                                                                                 ��
��       ��                   ADC Analog Input Channel                                                        ��
��       ��������������������������������>  ANALOG_KL15_ADC_CH                                              ��
��       ��                ��                                                                                 ��
��     ���ة�              ��                                                                                 ��
��     ��  �� RE2        ���ة� CE1                                                                           ��
��     ����            ����                                                                               ��
��       ��                ��                                                                                 ��
��     ���ة�            ���ة�                                                                               ��
��      GND               GND                                                                                 ��
����������������������������������������������������������������������������������������������������������������
******************************************************************************/
#define   ANALOG_SIG_KL15_VOLTAGE                     1  //ģ�������Ͷ���
#define   ANALOG_KL15_VOLTAGE_DET_ENABLE              1  //KL15��Դ��ѹ���ʹ��

#define   ANALOG_KL15_ADC_CH                          10
#define   ANALOG_KL15_EQU_CIRCIUT_RE1                 330
//#define   ANALOG_KL15_EQU_CIRCIUT_RE2                 47

#define   ANALOG_KL15_VOLTAGE_OFFSET                  0  //KL15��Դ��ѹƫ��������,��λ��mV
#define   ANALOG_KL15_VOLTAGE_NEGATIVE_OFFSET         0  //0 - KL15��Դ��ѹ��ƫ�� 1 - KL15��Դ��ѹ��ƫ��

/******************************************************************************
��׼ȼ��������������������

1.ʹ��/��ֹ��׼ȼ����������������
2.����·��Ϊ���µ�Ч��·
3.��ʱ,����RE3 RE4Զ����RE1 RE2,����RE3��RE4�ĵ�����С,�ɺ��Բ���,���,RE3��
  RE4������V1����ѹ����.�Ӷ�ֻҪ��RE1��RE2��OhmΪ��λ,��RE3��RE4��λ��ͬ����.��
  ��,RE1��RE2��OhmΪ��λ��ͬʱRE3��RE4��kOhmΪ��λ������Ӱ�������
4.���򻯺�ĵ�Ч��·����Ӳ����ز���

������������������������������������������������������������������������������������������������������������������������������������������������
��                          Equivalent Circuit                                                                                                ��
������������������������������������������������������������������������������������������������������������������������������������������������
��     KL15                                                                                                                                   ��
��     ����                                                                                                                                 ��
��       ��                                                                                                                                   ��
��     ���ة�                                                                                                                                 ��
��     ��  �� RE1                                                                                                                             ��
��     ����                                                                                                                                 ��
��       ��                                                                                                                                   ��
��       ���������������������������������� <����(V1)                                                                                         ��
��       ��                              ��                                                                                                   ��
��     ���ة�                          ���ة�                                                                                                 ��
��     ��  �� RE2                      ��  �� RE3                                                                                             ��
��     ����                          ����                                                                                                 ��
��       ��                              ��                   ADC Analog Input Channel                                                        ��
��       ��                              ������������������������>  ANALOG_FUEL_ADC_CH                                                      ��
��       ��    ����                      ��        ��                                                                                         ��
��     ���ة�/    R                    ���ة�      ��                                                                                         ��
��     �� /�� Fuel Level               ��  ��RE4 ���ة� CE1                                                                                   ��
��    /����   Sensor                 ����    ����                                                                                       ��
��       ��                              ��        ��                                                                                         ��
��     ���ة�                          ���ة�    ���ة�                                                                                       ��
��      GND                             GND       GND                                                                                         ��
������������������������������������������������������������������������������������������������������������������������������������������������
******************************************************************************/
#define   ANALOG_SIG_STANDARD_FUEL_SENSOR_RES         2         //ģ�������Ͷ���
#define   ANALOG_STANDARD_FUEL_SENSOR_RES_DET_ENABLE  1         //��׼ȼ�ʹ�����������ʹ��

#define   ANALOG_FUEL_ADC_CH                          6
#define   ANALOG_FUEL_EQU_CIRCIUT_RE1                 100
#define   ANALOG_FUEL_EQU_CIRCIUT_RE2                 30
#define   ANALOG_FUEL_EQU_CIRCIUT_RE3                 33
#define   ANALOG_FUEL_EQU_CIRCIUT_RE4                 33

/*
#if (Power_Mod == Power_Version_24)
  #define   ANALOG_FUEL_CONV_KL15_VOLTAGE_RANGE_LO    16000     //ȼ�ʹ�������ֵ����ת���ĵ�ѹ��Χ(��͵�ѹ),��λ��mV
  #define   ANALOG_FUEL_CONV_KL15_VOLTAGE_RANGE_HI    32000     //ȼ�ʹ�������ֵ����ת���ĵ�ѹ��Χ(��ߵ�ѹ),��λ��mV
#else
  #define   ANALOG_FUEL_CONV_KL15_VOLTAGE_RANGE_LO    6500      //ȼ�ʹ�������ֵ����ת���ĵ�ѹ��Χ(��͵�ѹ),��λ��mV
  #define   ANALOG_FUEL_CONV_KL15_VOLTAGE_RANGE_HI    18000     //ȼ�ʹ�������ֵ����ת���ĵ�ѹ��Χ(��ߵ�ѹ),��λ��mV
#endif    
*/

#define   ANALOG_FUEL_RES_OFFSET                      0         //ȼ�ʹ�������ֵƫ��������,��λ��0.1 Ohm

/******************************************************************************
��ѹ�������

1.ʹ��/��ֹ��ѹ���
2.����·��Ϊ���µ�Ч��·
3.���򻯺�ĵ�Ч��·����Ӳ����ز���

����������������������������������������������������������������������������������������������������������������
��                 Equivalent Circuit                                                                         ��
����������������������������������������������������������������������������������������������������������������
��      GAS                                                                                                   ��
��     ����                                                                                                 ��
��       ��                                                                                                   ��
��     ���ة�                                                                                                 ��
��     ��  �� RE1                                                                                             ��
��     ����                                                                                                 ��
��       ��                   ADC Analog Input Channel                                                        ��
��       ��������������������������������>  ANALOG_GAS_ADC_CH                                               ��
��       ��                ��                                                                                 ��
��     ���ة�              ��                                                                                 ��
��     ��  �� RE2        ���ة� CE1                                                                           ��
��     ����            ����                                                                               ��
��       ��                ��                                                                                 ��
��     ���ة�            ���ة�                                                                               ��
��      GND               GND                                                                                 ��
����������������������������������������������������������������������������������������������������������������
******************************************************************************/
#define   ANALOG_SIG_GAS1_VOLTAGE                     3  //ģ�������Ͷ���
#define   ANALOG_GAS1_VOLTAGE_DET_ENABLE              1  //GAS1��ѹ���ʹ��

#define   ANALOG_GAS1_ADC_CH                          9
#define   ANALOG_GAS1_EQU_CIRCIUT_RE1                 1
#define   ANALOG_GAS1_EQU_CIRCIUT_RE2                 2000

#define   ANALOG_GAS1_VOLTAGE_OFFSET                  0  //��ѹƫ��������,��λ��mV
#define   ANALOG_GAS1_VOLTAGE_NEGATIVE_OFFSET         0  //0 - ��ѹ��ƫ�� 1 - ��ѹ��ƫ��

#define   ANALOG_SIG_GAS2_VOLTAGE                     4  //ģ�������Ͷ���
#define   ANALOG_GAS2_VOLTAGE_DET_ENABLE              1  //GAS1��ѹ���ʹ��

#define   ANALOG_GAS2_ADC_CH                          8
#define   ANALOG_GAS2_EQU_CIRCIUT_RE1                 1
#define   ANALOG_GAS2_EQU_CIRCIUT_RE2                 2000

#define   ANALOG_GAS2_VOLTAGE_OFFSET                  0  //��ѹƫ��������,��λ��mV
#define   ANALOG_GAS2_VOLTAGE_NEGATIVE_OFFSET         0  //0 - ��ѹ��ƫ�� 1 - ��ѹ��ƫ��

#define   ANALOG_SIG_STANDARD_KEY_SENSOR_RES          5  //ģ�������Ͷ���
#define   ANALOG_KEY_VOLTAGE_DET_ENABLE               1  //KEYʹ�ܡ�

#define   ANALOG_KEY_ADC_CH                           2  //ͨ��ѡ��20190510 changed by FHL   ƥ�����δ���壬����Ӳ������
 
/* 
#if Power_Mod == Power_Version_24
  #define   ANALOG_KEY_CONV_KL15_VOLTAGE_RANGE_LO     16000     //������ֵ����ת���ĵ�ѹ��Χ(��͵�ѹ),��λ��mV
  #define   ANALOG_KEY_CONV_KL15_VOLTAGE_RANGE_HI     32000     //������ֵ����ת���ĵ�ѹ��Χ(��ߵ�ѹ),��λ��mV
#else
  #define   ANALOG_KEY_CONV_KL15_VOLTAGE_RANGE_LO     6500      //������ֵ����ת���ĵ�ѹ��Χ(��͵�ѹ),��λ��mV
  #define   ANALOG_KEY_CONV_KL15_VOLTAGE_RANGE_HI     18000     //������ֵ����ת���ĵ�ѹ��Χ(��ߵ�ѹ),��λ��mV
#endif    
*/
/******************************************************************************
ȫ�ֱ�������
******************************************************************************/
#if ANALOG_STANDARD_FUEL_SENSOR_RES_DET_ENABLE
  extern volatile uint16_t AnalogFuelSensorRes;       //ȼ�ʹ�������ֵ,��λ��0.1 Ohm
  extern volatile uint16_t AnalogFuelSensorResValid;  //ȼ�ʹ�������ֵ��Ч��

  #define ANALOG_FUEL_SENSOR_RES                      AnalogFuelSensorRes
  #define ANALOG_FUEL_SENSOR_RES_VALID                AnalogFuelSensorResValid

  #define ANALOG_KL15_VOLTAGE_DET_ENABLE              1
#endif

#define  ANALOG_STANDARD_COOLING_SENSOR_RES_DET_ENABLE   0

#if ANALOG_STANDARD_COOLING_SENSOR_RES_DET_ENABLE
  extern volatile uint16_t AnalogCOOLINGSensorRes;       //ˮ�´�������ֵ,��λ��0.1 Ohm
  extern volatile uint16_t AnalogCOOLINGSensorResValid;  //ˮ�´�������ֵ��Ч��

  #define ANALOG_COOLING_SENSOR_RES                      AnalogCOOLINGSensorRes
  #define ANALOG_COOLING_SENSOR_RES_VALID                AnalogCOOLINGSensorResValid
#endif

#if ANALOG_KL15_VOLTAGE_DET_ENABLE
  extern volatile uint16_t AnalogKL15Voltage;         //KL15��ѹ,��λ��mV
  extern volatile uint8_t  AnalogKL15VoltageValid;    //KL15��ѹ��Ч��

  #define ANALOG_KL15_VOLTAGE                         AnalogKL15Voltage
  #define ANALOG_KL15_VOLTAGE_VALID                   AnalogKL15VoltageValid
#endif

#if ANALOG_KL30_VOLTAGE_DET_ENABLE
  extern volatile uint16_t AnalogKL30Voltage;         //KL30��ѹ,��λ��mV
  extern volatile uint8_t  AnalogKL30VoltageValid;    //KL30��ѹ��Ч��

  #define ANALOG_KL30_VOLTAGE                         AnalogKL30Voltage
  #define ANALOG_KL30_VOLTAGE_VALID                   AnalogKL30VoltageValid
#endif


#if ANALOG_GAS1_VOLTAGE_DET_ENABLE
  extern volatile uint16_t AnalogGAS1Voltage;         //GAS1��ѹ,��λ��mV
  extern volatile uint8_t  AnalogGAS1VoltageValid;    //GAS1��ѹ��Ч��

  #define ANALOG_GAS1_VOLTAGE                         AnalogGAS1Voltage
  #define ANALOG_GAS1_VOLTAGE_VALID                   AnalogGAS1VoltageValid
#endif

#if ANALOG_GAS2_VOLTAGE_DET_ENABLE
  extern volatile uint16_t AnalogGAS2Voltage;         //GAS1��ѹ,��λ��mV
  extern volatile uint8_t  AnalogGAS2VoltageValid;    //GAS1��ѹ��Ч��

  #define ANALOG_GAS2_VOLTAGE                         AnalogGAS2Voltage
  #define ANALOG_GAS2_VOLTAGE_VALID                   AnalogGAS2VoltageValid
#endif

#if ANALOG_KEY_VOLTAGE_DET_ENABLE
  extern volatile uint16_t AnalogKEYSensorVoltage;      //KEY���mV
  extern volatile uint16_t AnalogKEYSensorVoltageValid; //KEYֵ��Ч��

  #define ANALOG_KEY_SENSOR_Vol                       AnalogKEYSensorVoltage
  #define ANALOG_KEY_SENSOR_Vol_VALID                 AnalogKEYSensorVoltageValid

#endif
/******************************************************************************
ת�����ƽṹ
******************************************************************************/
typedef struct
{
  uint8_t   TotalChCnt;
  uint8_t   CurrentCh;
  uint8_t   Busy;
  uint8_t   SignalType[ADC_MAX_CHANNEL_CNT];
  uint8_t   ChNumber[ADC_MAX_CHANNEL_CNT];
} AnalogConvCtrlStruct;

/******************************************************************************
��������
******************************************************************************/
void Analog_Signal_Converter_Init(void);
void Analog_Signal_Conversion_Service(void);
void Analog_KL30_Voltage_Conversion(void);
void Analog_KL15_Voltage_Conversion(void);

#endif