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

📄 des_mc33879.c

📁 BCM 控制demo源代码
💻 C
字号:
/*******************************************************************************/
/**
Copyright (c) 2007 Freescale Semiconductor
\file       des_MC33879.c
\brief      Functions for Configurable Octal Serial Switch MC33879
\author     Freescale Semiconductor
\author     B05114
\version    0.2
\date       March/2008
*/
/*******************************************************************************/     

/** Variable types and common definitions */
#include "typedefs.h"   

/** GPIO definitions  */
#include "lle_GPIO.h"   

/** SPI definitions */
#include "lle_SPI.h"

/** COSS definitions */
#include "des_MC33879.h"
 
 
/** Backup variables for COSS configuration */
UINT8 u8COSS_OpenLoad_Value = COSS_OPLOAD_INIT;
UINT8 u8COSS_Outs_Value = COSS_OUTS_INIT;


/*******************************************************************************/
/**
* \brief    Write MC33879 register
* \author   B05114
* \param    u8COSS_OpenLoad: Open load detection configuration     \n
            u8COSS_Out: Outputs selection
* \return   void (Received data are stored in array u8COSS_Frame)
*/
void des_MC33879_SendCommand(UINT8 u8COSS_OpenLoad, UINT8 u8COSS_Out)
{      
    UINT8 u8COSS_Frame[2];      /* Data array to be sent */     
                     
    u8COSS_Frame[0] = u8COSS_OpenLoad;
    u8COSS_Frame[1] = u8COSS_Out; 
         
    CS_MC33879 = 0;             /* CS low */    
    lle_SPI_16(u8COSS_Frame);   /* Send data to MC33879 */    
    CS_MC33879 = 1;             /* CS high */      
}

/*******************************************************************************/
/**
* \brief    Set MC33879 operation mode
* \author   B05114
* \param    u8COSS_Mode: Operation mode: COSS_SLEEP, COSS_NORMAL  
* \return   void
*/
void des_MC33879_SetMode(UINT8 u8COSS_Mode)
{
    CS_MC33879 = 1;     /* Chip select on high level */
       
        if(!u8COSS_Mode)    EN_MC33879 = 0;   /* Sleep mode */ 
        if(u8COSS_Mode)     EN_MC33879 = 1;   /* Normal mode */
}

/*******************************************************************************/
/**
* \brief    MC33879 initial default configuration
* \author   B05114
* \param    void  
* \return   void
*/
void des_MC33879_Config(void)
{
    des_MC33879_SendCommand(COSS_OPLOAD_INIT, COSS_OUTS_INIT);
}

/*******************************************************************************/
/**
* \brief    Outputs control
* \author   B05114
* \param    u8COSSout: Selected COSS output channel, COSS_OUT1 to COSS_OUT8    \n
            u8COSS_State: ON, OFF. 
* \return   void
*/
void des_MC33879_Output_Control(UINT8 u8COSS_Out, UINT8 u8COSS_State)
{
    if(u8COSS_State)    u8COSS_Outs_Value |= u8COSS_Out;  /* Set bits */
    if(!u8COSS_State)   u8COSS_Outs_Value &= ~u8COSS_Out; /* Clear bits */
          
    /* Update command register */     
    des_MC33879_SendCommand(u8COSS_OpenLoad_Value, u8COSS_Outs_Value); 
}

/*******************************************************************************/
/**
* \brief    Select open load detection
* \author   B05114
* \param    u8COSS_OpLoad: COSS_OPLOAD1 to COSS_OPLOAD8    \n
            u8OpLoadsel: ENABLE, DISABLE    
* \return   void
*/ 
void des_MC33879_OpenLoad_Detect(UINT8 u8COSS_OpLoad, UINT8 u8OpLoadsel)
{
    if(u8OpLoadsel)    u8COSS_OpenLoad_Value |= u8COSS_OpLoad;  /* Set bits */
    if(!u8OpLoadsel)   u8COSS_OpenLoad_Value &= ~u8COSS_OpLoad; /* Clear bits */       

   /* Update command register */
    des_MC33879_SendCommand(u8COSS_OpenLoad_Value, u8COSS_Outs_Value);
}

/*******************************************************************************/
/**
* \brief    Read outputs status in fault register
* \author   B05114
* \param    void
* \return   UINT8 value containing the outputs status
*/
UINT8 des_MC33879_Get_Status(void)
{
    UINT8 u8COSS_Frame[2];      /* Data array to be sent */     
                     
    u8COSS_Frame[0] = u8COSS_OpenLoad_Value;
    u8COSS_Frame[1] = u8COSS_Outs_Value; 
         
    CS_MC33879 = 0;             /* CS low */    
    lle_SPI_16(u8COSS_Frame);   /* Send data to MC33879 */    
    CS_MC33879 = 1;             /* CS high */   
    
    return u8COSS_Frame[1]; 
}

/*******************************************************************************/

⌨️ 快捷键说明

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