📄 app_boardstatus.c
字号:
/*******************************************************************************/
/**
Copyright (c) 2007 Freescale Semiconductor
\file app_boardStatus.c
\brief Main board status
\author Freescale Semiconductor
\author rc574c
\version 0.1
\date May/2007
*/
/*******************************************************************************/
/** S12X derivative information */
#include <MC9S12XEP100.h>
#include "app_boardStatus.h"
#include "main.h"
#include "des_MC33742.h"
#include "des_MC33879.h"
#include "des_MC15XS3400.h"
#include "lle_GPIO.h"
// Main board status report
UINT8 boardStatus[4];
// MC33879 OUTs state
extern UINT8 u8COSS_Outs_Value;
// LIN fault status updated by LIN SW driver
extern unsigned char failLIN;
/*******************************************************************************/
/**
* \brief MC33742 CAN cell status report
* \author rc574c
* \param none
* \return void
*/
void app_devMC33742Stat(void)
{
// MC33742 - SBC with High Speed CAN
if ((des_MC33742_Read(SBC_CAN)) & SBC_CAN_F)
{
// Read CANL failure
switch ((des_MC33742_Read(SBC_TIM1)) & 0x0E)
{
case SBC_CANL2VDD :
{
boardStatus[0] = CAN_FAULT_LO_TO_VDD;
break;
}
case SBC_CANL2BAT :
{
boardStatus[0] = CAN_FAULT_LO_TO_VBAT;
break;
}
case SBC_CANL2GND :
{
boardStatus[0] = CAN_FAULT_LO_TO_GND;
break;
}
}
// Read CANH failure
switch ((des_MC33742_Read(SBC_LPC)) & 0x0E)
{
case SBC_CANH2VDD :
{
boardStatus[0] = CAN_FAULT_HI_TO_VDD;
break;
}
case SBC_CANH2BAT :
{
boardStatus[0] = CAN_FAULT_HI_TO_VBAT;
break;
}
case SBC_CANH2GND :
{
boardStatus[0] = CAN_FAULT_HI_TO_GND;
break;
}
}
}
else
{
// CAN OK
boardStatus[0] = CAN_NO_FAULT;
}
}
/*******************************************************************************/
/**
* \brief MC15XS3400 status report
* \author rc574c
* \param none
* \return void
*/
void app_devMC15XS3400Stat(void)
{
UINT8 stat;
stat = des_MC15XS3400_Get_Status(XS_HS0_RD);
stat = stat & (XS_FAULT_UVF|XS_FAULT_OLON|XS_FAULT_OLOFF|XS_FAULT_SCF|XS_FAULT_OCF);
switch (stat)
{
case XS_FAULT_OCF :
{
boardStatus[3] = ESWITCH_FAULT_SHORT_CIR;
break;
}
case XS_FAULT_SCF :
{
boardStatus[3] = ESWITCH_FAULT_SHORT_CIR;
break;
}
case XS_FAULT_OLOFF :
{
boardStatus[3] = ESWITCH_FAULT_OPEN_LOAD;
break;
}
case XS_FAULT_OLON :
{
boardStatus[3] = ESWITCH_FAULT_OPEN_LOAD;
break;
}
case XS_FAULT_UVF :
{
boardStatus[3] = ESWITCH_FAULT_LOSS_VPWR;
// If UV fault disappeared, clear UV bit (Toggle RST pin and config eSwitch).
if (FS_MC15XS3400 == 1)
{
des_MC15XS3400_SetMode(XS_NORMAL);
des_MC15XS3400_Config();
}
break;
}
default :
{
if ((boardStatus[3] == ESWITCH_FAULT_LOSS_VPWR) && (FS_MC15XS3400 == 0))
{
// Keep Loss of VPWR message for FreeMaster (eSwitch MISO signal disappeared)
boardStatus[3] = ESWITCH_FAULT_LOSS_VPWR;
}
else
{
boardStatus[3] = ESWITCH_NO_FAULT;
}
}
}
}
/*******************************************************************************/
/**
* \brief MC33879 status report. Open Load detected in OUT OFF state,
Short Circuit detected in OUT ON state
* \author rc574c
* \param none
* \return void
*/
void app_devMC33879Stat(void)
{
static UINT8 stat;
// read staus register
stat = des_MC33879_Get_Status();
// Check OUT6
if (stat & COSS_OUT6_STAT)
{
if (u8COSS_Outs_Value & COSS_OUT6_STAT)
{
// Fault detected
boardStatus[2] = COSS_FAULT_SHORT_CIRCUIT;
}
else
{
// Fault detected
boardStatus[2] = COSS_FAULT_OPEN_LOAD;
}
}
else
{
// No fault
boardStatus[2] = COSS_NO_FAULT;
}
}
/*******************************************************************************/
/**
* \brief Main board status report (MC33742, MC33661, MC33879,MC15XS3400)
* \author rc574c
* \param none
* \return void
*/
void app_boardStatus(void)
{
// MC33742 - SBC with High Speed CAN
app_devMC33742Stat();
// MC15XS3400 - 15mR eSwitch
app_devMC15XS3400Stat();
// MC33879 - COSS Lite
app_devMC33879Stat();
// LIN fault status
if (failLIN == 0)
{
boardStatus[1] = LIN_NO_FAULT;
}
if (failLIN == 1)
{
boardStatus[1] = LIN_FAULT_SHORT_TO_GND;
}
if (failLIN == 2)
{
boardStatus[1] = LIN_FAULT_SHORT_TO_VPWR;
}
// N/A
// MC35XS3400 - 35mR eSwitch
// MC10XS3412 - dual 10mR and 12mR eSwitch
// MC33902 - High Speed CAN
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -