亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? des_mc33972.c

?? BCM 控制demo源代碼
?? C
字號:
/*******************************************************************************/
/**
Copyright (c) 2007 Freescale Semiconductor
\file       des_MC33972.c
\brief      Functions for MSD (MC33972) handling 
\author     Freescale Semiconductor
\author     B05114
\version    0.2
\date       May/2007
*/
/*******************************************************************************/

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

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

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

/** SBC definitions */
#include "des_MC33972.h"

    
/** Backup arrays for MSDI configuration */
/** SPx inputs configuration */
UINT8 u8MSDI_SPxConfig[2] ={MSDI_I_SETTINGS_INIT,
                            MSDI_II_SETTINGS_INIT};

/** Wetting current settings for SPx inputs */
UINT8 u8MSDI_SPx_Wettingcurrent[2] ={MSDI_I_WETCURRENTSP_INIT,
                                     MSDI_II_WETCURRENTSP_INIT};

/** Wetting current settings for SGx inputs */
UINT16 u16MSDI_SGx_Wettingcurrent[2] ={MSDI_I_WETCURRENTSP_INIT,
                                       MSDI_II_WETCURRENTSP_INIT};

/** Wetting timer settings for SPx inputs */
UINT8 u8MSDI_SPx_Wettingtimer[2] ={MSDI_I_WETTIMERSP_INIT,
                                   MSDI_II_WETTIMERSP_INIT};

/** Wetting timer settings for SGx inputs */
UINT16 u16MSDI_SGx_Wettingtimer[2] ={MSDI_I_WETTIMERSG_INIT,
                                     MSDI_II_WETTIMERSG_INIT};


/*******************************************************************************/
/**
* \brief    Write MSDI register and read Serial Output response
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II \n
            u8MSDI_Comm: MSDI configuration command \n
            u8MSDI_H: Higher byte with configuration data \n
            u8MSDI_L: Lower byte with configuration data
* \return   void (Received data are stored in array u8MSDI_Frame)
*/
void des_MC33972_SendCommand(UINT8 u8MSDI, UINT8 u8MSDI_Command, UINT16 u8MSDI_Data)
{       
    UINT8 u8MSDI_Frame[3];    /* Data array to be sent to the MSDI */     

    u8MSDI_Frame[2] = 0xFF & u8MSDI_Data;      
    u8MSDI_Frame[1] = u8MSDI_Data>> 8; 
    u8MSDI_Frame[0] = u8MSDI_Command;    
    
    if(!u8MSDI)     CS_MC33972_I = 0;    /* CS low */
    if(u8MSDI)      CS_MC33972_II = 0; 
    
    lle_SPI_24(u8MSDI_Frame);  /* Send data to SBC */
    
    if(!u8MSDI)     CS_MC33972_I = 1;    /* CS high */
    if(u8MSDI)      CS_MC33972_II = 1;   
}

/*******************************************************************************/
/**
* \brief    MSDI I initial configuration with values from des_MC33972.h 
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II
* \return   void
*/
void des_MC33972_Config(UINT8 u8MSDI)
{
    if(!u8MSDI)    /* Default configuration for MSDI I */
    {         
    des_MC33972_SendCommand(u8MSDI, MSDI_SETTINGS_CMD,       MSDI_I_SETTINGS_INIT);      
    des_MC33972_SendCommand(u8MSDI, MSDI_WAKEUPINTSP_CMD,    MSDI_I_WKPINTSP_INIT);    
    des_MC33972_SendCommand(u8MSDI, MSDI_WAKEUPINTSG_CMD,    MSDI_I_WKPINTSG_INIT);   
    des_MC33972_SendCommand(u8MSDI, MSDI_WETCURRENTSP_CMD,   MSDI_I_WETCURRENTSP_INIT);    
    des_MC33972_SendCommand(u8MSDI, MSDI_WETCURRENTSG_CMD,   MSDI_I_WETCURRENTSG_INIT);    
    des_MC33972_SendCommand(u8MSDI, MSDI_ANALOG_CMD,         MSDI_I_ANALOG_INIT);        
    des_MC33972_SendCommand(u8MSDI, MSDI_WETTINGTIMERSP_CMD, MSDI_I_WETTIMERSP_INIT);
    des_MC33972_SendCommand(u8MSDI, MSDI_WETTINGTIMERSG_CMD, MSDI_I_WETTIMERSG_INIT);
    des_MC33972_SendCommand(u8MSDI, MSDI_TRISTATESP_CMD,     MSDI_I_TRISTATESP_INIT);    
    des_MC33972_SendCommand(u8MSDI, MSDI_TRISTATESG_CMD,     MSDI_I_TRISTATESG_INIT);
    }
    
    if(u8MSDI)      /* Default configuration for MSDI II */ 
    {         
    des_MC33972_SendCommand(u8MSDI, MSDI_SETTINGS_CMD,       MSDI_II_SETTINGS_INIT);      
    des_MC33972_SendCommand(u8MSDI, MSDI_WAKEUPINTSP_CMD,    MSDI_II_WKPINTSP_INIT);    
    des_MC33972_SendCommand(u8MSDI, MSDI_WAKEUPINTSG_CMD,    MSDI_II_WKPINTSG_INIT);   
    des_MC33972_SendCommand(u8MSDI, MSDI_WETCURRENTSP_CMD,   MSDI_II_WETCURRENTSP_INIT);    
    des_MC33972_SendCommand(u8MSDI, MSDI_WETCURRENTSG_CMD,   MSDI_II_WETCURRENTSG_INIT);    
    des_MC33972_SendCommand(u8MSDI, MSDI_ANALOG_CMD,         MSDI_II_ANALOG_INIT);        
    des_MC33972_SendCommand(u8MSDI, MSDI_WETTINGTIMERSP_CMD, MSDI_II_WETTIMERSP_INIT);
    des_MC33972_SendCommand(u8MSDI, MSDI_WETTINGTIMERSG_CMD, MSDI_II_WETTIMERSG_INIT);
    des_MC33972_SendCommand(u8MSDI, MSDI_TRISTATESP_CMD,     MSDI_II_TRISTATESP_INIT);    
    des_MC33972_SendCommand(u8MSDI, MSDI_TRISTATESG_CMD,     MSDI_II_TRISTATESG_INIT);
    }    
}

/*******************************************************************************/
/**
* \brief    Set MSDI in sleep mode and configures scan and interrupt timers
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II \n
            u8TimersConfig: Scan and interrupt timer values as defined in des_MC33972.h 
* \return   void
*/
void des_MC33972_SleepMode_IntTimers(UINT8 u8MSDI, UINT8 u8TimersConfig) 
{   
  des_MC33972_SendCommand(u8MSDI, MSDI_SLEEP_CMD, u8TimersConfig);
}

/*******************************************************************************/
/**
* \brief    Configure MSDI SPx pin(s) as switch to battery or switch to ground
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II \n
            u8SelectSP: SPx pin(s) as defined in des_MC33972.h \n
            (MSDI_SP0, MSDI_SP1, ...MSDI_SP7) OR combinations are valid \n
            u8Connect: MSDI_SWtoBAT, MSDI_SWtoGND
* \return   void
*/
void des_MC33972_Set_SPinputs(UINT8 u8MSDI, UINT8 u8SelectSP, UINT8 u8Connect)
{        
    if(u8Connect)
        u8MSDI_SPxConfig[u8MSDI] |= u8SelectSP;     /* Set selected bits */
    
    if(!u8Connect)
        u8MSDI_SPxConfig[u8MSDI] &= ~u8SelectSP;    /* Clear selected bits */
                               
    des_MC33972_SendCommand(u8MSDI, MSDI_SETTINGS_CMD, u8MSDI_SPxConfig[u8MSDI]);                       
}

/*******************************************************************************/
/**
* \brief    Select SPx inputs wetting current
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II \n
            u8SPin: SPx pin(s) as defined in des_MC33972.h \n
            (MSDI_SP0, MSDI_SP1, ... MSDI_SP7) OR combinations are valid \n
            bCurrent: MSDI_2mA, MSDI_16mA 
* \return   void
*/
void des_MC33972_Set_SP_WettingCurrent(UINT8 u8MSDI, UINT8 u8SPin, UINT8 bCurrent)
{
    if(!bCurrent)
        u8MSDI_SPx_Wettingcurrent[u8MSDI] &= ~u8SPin;    /* Clear selected bits */
    
    if(bCurrent)
        u8MSDI_SPx_Wettingcurrent[u8MSDI] |= u8SPin;     /* Set selected bits */
   
    des_MC33972_SendCommand(u8MSDI, MSDI_WETCURRENTSP_CMD,
                            u8MSDI_SPx_Wettingcurrent[u8MSDI]);
}

/*******************************************************************************/
/**
* \brief    Select SGx inputs wetting current
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II \n
            u16SGin: SGx pin(s) as defined in des_MC33972.h \n
            (MSDI_SG0, MSDI_SG1, ...MSDI_SG13) OR combinations are valid \n
            bCurrent: MSDI_2mA, MSDI_16mA
* \return   void
*/
void des_MC33972_Set_SG_WettingCurrent(UINT8 u8MSDI, UINT16 u16SGin, UINT8 bCurrent)
{
    if(!bCurrent)
        u16MSDI_SGx_Wettingcurrent[u8MSDI] &= ~u16SGin;    /* Clear selected bits */
    
    if(bCurrent)
        u16MSDI_SGx_Wettingcurrent[u8MSDI] |= u16SGin;     /* Set selected bits */
   
    des_MC33972_SendCommand(u8MSDI, MSDI_WETCURRENTSG_CMD,
                            u16MSDI_SGx_Wettingcurrent[u8MSDI]);
}

/*******************************************************************************/
/**
* \brief    Enable/ disable the wetting timer for SPx inputs
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II \n
            u8SPin: SPx pin(s) as defined in des_MC33972.h \n
            (MSDI_SP0, MSDI_SP1, ...MSDI_SP7) OR combinations are valid \n
            u8Select: ENABLE, DISABLE
* \return   void
*/
void des_MC33972_SPinputs_WettingTimer(UINT8 u8MSDI, UINT8 u8SPin, UINT8 u8Select)
{
    if(u8Select)
        u8MSDI_SPx_Wettingtimer[u8MSDI] |= u8SPin;     /* Set selected bits */
    
    if(!u8Select)
        u8MSDI_SPx_Wettingtimer[u8MSDI] &= ~u8SPin;    /* Clear selected bits */

    des_MC33972_SendCommand(u8MSDI, MSDI_WETTINGTIMERSP_CMD,
                            u8MSDI_SPx_Wettingtimer[u8MSDI]);       
}

/*******************************************************************************/
/**
* \brief    Enable/ disable the wetting timer for SGx inputs
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II \n
            u16SGin: SGx pin(s) as defined in des_MC33972.h \n
            (MSDI_SG0, MSDI_SG1, ...MSDI_SG13) OR combinations are valid \n
            u8Select: ENABLE, DISABLE
* \return   void
*/
void des_MC33972_SGinputs_WettingTimer(UINT8 u8MSDI, UINT16 u16SGin,UINT8 u8Select)
{
    if(u8Select)
        u16MSDI_SGx_Wettingtimer[u8MSDI] |= u16SGin;     /* Set selected bits */
    
    if(!u8Select)
        u16MSDI_SGx_Wettingtimer[u8MSDI] &= ~u16SGin;    /* Clear selected bits */
    
    des_MC33972_SendCommand(u8MSDI, MSDI_WETTINGTIMERSG_CMD,
                            u16MSDI_SGx_Wettingtimer[u8MSDI]);    
}

/*******************************************************************************/
/**
* \brief    Set SPx inputs in high impedance state
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II                        \n
            u8SPin: SPx pin(s) as defined in des_MC33972.h                  \n
            (MSDI_SP0, MSDI_SP1, ..., MSDI_SP7) OR combinations are allowed
* \return   void
*/
void des_MC33972_Set_SP_HighImpedance(UINT8 u8MSDI, UINT8 u8SPin)
{    
    des_MC33972_SendCommand(u8MSDI, MSDI_TRISTATESP_CMD, u8SPin);
}

/*******************************************************************************/
/**
* \brief    Set SGx inputs in high impedance state
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II                        \n
            u16SGin: SGx pin(s) as defined in des_MC33972.h                 \n
            (MSDI_SG0, MSDI_SG1,..., MSDI_SG13) OR combinations are allowed.
* \return   void
*/
void des_MC33972_Set_SG_HighImpedance(UINT8 u8MSDI, UINT16 u16SGin)
{      
    des_MC33972_SendCommand(u8MSDI, MSDI_TRISTATESG_CMD, u16SGin);
}

/*******************************************************************************/
/**
* \brief    Select SPx/ SGx inputs for wake-up interrupt 
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II \n
            u8SPin, u16SGin: SPx pin(s) as defined in des_MC33972.h \n
            (MSDI_SP0, MSDI_SP1, ..., MSDI_SG12, MSDI_SG13) OR combinations are valid
* \return   void
*/
void des_MC33972_Select_WakeUp_Interrupt(UINT8 u8MSDI, UINT8 u8SPin, UINT16 u16SGin)
{
    des_MC33972_SendCommand(u8MSDI, MSDI_WAKEUPINTSP_CMD, u8SPin);
    des_MC33972_SendCommand(u8MSDI, MSDI_WAKEUPINTSG_CMD, u16SGin);
}

/*******************************************************************************/
/**
* \brief    Select analog input channel and desired current or high impedance
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II \n
            u8Channel: Analog channel as defined in des_MC33972.h \n
            (MSDI_AN_SG0, MSDI_AN_SG1,..., MSDI_AN_SP7, MSDI_AN_SP7) \n
            u8Mode: MSDI_AN_HiImpedance, MSDI_AN_2mA, MSDI_AN_16mA
* \return   void
*/
void des_MC33972_Set_Analog_Channel(UINT8 u8MSDI, UINT8 u8Channel, UINT8 u8Mode)
{
    des_MC33972_SendCommand(u8MSDI, MSDI_ANALOG_CMD, u8Channel | u8Mode);
}
    
/*******************************************************************************/
/**
* \brief    Read SPx, SGx and flags status
* \author   B05114
* \param    u8MSDI: MSDI identifier, MSD_I, MSDI, II
* \return   u32MSDI_Status: Structure with status of flags, SP inputs ans SG inputs    
*/
MSDI_Stat32b des_MC33972_Read_Status(UINT8 u8MSDI)
{
    MSDI_Stat32b u32MSDI_Status;
    UINT8 u8Aux;
    UINT8 u8MSDI_Frame[]={0, 0, 0};    /* Data array to be sent to the MSDI */         
    
    if(!u8MSDI)     CS_MC33972_I = 0;    /* CS low */
    if(u8MSDI)      CS_MC33972_II = 0; 
    
    lle_SPI_24(u8MSDI_Frame);  /* Send data to SBC */
    
    if(!u8MSDI)     CS_MC33972_I = 1;    /* CS high */
    if(u8MSDI)      CS_MC33972_II = 1; 
      
    
    u32MSDI_Status.Flags = u8MSDI_Frame[0] & 0xC0;  /* Flags */
    
    u32MSDI_Status.SPinputs = u8MSDI_Frame[0]<<2;    
    u8Aux = u8MSDI_Frame[1] >> 6;    
    u32MSDI_Status.SPinputs |= u8Aux;   /* SP input status */    
    
    u32MSDI_Status.SGinputs = 0x3F00 & (u8MSDI_Frame[1] << 8);      
    
    u32MSDI_Status.SGinputs |= u8MSDI_Frame[2];  /* SP input status */
    
    return u32MSDI_Status;
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香天五香天堂综合| 欧美成va人片在线观看| 欧美精品精品一区| 日本一区二区三级电影在线观看 | 天堂午夜影视日韩欧美一区二区| 国产在线精品一区二区三区不卡| 欧美影视一区在线| 国产精品网站在线| 久久国产日韩欧美精品| 欧美视频一区在线观看| 久久综合av免费| 伊人性伊人情综合网| 国产一区视频导航| 欧美成人一区二区三区片免费| 一区二区在线看| 9色porny自拍视频一区二区| 久久综合99re88久久爱| 精品在线一区二区| 欧美高清dvd| 亚洲图片欧美一区| 在线看不卡av| 一区av在线播放| 色综合久久中文综合久久97| 亚洲国产精品t66y| 丁香激情综合国产| 国产喂奶挤奶一区二区三区| 国产在线不卡一区| 久久欧美一区二区| 国产精品一二二区| 国产精品午夜在线观看| 成人高清视频在线观看| 日本一区二区在线不卡| 成人黄色大片在线观看| 国产精品国产三级国产aⅴ中文 | 日本少妇一区二区| 欧美电影在哪看比较好| 日本成人在线视频网站| 日韩免费性生活视频播放| 七七婷婷婷婷精品国产| 日韩小视频在线观看专区| 免费黄网站欧美| 亚洲精品一区二区三区影院| 国产主播一区二区| 中文字幕欧美区| jvid福利写真一区二区三区| 亚洲精品一卡二卡| 欧美日韩一区二区三区四区五区| 亚洲在线成人精品| 欧美二区三区91| 国产揄拍国内精品对白| 国产精品盗摄一区二区三区| 日本黄色一区二区| 午夜免费久久看| 日韩精品综合一本久道在线视频| 国产一区二区三区久久久| 欧美国产综合一区二区| 色一区在线观看| 美女www一区二区| 国产精品青草久久| 欧美日韩亚洲综合在线| 精品一区二区三区av| 国产精品久久久久久久久图文区| 欧美亚洲综合久久| 精品一区二区三区的国产在线播放| 日本一区二区三区免费乱视频| 91久久精品一区二区| 日日摸夜夜添夜夜添国产精品 | 51精品国自产在线| 国产福利一区二区三区视频在线 | 国产一区二区女| 亚洲男人天堂av网| 欧美α欧美αv大片| av中文字幕不卡| 日本不卡高清视频| 亚洲视频精选在线| 亚洲精品一区二区三区99| 99久久er热在这里只有精品15| 青娱乐精品视频在线| 亚洲三级免费电影| 欧美岛国在线观看| 欧美日韩一区视频| 色悠久久久久综合欧美99| 国内精品伊人久久久久影院对白| 亚洲一区在线视频观看| 欧美国产一区二区| 欧美一区二区三区日韩视频| www.亚洲色图.com| 精品一区二区免费视频| 亚洲成人av在线电影| 亚洲少妇屁股交4| 久久精品欧美日韩| 欧美一级精品在线| 欧美日韩一级大片网址| 91美女片黄在线观看| 国产成人在线影院 | 久久久久久久久久久电影| 欧美日韩免费视频| 色综合久久99| eeuss鲁片一区二区三区| 国产综合色在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲精品高清在线| 亚洲人吸女人奶水| 亚洲欧洲成人av每日更新| 久久精品无码一区二区三区| 欧美成人官网二区| 日韩欧美成人激情| 日韩一区二区三区观看| 91精品国产乱码久久蜜臀| 欧美特级限制片免费在线观看| 色综合天天性综合| 91免费视频网址| 99免费精品视频| 成人免费黄色大片| 99久久99久久精品国产片果冻| 成人免费高清视频在线观看| 国产大陆a不卡| 丁香婷婷综合五月| bt欧美亚洲午夜电影天堂| 成人激情午夜影院| 不卡在线观看av| 成人丝袜18视频在线观看| 风间由美性色一区二区三区| 成人av中文字幕| 99久久综合99久久综合网站| 99久久精品国产精品久久 | 狠狠色丁香婷婷综合| 黄色资源网久久资源365| 国产久卡久卡久卡久卡视频精品| 国产精品一二三区| 91视频xxxx| 欧美日韩国产系列| 欧美一区二区三区啪啪| 精品久久久久av影院| 久久精品夜夜夜夜久久| 中文字幕一区二区三区蜜月| 亚洲欧美一区二区三区国产精品 | 日韩毛片高清在线播放| 亚洲线精品一区二区三区八戒| 日本欧美加勒比视频| 国产精品456| 在线亚洲欧美专区二区| 777欧美精品| 国产日韩精品视频一区| 亚洲免费在线观看| 青青草97国产精品免费观看无弹窗版| 极品少妇xxxx精品少妇偷拍| 波多野结衣欧美| 欧美精选一区二区| 国产清纯在线一区二区www| 一区二区三区欧美| 国内精品视频666| 欧美伊人久久久久久久久影院| 精品日韩欧美在线| 综合色中文字幕| 美女一区二区久久| 91在线精品秘密一区二区| 日韩欧美中文一区二区| 中文字幕中文乱码欧美一区二区| 亚洲va欧美va国产va天堂影院| 九九在线精品视频| 色婷婷综合久久久久中文 | 成人激情黄色小说| 91精品国产欧美日韩| 亚洲欧美另类小说视频| 久久精品国产亚洲aⅴ| 91成人在线精品| 久久久不卡网国产精品一区| 亚洲大片精品永久免费| 成人高清在线视频| 精品国产乱码久久久久久久| 亚洲综合激情另类小说区| 成人动漫视频在线| 日韩欧美国产麻豆| 亚洲午夜成aⅴ人片| 99精品桃花视频在线观看| 亚洲精品一线二线三线| 免费成人你懂的| 在线精品视频小说1| 国产精品久久久久久久久晋中 | 久久综合九色综合97_久久久| 一区二区三区国产精华| voyeur盗摄精品| 欧美激情一区二区三区蜜桃视频| 青青国产91久久久久久| 欧美日韩久久不卡| 亚洲五码中文字幕| 欧美午夜精品久久久久久超碰| 亚洲色图视频网| 成人av第一页| 国产精品网友自拍| 国产suv一区二区三区88区| 精品粉嫩超白一线天av| 久久99精品久久久久久国产越南| 欧美日韩国产综合一区二区 | 欧美精品精品一区| 日韩国产精品久久久久久亚洲| 欧洲人成人精品| 亚洲成人久久影院| 3d成人动漫网站|