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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? des_mc15xs3400.c

?? BCM 控制demo源代碼
?? C
字號:
/*******************************************************************************/
/**
Copyright (c) 2007 Freescale Semiconductor
\file       des_MC15XS3400.c
\brief      Functions for high side switch (MC15XS3400) handling 
\author     Freescale Semiconductor
\author     B05114
\version    0.1
\date       May/2007
*/
/*******************************************************************************/

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

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

/** MC15XS definitions */
#include "des_MC15XS3400.h"
   
 
/** Wadtchdog bit*/ 
static UINT8 u8XS15_WDIN = 0; 

/* Back-up variables */ 
UINT8 u8XS15_CONFREG1[4] = {XS15_CONFR1_0_INIT, XS15_CONFR1_1_INIT,
                            XS15_CONFR1_2_INIT, XS15_CONFR1_3_INIT};

UINT8 u8XS15_OCREG_XEN[4] = {XS15_OCR_0_XENINIT, XS15_OCR_1_XENINIT,
                             XS15_OCR_2_XENINIT, XS15_OCR_3_XENINIT};

UINT8 u8XS15_OCREG[4] = {XS15_OCR_0_INIT, XS15_OCR_1_INIT,
                         XS15_OCR_2_INIT, XS15_OCR_3_INIT};

UINT8 u8XS15_GCREG = XS15_GCR_INIT;

/*******************************************************************************/
/**
* \brief    Write MC15XS3400 register and read Serial Output response
* \author   B05114
* \param    u8XS15_Command: Configuration command \n
            u8XS15_Data: Configuration data
* \return   void (Received data are stored in array u8XS15_Frame)
*/
void des_MC15XS3400_SendCommand(UINT8 u8XS_Command, UINT8 u8XS_Data)
{      
    UINT8 u8XS15_Frame[2];    /* Data array to be sent */     
                     
    u8XS15_Frame[0] = u8XS_Command | u8XS15_WDIN;
    u8XS15_Frame[1] = u8XS_Data; 
         
    CS_MC15XS3400 = 0;          /* CS low */   
    lle_SPI_16(u8XS15_Frame);  /* Send data to MC15XS3400 */    
    CS_MC15XS3400 = 1;          /* CS high */ 
    
    u8XS15_WDIN ^= 0x80;    /* Toggle watchdog bit */  
}

/*******************************************************************************/
/**
* \brief    Clear MC15XS3400 watchdog
* \author   B05114
* \param    void
* \return   void
*/
void des_MC15XS3400_ClrWDT(void)
{ 
    des_MC15XS3400_SendCommand(XS_STATR, 0);     
}

/*******************************************************************************/
/**
* \brief    Set MC15XS3400 operation mode
* \author   B05114
* \param    u8XS_Mode: Operation mode: XS_SLEEP, XS_NORMAL 
* \return   void
*/
void des_MC15XS3400_SetMode(UINT8 u8XS_Mode)
{
    RST_MC15XS3400 = 0;     /* All inputs to 0 set the MC15XS3400 */
    IN0_MC15XS3400 = 0;     /* in low-current sleep mode */
    IN1_MC15XS3400 = 0;
    IN2_MC15XS3400 = 0;
    IN3_MC15XS3400 = 0;  
    
        if(u8XS_Mode)               /* If selected mode is XS_NORMAL */
            RST_MC15XS3400 = 1;     /* generate wake-up event */  
}

/*******************************************************************************/
/**
* \brief    MC15XS3400 initial configuration with values from des_MC15XS3400.h
* \author   B05114
* \param    void
* \return   void
*/
void des_MC15XS3400_Config(void)
{
    des_MC15XS3400_SendCommand(XS_PWMR|XS_HS0, XS15_PWMR_0_INIT);
    des_MC15XS3400_SendCommand(XS_PWMR|XS_HS1, XS15_PWMR_1_INIT);
    des_MC15XS3400_SendCommand(XS_PWMR|XS_HS2, XS15_PWMR_2_INIT);
    des_MC15XS3400_SendCommand(XS_PWMR|XS_HS3, XS15_PWMR_3_INIT);    
    
    des_MC15XS3400_SendCommand(XS_CONFR0|XS_HS0, XS15_CONFR0_0_INIT);
    des_MC15XS3400_SendCommand(XS_CONFR0|XS_HS1, XS15_CONFR0_1_INIT);
    des_MC15XS3400_SendCommand(XS_CONFR0|XS_HS2, XS15_CONFR0_2_INIT);
    des_MC15XS3400_SendCommand(XS_CONFR0|XS_HS3, XS15_CONFR0_3_INIT);
    
    des_MC15XS3400_SendCommand(XS_CONFR1|XS_HS0, XS15_CONFR1_0_INIT);
    des_MC15XS3400_SendCommand(XS_CONFR1|XS_HS1, XS15_CONFR1_1_INIT);
    des_MC15XS3400_SendCommand(XS_CONFR1|XS_HS2, XS15_CONFR1_2_INIT);
    des_MC15XS3400_SendCommand(XS_CONFR1|XS_HS3, XS15_CONFR1_3_INIT);
    
    des_MC15XS3400_SendCommand(XS_OCR|XS_HS0|XS15_OCR_0_XENINIT, XS15_OCR_0_INIT);
    des_MC15XS3400_SendCommand(XS_OCR|XS_HS1|XS15_OCR_1_XENINIT, XS15_OCR_1_INIT);
    des_MC15XS3400_SendCommand(XS_OCR|XS_HS2|XS15_OCR_2_XENINIT, XS15_OCR_2_INIT);
    des_MC15XS3400_SendCommand(XS_OCR|XS_HS3|XS15_OCR_3_XENINIT, XS15_OCR_3_INIT);
    
    des_MC15XS3400_SendCommand(XS_GCR, XS15_GCR_INIT);
}

/*******************************************************************************/
/**
* \brief    Outputs configuration
* \author   B05114
* \param    u8HSout: Selected HS output channel, XS_HS0 to XS_HS3   \n
            u8Control: Direct IN control: XS_DIR_EN, XS_DIR_DIS     \n
            u8SlewRate: XS_SLEW_LOW, XS_SLEW_MED, XS_SLEW_HIGH      \n
            u8SwitchDelay: XS_NO_DELAY, XS_DELAY_16, ..., XS_DELAY_112 
* \return   void
*/
void des_MC15XS3400_HS_Configuration(UINT8 u8HSout, UINT8 u8Dir_Control,
                                     UINT8 u8SlewRate, UINT8 u8SwitchDelay)
{                           
    des_MC15XS3400_SendCommand(XS_CONFR0 | u8HSout,
                               u8Dir_Control | u8SlewRate | u8SwitchDelay);
}

/*******************************************************************************/
/**
* \brief    Outputs control
* \author   B05114
* \param    u8HSout: Selected HS output channel, XS_HS0 to XS_HS3    \n
            u8HS_State: XS_ON, XS_OFF,                               \n
            u8HS_PWM: PWM duty cycle, 0x00 to 0x7F. 
* \return   void
*/
void des_MC15XS3400_HS_Control(UINT8 u8HSout, UINT8 u8HS_State, UINT8 u8HS_PWM)
{
    des_MC15XS3400_SendCommand(XS_PWMR | u8HSout, u8HS_State | (0x7F & u8HS_PWM)); 
}


/*******************************************************************************/
/**
* \brief    PWM module selection
* \author   B05114
* \param    u8HSout: Selected HS output channel, XS_HS0 to XS_HS3    \n
            u8PWMSelect: XS_PWM_DISABLED, XS_PWM_IN0CLK, XS_PWM_INTCLK
* \return   void
*/
void des_MC15XS3400_Select_PWM_Module(UINT8 u8PWMSelect)
{
    u8XS15_GCREG &= 0x3F;
    u8XS15_GCREG |= u8PWMSelect;     /* Update backup variable */

    des_MC15XS3400_SendCommand(XS_GCR, u8XS15_GCREG );   /* Update register */
}

/*******************************************************************************/
/**
* \brief    Select open load detection
* \author   B05114
* \param    u8HSout: Selected HS output channel, XS_HS0 to XS_HS3    \n
            u8OLselect: XS_NO_LOAD, XS_LED, XS_BULB 
* \return   void
*/ 
void des_MC15XS3400_OpenLoad_Detect(UINT8 u8HSout, UINT8 u8OLselect)
{
    u8XS15_CONFREG1[u8HSout] &= 0xF1;
    u8XS15_CONFREG1[u8HSout] |= u8OLselect;    

   /* Update register */
    des_MC15XS3400_SendCommand(XS_CONFR1 | u8HSout, u8XS15_CONFREG1[u8HSout]);
}

/*******************************************************************************/
/**
* \brief    Select current sense ratio
* \author   B05114
* \param    u8HSout: Selected HS output channel, XS_HS0 to XS_HS3    \n
            u8SenseRatio: XS_CSNS_LOW, XS_CSNS_HIGH
* \return   void
*/
void des_MC15XS3400_Select_CurrentSense(UINT8 u8HSout, UINT8 u8SenseRatio)
{
    u8XS15_CONFREG1[u8HSout] &= 0xFE;
        
        if(u8SenseRatio)    u8XS15_CONFREG1[u8HSout] |= XS_CSNS_HIGH;              

    /* Update register */
    des_MC15XS3400_SendCommand(XS_CONFR1 | u8HSout, u8XS15_CONFREG1[u8HSout]);
}


/*******************************************************************************/
/**
* \brief    Select current profile
* \author   B05114
* \param    u8HSout: Selected HS output channel, XS_HS0 to XS_HS3               \n
            u8Xenon: XS_XENON_ENABLED, XS_XENON_DISABLED                        \n
            u8CoolCurve: XS_BULB_COOL_LOW, XS_BULB_COOL_MED XS_BULB_COOL_HIGH   \n 
            u8InrushCurve: XS_INRUSH_LOW, XS_INRUSH_MED, XS_INRUSH_HIGH
* \return   void
*/
void des_MC15XS3400_Select_CurrentProfile(UINT8 u8HSout, UINT8 u8Xenon,
                                        UINT8 u8CoolCurve, UINT8 u8InrushCurve)
{
    u8XS15_OCREG_XEN[u8HSout] = u8Xenon;
    
    u8XS15_OCREG[u8HSout] &= 0x07;
    u8XS15_OCREG[u8HSout] |= (u8CoolCurve | u8InrushCurve);
    
    /* Update register */
    des_MC15XS3400_SendCommand(XS_OCR | u8HSout | u8XS15_OCREG_XEN[u8HSout],
                               u8XS15_OCREG[u8HSout]);
}

/*******************************************************************************/
/**
* \brief    Select output steady state
* \author   B05114
* \param    u8HSout: Selected HS output channel, XS_HS0 to XS_HS3    \n
            u8SteadyState: XS_STEADY_OCL0, XS_STEADY_OCL1, XS_STEADY_OCL2
* \return   void
*/
void des_MC15XS3400_Select_SteadyState(UINT8 u8HSout, UINT8 u8SteadyState)
{    
    u8XS15_OCREG[u8HSout] &= 0xF9;
    u8XS15_OCREG[u8HSout] |= u8SteadyState;
    
    /* Update register */
    des_MC15XS3400_SendCommand(XS_OCR | u8HSout | u8XS15_OCREG_XEN[u8HSout],
                               u8XS15_OCREG[u8HSout]);
}

/*******************************************************************************/
/**
* \brief    Select overcurrent mode
* \author   B05114
* \param    u8HSout: Selected HS output channel, XS_HS0 to XS_HS3    \n
            u8OCmode: XS_OC_INRUSH_ONLY, XS_OC_INRUSH_COOLING
* \return   void
*/
void des_MC15XS3400_Select_OverCurrent(UINT8 u8HSout, UINT8 u8OCmode)
{    
    u8XS15_OCREG[u8HSout] &= 0xFE;
    u8XS15_OCREG[u8HSout] |= u8OCmode;
    
    /* Update register */
    des_MC15XS3400_SendCommand(XS_OCR | u8HSout | u8XS15_OCREG_XEN[u8HSout],
                               u8XS15_OCREG[u8HSout]);
}

/*******************************************************************************/
/**
* \brief    Read STATUS register for an output channel
* \author   B05114
* \param    u8HSout: Selected HS channel for reading, XS_HS0_RD to XS_HS3_RD
* \return   UINT8 value containing the fault register flags
*/
UINT8 des_MC15XS3400_Get_Status(UINT8 u8HSout)
{
    UINT8 u8XS15_Frame[2];
       
    des_MC15XS3400_SendCommand(XS_STATR, u8HSout);  /* Set SOA bits */       
                                          
    u8XS15_Frame[0] = XS_STATR | u8XS15_WDIN;
    u8XS15_Frame[1] = 0; 
         
    CS_MC15XS3400 = 0;          /* CS low */  
    lle_SPI_16(u8XS15_Frame);  /* Send data to MC15XS3400 */       
    CS_MC15XS3400 = 1;          /* CS high */ 
    
    u8XS15_WDIN ^= 0x80;    /* Toggle watchdog bit */  
    
    return u8XS15_Frame[1]; 
}

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜美腿亚洲综合| 色综合色狠狠天天综合色| 99精品热视频| 日韩欧美一区二区久久婷婷| 久久99精品久久只有精品| 欧美在线观看一区| 美女在线一区二区| av在线播放一区二区三区| 久久亚洲二区三区| 日韩精品一级二级| 欧美日韩免费在线视频| 亚洲综合一区二区三区| 在线观看www91| 亚洲午夜久久久久久久久久久| 99久久免费视频.com| 国产精品久线观看视频| www.在线欧美| 亚洲视频1区2区| 欧美午夜影院一区| 亚洲制服丝袜av| 91麻豆精品国产91久久久久久久久 | 国产日韩成人精品| 午夜精品福利久久久| 午夜电影一区二区三区| 91国偷自产一区二区三区成为亚洲经典| 国产欧美日韩麻豆91| 99re成人在线| 久久99久久久欧美国产| 国产日本欧美一区二区| 高清日韩电视剧大全免费| 亚洲欧美另类在线| 精品福利一区二区三区免费视频| 国产v综合v亚洲欧| 欧美日韩高清一区| 国产美女在线精品| 色婷婷精品久久二区二区蜜臀av| 国产精品久久久久久久岛一牛影视 | 95精品视频在线| 日韩高清电影一区| 国产精品初高中害羞小美女文| 日本韩国一区二区三区视频| 国产精品一区二区无线| 国产精品丝袜91| 日韩欧美国产一区二区三区| 91碰在线视频| 国产乱色国产精品免费视频| 日韩国产欧美在线视频| 中文字幕在线播放不卡一区| 日韩女优av电影在线观看| 欧洲一区在线观看| 91亚洲大成网污www| 国产成人亚洲综合a∨猫咪| 日精品一区二区三区| 一区二区国产盗摄色噜噜| 中文字幕av不卡| 国产日韩精品久久久| 久久久午夜精品| 亚洲女与黑人做爰| 日本欧美一区二区在线观看| 午夜a成v人精品| 蜜臀av性久久久久蜜臀av麻豆 | 日韩一区二区视频| 日韩女优电影在线观看| 久久久欧美精品sm网站| 久久久久久97三级| 自拍偷拍国产精品| 亚洲一区二区欧美| 青青草原综合久久大伊人精品| 日韩中文字幕麻豆| 韩国理伦片一区二区三区在线播放| 激情图区综合网| caoporen国产精品视频| 91成人在线免费观看| 欧美一区二区在线看| 国产亚洲欧美日韩日本| 一区二区三区国产精品| 免费美女久久99| 色综合中文字幕| 精品欧美一区二区在线观看| 国产精品理伦片| 奇米一区二区三区| 色综合久久综合网97色综合| 日韩视频永久免费| 成人性生交大片免费看中文| 国产麻豆成人精品| 欧美精品v日韩精品v韩国精品v| 精品国产精品一区二区夜夜嗨| 亚洲欧美另类小说视频| 久草精品在线观看| 欧美一区二区精品| 国产精品初高中害羞小美女文| 美女在线观看视频一区二区| 91女神在线视频| 中文无字幕一区二区三区| 日韩中文欧美在线| 91麻豆精品国产| 亚洲国产精品久久艾草纯爱| 日韩女优av电影| 一区二区三区在线影院| 成人黄页在线观看| 国产日韩欧美精品一区| 激情五月激情综合网| 欧美一区二区三区婷婷月色| 亚洲成a人片在线不卡一二三区 | 亚洲欧美一区二区不卡| 成人永久免费视频| 亚洲国产成人一区二区三区| 国产精品一区免费视频| 国产精品午夜免费| 国产 欧美在线| 成人免费一区二区三区视频| av一本久道久久综合久久鬼色| 欧美日韩亚洲综合| 久久综合九色综合欧美亚洲| 国产精品自拍三区| 国产色91在线| 91亚洲精华国产精华精华液| 亚洲国产cao| 欧美videossexotv100| 国产一区二区三区黄视频| 国产日韩v精品一区二区| 91丨九色丨黑人外教| 亚洲sss视频在线视频| 精品成a人在线观看| 99精品1区2区| 精品无人码麻豆乱码1区2区| 国产精品天美传媒| 欧美精品九九99久久| 国产成人免费视频网站高清观看视频| 国产精品每日更新| 欧美综合在线视频| 国产麻豆91精品| 亚洲成人一区二区在线观看| 国产日韩影视精品| 67194成人在线观看| 成人动漫中文字幕| 久久福利资源站| 亚洲午夜视频在线| 国产欧美精品国产国产专区| 91精品免费观看| 欧美在线观看18| 成人aaaa免费全部观看| 久久99精品久久久久久久久久久久 | 国产成人99久久亚洲综合精品| 蜜臀91精品一区二区三区| 一区二区三区国产精华| 亚洲第一狼人社区| 国产精品污污网站在线观看| 精品国产99国产精品| 欧美日韩免费视频| 欧美人狂配大交3d怪物一区| 一本久久a久久精品亚洲| 懂色av一区二区三区蜜臀| 国产麻豆日韩欧美久久| 日精品一区二区| 久久久久亚洲蜜桃| 欧美精品在线观看播放| 7777精品伊人久久久大香线蕉| 欧洲av一区二区嗯嗯嗯啊| 一本色道久久综合亚洲精品按摩| 成人av资源站| 在线亚洲欧美专区二区| 欧美亚洲禁片免费| 3atv在线一区二区三区| 精品99999| 中文字幕亚洲综合久久菠萝蜜| 综合色中文字幕| 午夜精彩视频在线观看不卡| 久久99国内精品| caoporm超碰国产精品| 在线观看日韩电影| 久久亚洲精品国产精品紫薇| 最近中文字幕一区二区三区| 亚洲午夜日本在线观看| 国产精品一区二区久久不卡 | 热久久一区二区| 成人中文字幕电影| 欧美精品久久99| 国产精品全国免费观看高清| 亚洲bt欧美bt精品777| 国产一区二区三区在线看麻豆| 色综合视频在线观看| 精品国产伦一区二区三区观看方式 | www.欧美日韩国产在线| 欧美成人一区二区三区在线观看| 国产精品全国免费观看高清| 蜜桃精品在线观看| 色一情一伦一子一伦一区| 欧美性大战久久久久久久| 日韩女优av电影| 蜜臀av性久久久久av蜜臀妖精| 成人免费视频视频在线观看免费| 91精品在线观看入口| 亚洲精品国产第一综合99久久 | 91热门视频在线观看| 国产日韩欧美制服另类| 日本午夜精品一区二区三区电影 | 国产成人午夜99999| 日韩视频免费观看高清在线视频| 亚洲影院久久精品|