?? des_mc33972.h
字號:
/*******************************************************************************/
/**
Copyright (c) 2007 Freescale Semiconductor
\file des_MC33742.h
\brief Register definitions and function prototypes for MSDI handling
\author Freescale Semiconductor
\author B05114
\version 0.2
\date May/2007
*/
/*******************************************************************************/
/** Variable types and common definitions */
#include "typedefs.h"
#ifndef _DES_MC33972_H /* Prevent duplicated includes */
#define _DES_MC33972_H
typedef struct{ /* Struct for MSDI status */
UINT8 Flags;
UINT8 SPinputs;
UINT16 SGinputs ;
}MSDI_Stat32b;
/* MSDI Identifiers */
#define MSDI_I 0
#define MSDI_II 1
/* MSDI I default configuration */
/* Inputs switch to GND, wetting timer enabled */
#define MSDI_I_SETTINGS_INIT (MSDI_NONE)
#define MSDI_I_WKPINTSP_INIT (MSDI_NONE)
#define MSDI_I_WKPINTSG_INIT (MSDI_NONE)
#define MSDI_I_WETCURRENTSP_INIT (MSDI_SP0_SP7)
#define MSDI_I_WETCURRENTSG_INIT (MSDI_SG0_SG13)
#define MSDI_I_ANALOG_INIT (MSDI_AN_NONE|MSDI_AN_HiImpedance)
#define MSDI_I_WETTIMERSP_INIT (MSDI_SP0_SP7)
#define MSDI_I_WETTIMERSG_INIT (MSDI_SG0_SG13)
#define MSDI_I_TRISTATESP_INIT (MSDI_NONE)
#define MSDI_I_TRISTATESG_INIT (MSDI_NONE)
/* MSDI II default configuration */
/* Inputs switch to GND except SP7, wetting timer disabled,
all inputs high impedance, AMUX SP2 (Analog voltage 1) */
#define MSDI_II_SETTINGS_INIT (MSDI_SP7)
#define MSDI_II_WKPINTSP_INIT (MSDI_NONE)
#define MSDI_II_WKPINTSG_INIT (MSDI_NONE)
#define MSDI_II_WETCURRENTSP_INIT (MSDI_NONE)
#define MSDI_II_WETCURRENTSG_INIT (MSDI_SG0|MSDI_SG2|MSDI_SG4)
#define MSDI_II_ANALOG_INIT (MSDI_AN_SP2|MSDI_AN_HiImpedance)
#define MSDI_II_WETTIMERSP_INIT (MSDI_NONE)
#define MSDI_II_WETTIMERSG_INIT (MSDI_NONE)
#define MSDI_II_TRISTATESP_INIT (MSDI_SP0_SP7)
#define MSDI_II_TRISTATESG_INIT (MSDI_SG0_SG13)
/* Commands */
#define MSDI_SWITCHSTAT_CMD 0x00
#define MSDI_SETTINGS_CMD 0x01
#define MSDI_WAKEUPINTSP_CMD 0x02
#define MSDI_WAKEUPINTSG_CMD 0x03
#define MSDI_WETCURRENTSP_CMD 0x04
#define MSDI_WETCURRENTSG_CMD 0x05
#define MSDI_ANALOG_CMD 0x06
#define MSDI_WETTINGTIMERSP_CMD 0x07
#define MSDI_WETTINGTIMERSG_CMD 0x08
#define MSDI_TRISTATESP_CMD 0x09
#define MSDI_TRISTATESG_CMD 0x0A
#define MSDI_CALIBRATION_CMD 0x0B
#define MSDI_SLEEP_CMD 0x0C
#define MSDI_RESET_CMD 0x7F
/* SP/ SG configuration */
#define MSDI_NONE 0x0000
#define MSDI_SP0 0x0001
#define MSDI_SP1 0x0002
#define MSDI_SP2 0x0004
#define MSDI_SP3 0x0008
#define MSDI_SP4 0x0010
#define MSDI_SP5 0x0020
#define MSDI_SP6 0x0040
#define MSDI_SP7 0x0080
#define MSDI_SP0_SP7 0x00FF
#define MSDI_SG0 0x0001
#define MSDI_SG1 0x0002
#define MSDI_SG2 0x0004
#define MSDI_SG3 0x0008
#define MSDI_SG4 0x0010
#define MSDI_SG5 0x0020
#define MSDI_SG6 0x0040
#define MSDI_SG7 0x0080
#define MSDI_SG8 0x0100
#define MSDI_SG9 0x0200
#define MSDI_SG10 0x0400
#define MSDI_SG11 0x0800
#define MSDI_SG12 0x1000
#define MSDI_SG13 0x2000
#define MSDI_SG0_SG13 0x3FFF
/* Configuration constants */
#define MSDI_SWtoGND 0
#define MSDI_SWtoBAT 1
#define MSDI_2mA 0
#define MSDI_16mA 1
/* Analog Command */
/* Current Mode */
#define MSDI_AN_HiImpedance 0x0000
#define MSDI_AN_2mA 0x0020
#define MSDI_AN_16mA 0x0040
/* Channel */
#define MSDI_AN_NONE 0x0000
#define MSDI_AN_SG0 0x0001
#define MSDI_AN_SG1 0x0002
#define MSDI_AN_SG2 0x0003
#define MSDI_AN_SG3 0x0004
#define MSDI_AN_SG4 0x0005
#define MSDI_AN_SG5 0x0006
#define MSDI_AN_SG6 0x0007
#define MSDI_AN_SG7 0x0008
#define MSDI_AN_SG8 0x0009
#define MSDI_AN_SG9 0x000A
#define MSDI_AN_SG10 0x000B
#define MSDI_AN_SG11 0x000C
#define MSDI_AN_SG12 0x000D
#define MSDI_AN_SG13 0x000E
#define MSDI_AN_SP0 0x000F
#define MSDI_AN_SP1 0x0010
#define MSDI_AN_SP2 0x0011
#define MSDI_AN_SP3 0x0012
#define MSDI_AN_SP4 0x0013
#define MSDI_AN_SP5 0x0014
#define MSDI_AN_SP6 0x0015
#define MSDI_AN_SP7 0x0016
/* Timer values for Sleep Command */
#define MSDI_NO_SCAN 0x0000
#define MSDI_SCAN_1ms 0x0001
#define MSDI_SCAN_2ms 0x0002
#define MSDI_SCAN_4ms 0x0003
#define MSDI_SCAN_8ms 0x0004
#define MSDI_SCAN_16ms 0x0005
#define MSDI_SCAN_32ms 0x0006
#define MSDI_SCAN_64ms 0x0007
#define MSDI_INT_32ms 0x0000
#define MSDI_INT_64ms 0x0008
#define MSDI_INT_128ms 0x0010
#define MSDI_INT_256ms 0x0018
#define MSDI_INT_512ms 0x0020
#define MSDI_INT_1024ms 0x0028
#define MSDI_INT_2048ms 0x0030
#define MSDI_NO_INTms 0x0038
/* Status */
/* Flags */
#define MSDI_INTFLG 0x40
#define MSDI_THEMFLG 0x80
/* SP inputs */
#define MSDI_SP0_R 0x01
#define MSDI_SP1_R 0x02
#define MSDI_SP2_R 0x04
#define MSDI_SP3_R 0x08
#define MSDI_SP4_R 0x10
#define MSDI_SP5_R 0x20
#define MSDI_SP6_R 0x40
#define MSDI_SP7_R 0x80
/* SG inputs */
#define MSDI_SG0_R 0x0001
#define MSDI_SG1_R 0x0002
#define MSDI_SG2_R 0x0004
#define MSDI_SG3_R 0x0008
#define MSDI_SG4_R 0x0010
#define MSDI_SG5_R 0x0020
#define MSDI_SG6_R 0x0040
#define MSDI_SG7_R 0x0080
#define MSDI_SG8_R 0x0100
#define MSDI_SG9_R 0x0200
#define MSDI_SG10_R 0x0400
#define MSDI_SG11_R 0x0800
#define MSDI_SG12_R 0x1000
#define MSDI_SG13_R 0x2000
/** Function Prototypes */
/** Write MSDI register and read Serial Output response */
void des_MC33972_SendCommand(UINT8 u8MSDI_ID, UINT8 u8MSDI_Command, UINT16 u8MSDI_Data);
/** MSDI initial configuration with default values */
void des_MC33972_Config(UINT8 u8MSDI_ID);
/** Set MSDI in sleep mode and configures scan and interrupt timers */
void des_MC33972_SleepMode_IntTimers(UINT8 u8MSDI_ID, UINT8 u8TimersConfig);
/** Configure SPx pin(s) as switch to battery or switch to ground */
void des_MC33972_Set_SPinputs(UINT8 u8MSDI_ID, UINT8 u8SelectSP, UINT8 u8Connect);
/** Select SPx inputs wetting current */
void des_MC33972_Set_SP_WettingCurrent(UINT8 u8MSDI_ID, UINT8 u8SPin, UINT8 bCurrent);
/** Select SGx inputs wetting current */
void des_MC33972_Set_SG_WettingCurrent(UINT8 u8MSDI_ID, UINT16 u16SGin, UINT8 bCurrent);
/** Enable/ disable the wetting timer for SPx inputs */
void des_MC33972_SPinputs_WettingTimer(UINT8 u8MSDI_ID, UINT8 u8SPint, UINT8 u8Select);
/** Enable/ disable the wetting timer for SGx inputs */
void des_MC33972_SGinputs_WettingTimer(UINT8 u8MSDI_ID, UINT16 u16SGin, UINT8 u8Select);
/** Set SPx inputs in high impedance state */
void des_MC33972_Set_SP_HighImpedance(UINT8 u8MSDI_ID, UINT8 u8SPin);
/** Set SGx inputs in high impedance state */
void des_MC33972_Set_SG_HighImpedance(UINT8 u8MSDI_ID, UINT16 u16SGin);
/** Select SPx/ SGx input(s) for wake-up interrupt */
void des_MC33972_Select_WakeUp_Interrupt(UINT8 u8MSDI_ID, UINT8 u8SPin, UINT16 u16SGin);
/** Select analog input channel and desired current or high impedance */
void des_MC33972_Set_Analog_Channel(UINT8 u8MSDI_ID, UINT8 u8Channel, UINT8 u8Mode);
/** Read SPx, SGx and flags status */
MSDI_Stat32b des_MC33972_Read_Status(UINT8 u8MSDI_ID);
#endif /* _DES_MC33972_H */
/*******************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -