/******************************************************************************
�� �� ����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