⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app_boarddevctrl.c

📁 BCM 控制demo源代码
💻 C
字号:
/*******************************************************************************/
/**
Copyright (c) 2007 Freescale Semiconductor
\file       app_boardDevCtrl.c
\brief      APD devices control 
\author     Freescale Semiconductor
\author     RC574C/ B05114
\version    0.2
\date       March/2008
*/
/*******************************************************************************/

#include "app_boardDevCtrl.h"
#include "main.h"
#include "lle_GPIO.h"
#include "des_MC33972.h"
#include "des_MC33887.h"
#include "des_MC33742.h"
#include "des_MC33879.h"
#include "des_MC15XS3400.h"
#include "des_MC35XS3400.h"
#include "des_MC10XS3412.h"

#include "lle_XGPWM.h"

// FreeMASTER control variables 
extern UINT8  fm_status, fm_task, fm_action0, fm_action1, fm_action2, fm_action3,
              fm_action4, fm_action5, fm_action6, fm_action7, fm_action8, fm_action9,
              fm_action10, fm_action11, fm_action12, fm_action13, fm_action14, fm_action15;

// eSwitch pwm control selection
extern UINT8   pwm1, pwm2, pwmCtr1, pwmCtr2, pwmCtr3;

static UINT8 u8LED_pwm;

// Door lock status
UINT8 lockStatus;

// MC33972 MSDI II tristate SP/SG cmd 
UINT8 msdiIISpTrist;
UINT16 msdiIISgTrist;

/*******************************************************************************/
/**
* \brief    Main board ADP devices watchdogs update  
* \author   rc574c
* \param    none
* \return   void
*/
void app_boardWatchdogUpd(void)
{
    // Clear MC33742 watchdog?
	if (fm_action13 != WD_TIMEOUT)
	{
		// Clear MC33742 watchdog
		des_MC33742_ClearWDT();
	}
  
	// MC15XS3400, MC35XS3400, MC10XS3412 watchdogs toggled, when control command was sent.
}

/*******************************************************************************/
/**
* \brief    Brake LED light turn ON - MC15XS3400 HS0 ON 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightBrakeON(void)
{
	des_MC15XS3400_HS_Control(XS_HS0, XS_ON, PWM_MAX);
}

/*******************************************************************************/
/**
* \brief    Brake LED light turn OFF - MC15XS3400 HS0 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightBrakeOFF(void)
{
	des_MC15XS3400_HS_Control(XS_HS0, XS_OFF, PWM_MAX);
}

/*******************************************************************************/
/**
* \brief    Cabin lights turn ON - MC15XS3400 HS1,HS2 ON 
* \author   rc574c
* \param    none
* \return   void
*/	
void app_lightCabinON(void)
{
	if (pwmCtr3)
	{
		// Cabin Lightning PWM controlled by Analog Voltage 2 (MSDI Board II)
		des_MC15XS3400_HS_Control(XS_HS1, XS_ON, pwm2);
		des_MC15XS3400_HS_Control(XS_HS2, XS_ON, pwm2);
	}
	else
	{		
		// Cabin Lightning PWM set to default value
		des_MC15XS3400_HS_Control(XS_HS1, XS_ON, PWM_DEFAULT);
		des_MC15XS3400_HS_Control(XS_HS2, XS_ON, PWM_DEFAULT);		
	}
}

/*******************************************************************************/
/**
* \brief    Cabin lights turn OFF - MC15XS3400 HS1,HS2 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightCabinOFF(void)
{
	des_MC15XS3400_HS_Control(XS_HS1, XS_OFF, PWM_DEFAULT);
	des_MC15XS3400_HS_Control(XS_HS2, XS_OFF, PWM_DEFAULT);
}

/*******************************************************************************/
/**
* \brief    Turn lights turn ON - MC35XS3400 HS0,HS1 ON 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightTurnON(void)
{
	if (pwmCtr1)
	{	
		// Turn Lightning PWM controlled by Analog Voltage 2 (MSDI Board II)
		des_MC35XS3400_HS_Control(XS_HS0, XS_ON, pwm2);
		des_MC35XS3400_HS_Control(XS_HS1, XS_ON, pwm2);
	}
	else
	{
		// Turn Lightning PWM set to default value
		des_MC35XS3400_HS_Control(XS_HS0, XS_ON, PWM_DEFAULT);
		des_MC35XS3400_HS_Control(XS_HS1, XS_ON, PWM_DEFAULT);	
	}
}

/*******************************************************************************/
/**
* \brief    Turn lights turn OFF - MC35XS3400 HS0,HS1 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightTurnOFF(void)
{
	des_MC35XS3400_HS_Control(XS_HS0, XS_OFF, PWM_DEFAULT);
	des_MC35XS3400_HS_Control(XS_HS1, XS_OFF, PWM_DEFAULT);
}

/*******************************************************************************/
/**
* \brief    Rear lights turn ON - MC35XS3400 HS2,HS3 ON 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightRearON(void)
{
	if (pwmCtr2)
	{	
		// Rear Lightning PWM controlled by Analog Voltage 2 (MSDI Board II)
		des_MC35XS3400_HS_Control(XS_HS2, XS_ON, pwm2);
		des_MC35XS3400_HS_Control(XS_HS3, XS_ON, pwm2);
	}
	else
	{	
		// Rear Lightning PWM set to default value
		des_MC35XS3400_HS_Control(XS_HS2, XS_ON, PWM_DEFAULT);
		des_MC35XS3400_HS_Control(XS_HS3, XS_ON, PWM_DEFAULT);	
	}
}

/*******************************************************************************/
/**
* \brief    Rear lights turn OFF - MC35XS3400 HS2,HS3 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightRearOFF(void)
{
	des_MC35XS3400_HS_Control(XS_HS2, XS_OFF, PWM_DEFAULT);
	des_MC35XS3400_HS_Control(XS_HS3, XS_OFF, PWM_DEFAULT);
}

/*******************************************************************************/
/**
* \brief    55W lights turn ON - MC10XS3412 HS0,HS1 ON 
* \author   rc574c
* \param    none
* \return   void
*/
void app_light55WON(void)
{
	des_MC10XS3412_HS_Control(XS_HS0, XS_ON, PWM_MAX);
	des_MC10XS3412_HS_Control(XS_HS1, XS_ON, PWM_MAX);
}

/*******************************************************************************/
/**
* \brief    55W lights turn OFF - MC10XS3412 HS0,HS1 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_light55WOFF(void)
{
	des_MC10XS3412_HS_Control(XS_HS0, XS_OFF, PWM_MAX);
	des_MC10XS3412_HS_Control(XS_HS1, XS_OFF, PWM_MAX);
}

/*******************************************************************************/
/**
* \brief    Washer pump turn ON - MC10XS3412 HS2 ON 
* \author   rc574c
* \param    none
* \return   void
*/
void app_washerPumpON(void)
{
	des_MC10XS3412_HS_Control(XS_HS2, XS_ON, PWM_MAX);
}

/*******************************************************************************/
/**
* \brief    Washer pump turn OFF - MC10XS3412 HS2 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_washerPumpOFF(void)
{
	des_MC10XS3412_HS_Control(XS_HS2, XS_OFF, PWM_MAX);
}

/*******************************************************************************/
/**
* \brief    Imobilizer LED light turn ON - MC10XS3412 HS3 ON 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightImobON(void)
{
	des_MC10XS3412_HS_Control(XS_HS3, XS_ON, PWM_MAX);
}

/*******************************************************************************/
/**
* \brief    Imobilizer LED light turn OFF - MC10XS3412 HS3 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightImobOFF(void)
{
	des_MC10XS3412_HS_Control(XS_HS3, XS_OFF, PWM_MAX);
}

/*******************************************************************************/
/**
* \brief    Door lock CLOSE.
            First function call - MC33887 IN1 ON, IN2 OFF 
            Second function call - MC33887 IN1 OFF, IN2 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_doorLockCLOSE(void)
{
	if (lockStatus == UNLOCKED)
	{
    	des_MC33887_IN1_H_IN2_L();
	}
	else
	{
 		des_MC33887_IN1_L_IN2_L();
	}

	lockStatus = LOCKED;
}

/*******************************************************************************/
/**
* \brief    Door lock OPEN.
            First function call - MC33887 IN1 OFF, IN2 ON 
            Second function call - MC33887 IN1 OFF, IN2 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_doorLockOPEN(void)
{
	if (lockStatus == LOCKED)
	{
		des_MC33887_IN1_L_IN2_H();
	}
	else
	{
		des_MC33887_IN1_L_IN2_L();
	}

	lockStatus = UNLOCKED;
} 

/*******************************************************************************/
/**
* \brief    Interior LED lights turn ON - MC33879 IN6 ON/PWM 
* \author   RC574C/ B05114
* \param    none
* \return   void
*/
void app_lightInteriorON(void)
{   
    // If variable voltage 1 (knob in analog stimulus board)
    // is less than ~4V, use PWM for gradual turn-on:     
    if (pwm1 <= 0xCC)
    {                     
        if (u8LED_pwm > pwm1)
        {
            u8LED_pwm = u8LED_pwm - 25; // Decrease PWM duty cycle 
        }
        
        if (u8LED_pwm < pwm1) 
        {
            u8LED_pwm = u8LED_pwm + 25; // Increase PWM duty cycle 
        }
            
	    // COSS output will follow PWM input stimulus
	    des_MC33879_Output_Control(COSS_OUT6,OFF);
	
	    // Set desired PWM duty cycle 	
	    lle_Set_PWM_DutyCycle(&xPWM_ch[0],u8LED_pwm);	
    } 
    
    else
    {   // If Analog Voltage exceeds ~4V apply full ON       
	    des_MC33879_Output_Control(COSS_OUT6,ON);
    }       	
}

/*******************************************************************************/
/**
* \brief    Interior LED lights turn OFF - MC33879 IN6 OFF 
* \author   RC574C/ B05114
* \param    none
* \return   void
*/
void app_lightInteriorOFF(void)
{   
    // Use PWM for gradual turn-off:     
    if (u8LED_pwm > 0)
    {                     
        u8LED_pwm = u8LED_pwm - 25;	 // Decrease PWM duty cycle
    }        
    
	// COSS output will follow PWM input stimulus
	des_MC33879_Output_Control(COSS_OUT6,OFF);
	
	// Set PWM duty cycle
	lle_Set_PWM_DutyCycle(&xPWM_ch[0],u8LED_pwm);        
}

/*******************************************************************************/
/**
* \brief    Dashboard LED lights turn ON - MC33972 SG6,SG8,SG10,SG12 ON 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightDashboardON(void)
{
	// MSDI Board II Blue LEDs ON (SG6, SG8, SG10, SG12)
	msdiIISgTrist = msdiIISgTrist & ((~MSDI_SG6) & (~MSDI_SG8) & (~MSDI_SG10) & (~MSDI_SG12));
	des_MC33972_Set_SG_HighImpedance(MSDI_II, msdiIISgTrist);	
}

/*******************************************************************************/
/**
* \brief    Dashboard LED lights turn OFF - MC33972 SG6,SG8,SG10,SG12 OFF 
* \author   rc574c
* \param    none
* \return   void
*/
void app_lightDashboardOFF(void)
{
	// MSDI Board II Blue LEDs OFF (SG6, SG8, SG10, SG12)
	msdiIISgTrist = msdiIISgTrist | (MSDI_SG6 | MSDI_SG8 | MSDI_SG10 | MSDI_SG12);
	des_MC33972_Set_SG_HighImpedance(MSDI_II, msdiIISgTrist);
}

/*******************************************************************************/
/**
* \brief    MSDI II none current sink/source demonstration - MC33972 SG1,SP7 tristated 
* \author   rc574c
* \param    none
* \return   void
*/
void app_msdiCurNon(void)
{
	// MSDI Board II MSDI source yellow LED OFF, SG1
	msdiIISgTrist = msdiIISgTrist | MSDI_SG1;
	des_MC33972_Set_SG_HighImpedance(MSDI_II, msdiIISgTrist);
	
	// MSDI Board II MSDI sink orange LED OFF, SP7
	msdiIISpTrist = msdiIISpTrist | MSDI_SP7;
	des_MC33972_Set_SP_HighImpedance(MSDI_II, msdiIISpTrist);	
}

/*******************************************************************************/
/**
* \brief    MSDI II current sink demonstration - MC33972 SP7 ON
* \author   rc574c
* \param    none
* \return   void
*/
void app_msdiCurSink(void)
{
	// MSDI Board II MSDI sink orange LED ON, SP7
	msdiIISpTrist = msdiIISpTrist & ~MSDI_SP7;
	des_MC33972_Set_SP_HighImpedance(MSDI_II, msdiIISpTrist);
}

/*******************************************************************************/
/**
* \brief    MSDI II current source demonstration - MC33972 SG1 ON
* \author   rc574c
* \param    none
* \return   void
*/
void app_msdiCurSrc(void)
{
	// MSDI Board II MSDI source yellow LED ON, SG1
	msdiIISgTrist = msdiIISgTrist & ~MSDI_SG1;
	des_MC33972_Set_SG_HighImpedance(MSDI_II, msdiIISgTrist);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -