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

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

?? drivers.c

?? FREESCALE 提供的 ZIGBEE協議
?? C
?? 第 1 頁 / 共 2 頁
字號:
                                                     */
    SPIWaitTransferDone();      /* For this bit to be set, SPTED MUST be set */
    SPIClearRecieveDataReg();   /* 
                                 * Clear receive data register. SPI 
                                 * entirely ready for read or write 
                                 */
    SPISendChar(u8Addr );       /*
                                 * Dummy write. Receive register of SPI 
                                 * will contain MSB
                                 */
    SPIWaitTransferDone();      /* 
                                 * For this bit to be set, SPTED MUST be 
                                 * set. Get MSB
                                 */
    SPIReadMSB();               /* MSB */
    SPISendChar(u8Addr);        /*
                                 * Dummy write. Waiting until after 
                                 * reading received data insures no 
                                 * overrun 
                                 */
    SPIWaitTransferDone();      /* 
                                 * For this bit to be set, SPTED MUST be 
                                 * set. Get LSB
                                 */
    SPIReadLSB();               /* LSB */
    DeAssertCE();               /* Disables MC13192 SPI */
    MC13192RestoreInterrupts(); /* Restore MC13192 interrupt status */
    return u16Data;
}

/*
 * SPIDrvRead2 : Read the second word from SPI
 *
 * Parameters : u8Addr - SPI address
 *
 * Return : u16Data -  u16Data[0] is the MSB, u16Data[1] is the LSB
 */
UINT16 SPIDrvRead2(UINT8 u8Addr)
{
    UINT8 u8TempValue;
    UINT16  u16Data;            /* u16Data[0] is MSB, u16Data[1] is LSB */

    SPIClearRecieveStatReg();  /* Clear status register (possible SPRF, SPTEF) */  
    SPIClearRecieveDataReg();  /* 
                                 * Clear receive data register. SPI entirely 
                                 * ready for read or write
                                 */                       
    MC13192DisableInterrupts(); /* Necessary to prevent double SPI access */
    AssertCE();                 /* Enables MC13192 SPI */
    SPISendChar((UINT8)((u8Addr & 0x3f) | 0x80));   /* Mask address, 6bit addr, Set 
                                                     * read bit. 
                                                     */
    SPIWaitTransferDone();      /* For this bit to be set, SPTED MUST be set */
    SPIClearRecieveDataReg();   /* 
                                 * Clear receive data register. SPI 
                                 * entirely ready for read or write 
                                 */
    SPISendChar(u8Addr );       /*
                                 * Dummy write. Receive register of SPI 
                                 * will contain MSB
                                 */
    SPIWaitTransferDone();      /* 
                                 * For this bit to be set, SPTED MUST be 
                                 * set. Get MSB
                                 */
    SPIReadMSB();               /* MSB */
    SPISendChar(u8Addr);             /*
                                       * Dummy write. Waiting until after 
                                       * reading received data insures no 
                                       * overrun 
                                       */
    SPIWaitTransferDone();            /* 
                                       * For this bit to be set, SPTED MUST be 
                                       * set. Get LSB
                                       */
    SPIReadLSB();               /* LSB */
    SPISendChar(u8Addr);             /*
                                       * Dummy write. Waiting until after 
                                       * reading received data insures no 
                                       * overrun 
                                       */
    SPIWaitTransferDone();            /* 
                                       * For this bit to be set, SPTED MUST be 
                                       * set. Get LSB
                                       */
    SPIReadMSB();               /* MSB */
    SPISendChar(u8Addr);             /*
                                       * Dummy write. Waiting until after 
                                       * reading received data insures no 
                                       * overrun 
                                       */
    SPIWaitTransferDone();            /* 
                                       * For this bit to be set, SPTED MUST be 
                                       * set. Get LSB
                                       */
    SPIReadLSB();               /* LSB */
    DeAssertCE();                     /* Disables MC13192 SPI */
    MC13192RestoreInterrupts();       /* Restore MC13192 interrupt status */
    return u16Data;
}


/*
 * RAMDrvWriteTx : Write a block of data to TX packet RAM, whichever is selected
 *
 * Parameters : length - Length of the block of data in bytes
 * *contents - Pointer to the data block
 *
 * Return : None
 */
void RAMDrvWriteTx(tTxPacket *psTxPkt)
{
    UINT8 i, u8TempByte, u8TempValue;   /* Temporary counters */ 
    UINT16  u16Reg;                     /* TX packet length register value */

    u16Reg = SPIDrvRead(TX_PKT_LEN);    /* 
                                         * Read the TX packet length register 
                                         * contents 
                                         */
    u16Reg = (0xFF80 & u16Reg) | (psTxPkt->u8DataLength + 4); /* 
                                                            * Mask out old 
                                                            * length setting and
                                                            * update. Add 2 for
                                                            * CRC and 2 for code bytes
                                                            */
    SPIDrvWrite(TX_PKT_LEN, u16Reg);    /* Update the TX packet length field */
    SPIClearRecieveStatReg();           /* Clear status register 
                                         * (possible SPRF, SPTEF) 
                                         */
    SPIClearRecieveDataReg();   /* 
                                 * Clear receive data register. SPI entirely
                                 * ready for read or write
                                 */                       
    MC13192DisableInterrupts(); /* Necessary to prevent double SPI access */
    AssertCE();                 /* Enables MC13192 SPI */
    SPISendChar(TX_PKT);        /* SPI TX ram data register */
    SPIWaitTransferDone();      /* 
                                 * For this bit to be set, SPTED MUST be set. 
                                 * Now write content MSB 
                                 */
    SPIClearRecieveDataReg();   /* 
                                 * Clear receive data register. SPI entirely 
                                 * ready for read or write
                                 */
    SPISendChar(0xFF);          /* Send 1st Code Byte */
    SPIWaitTransferDone();      /* 
                                 * For this bit to be set, SPTED MUST be set. 
                                 * Now write content MSB 
                                 */
    SPIClearRecieveDataReg();                                  
    SPISendChar(0x7E);          /* Send 2nd Code Byte */
    SPIWaitTransferDone();      /* 
                                 * For this bit to be set, SPTED MUST be set. 
                                 * Now write content MSB 
                                 */
    SPIClearRecieveDataReg();   /* 
                                 * Clear receive data register. SPI entirely 
                                 * ready for read or write
                                 */

    u8TempByte = 0;             /* Byte counter for *contents */
    /* Word loop. Round up. */ 
    for (i=0; i<((psTxPkt->u8DataLength+1) >> 1); i++) { 
        SPISendChar(psTxPkt->pu8Data[u8TempByte + 1]);  /* Write MSB */
        SPIWaitTransferDone();  /* 
                                 * For this bit to be set, SPTED MUST be set. 
                                 * Now write content LSB 
                                 */
        SPIClearRecieveDataReg();/* 
                                 * Clear receive data register. SPI entirely
                                 * ready for read or write
                                 */
        SPISendChar(psTxPkt->pu8Data[u8TempByte]);      /* Write LSB */          
        u8TempByte = (UINT8)(u8TempByte + 2);           /* Increment byte counter */
        SPIWaitTransferDone();  /* For this bit to be set, SPTED MUST be set.*/
        SPIClearRecieveDataReg();/* 
                                 * Clear receive data register. SPI entirely 
                                 * ready for read or write
                                 */
    }
    DeAssertCE();                   /* Disables MC13192 SPI */
    MC13192RestoreInterrupts();     /* Restore MC13192 interrupt status */
}


/*
 * RAMDrvReadRx : Read a block of data from RX packet RAM, whichever is selected
 *
 * Parameters : *length - Returned length of the block of data in bytes
 * *contents - Pointer to the data block storage
 *
 * Return : Status
 */
UINT8 RAMDrvReadRx(tRxPacket *psRxPkt)
{
    UINT8 i, u8TempByte;        /* Temporary counters. */
    UINT8 u8TempValue;          /* 
                                 * Used by SPIClearRecieveDataReg to 
                                 * flush SPI1D register during read
                                 */
    UINT8  u8Status = 0;        /* Holder for the return value */
    UINT16 u16RxLength;
  
    u16RxLength = SPIDrvRead(RX_PKT_LEN);   /* 
                                             * Read the RX packet length 
                                             * register contents 
                                             */
    u16RxLength &= 0x007F;          /* Mask out all but the RX packet length */

    /* MC13192 reports length with 2 CRC bytes and 2 Code bytes,
     * remove them. 
     */
    if (u16RxLength >= 5) {
        psRxPkt->u8DataLength = (UINT8)(u16RxLength - 4); /*
                                                           * Less byte code
                                                           * and CRC
                                                           */
    }
    else {
        psRxPkt->u8DataLength = 0;
    }
        
    if ((psRxPkt->u8DataLength >= 1) && \
        (psRxPkt->u8DataLength <= psRxPkt->u8MaxDataLength)) { /* 
                                                          * If <5, the packet 
                                                          * is garbage
                                                          */
        SPIClearRecieveStatReg();   /* Clear status register (SPRF, SPTEF) */  
        SPIClearRecieveDataReg();   /* 
                                     * Clear receive data register. 
                                     * SPI entirely ready for read or write
                                     */                       
        MC13192DisableInterrupts(); /* Necessary to prevent double SPI access */
        AssertCE();                 /* Enables MC13192 SPI */
        SPISendChar(RX_PKT | 0x80); /* SPI RX ram data register */
        SPIWaitTransferDone();      /* For this bit to be set, SPTED 
                                     * MUST be set.
                                     */
        SPIClearRecieveDataReg();   /* 
                                     * Clear receive data register. 
                                     * SPI entirely ready for read or write 
                                     */
        SPISendChar(u8TempValue);   /* 
                                     * Dummy write. Receive register of SPI will 
                                     * contain MSB garbage for first read 
                                     */
        SPIWaitTransferDone();      /* For this bit to be set, SPTED MUST be set.*/
        SPIClearRecieveDataReg();   /* 
                                     * Clear receive data register. 
                                     * SPI entirely ready for read or write 
                                     */
        SPISendChar(u8TempValue);   /* 
                                     * Dummy write. Receive register of SPI will 
                                     * contain LSB garbage for first read 
                                     */
        SPIWaitTransferDone();      /* For this bit to be set, SPTED MUST be set.*/
        SPIClearRecieveDataReg();   /* 
                                     * Clear receive data register. 
                                     * SPI entirely ready for read or write 
                                     */
                                    /* Byte codes */
        SPISendChar(u8TempValue);   /* 
                                     * Dummy write. Receive register of SPI will 
                                     * contain LSB garbage for first read 
                                     */
        SPIWaitTransferDone();      /* For this bit to be set, SPTED MUST be set.*/
        u8TempValue = SPIRead();    /* Read first code byte */
        SPISendChar(u8TempValue);   /* 
                                     * Dummy write. Receive register of SPI will 
                                     * contain LSB garbage for first read 
                                     */
        SPIWaitTransferDone();      /* For this bit to be set, SPTED MUST be set.*/
        u8TempValue = SPIRead();    /* Read second code byte */

                                     
        u8TempByte = 0;             /* Byte counter for *contents */
        /* Word loop. Round up. Deduct CRC. */
        for (i=0; i<((u16RxLength-1)>>1); i++) { 
            SPISendChar(u8TempValue);/* 
                                     * Dummy write. Receive register of SPI 
                                     * will contain MSB
                                     */
            SPIWaitTransferDone();  /* 
                                     * For this bit to be set, SPTED MUST be 
                                     * set. Get MSB
                                     */
            /* For a trailing garbage byte, just read and discard */
            if ((u8TempByte + 3) == u16RxLength) { 
                SPIClearRecieveDataReg();                  /* Discard */
            }
            else {
                psRxPkt->pu8Data[u8TempByte + 1] = SPIRead();   /* Read MSB */
            }
            SPISendChar(u8TempValue);/*
                                     * Dummy write. Receive register of SPI 
                                     * will contain LSB
                                     */
            SPIWaitTransferDone();  /* 
                                     * For this bit to be set, SPTED MUST be
                                     * set. Get LSB
                                     */
            psRxPkt->pu8Data[u8TempByte] = SPIRead();   /* Read LSB */
            u8TempByte = (UINT8)(u8TempByte + 2);       /* Increment byte counter */
        }
        DeAssertCE();               /* Disables MC13192 SPI */
        psRxPkt->u8Status = SUCCESS;
        MC13192RestoreInterrupts(); /* Restore MC13192 interrupt status */
    }
    /* Check to see if a larger packet than desired is received. */  
    if (psRxPkt->u8DataLength > psRxPkt->u8MaxDataLength) {
        psRxPkt->u8Status = OVERFLOW;
    }
    return u8Status;  
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区国色天香| 国产精品美女久久久久久2018| 欧美高清视频www夜色资源网| 日韩欧美不卡在线观看视频| 欧美国产一区二区| 丝袜诱惑制服诱惑色一区在线观看 | 欧美日韩视频专区在线播放| 国产日韩精品一区二区浪潮av| 性做久久久久久免费观看 | 国产成人免费高清| 欧美美女一区二区三区| 亚洲视频你懂的| 国产成a人无v码亚洲福利| 欧美一区二区三区成人| 一区二区三区产品免费精品久久75| 国产乱码精品一区二区三区五月婷| 欧美午夜理伦三级在线观看| 亚洲欧洲av色图| 国产精品中文字幕一区二区三区| 91麻豆精品国产自产在线| 亚洲精品中文在线| 北岛玲一区二区三区四区| 精品国产乱码久久久久久免费| 香蕉成人伊视频在线观看| 色综合久久综合网欧美综合网 | 国产美女精品在线| 欧美一区二区视频网站| 午夜日韩在线观看| 欧美精品一二三四| 日产精品久久久久久久性色| 欧美性大战xxxxx久久久| 亚洲精品视频在线看| 99久久99久久精品免费观看 | 精品一区二区三区日韩| 中文字幕精品一区| 国产成人精品综合在线观看| 久久毛片高清国产| 国产高清亚洲一区| 国产精品丝袜黑色高跟| 成人高清视频在线观看| 中文字幕一区二区视频| 91在线国产福利| 亚洲一区中文日韩| 欧美日韩一级二级三级| 日韩成人伦理电影在线观看| 欧美一区二区三区视频| 九色porny丨国产精品| 精品精品欲导航| 国产一区三区三区| 国产精品视频你懂的| 99久久婷婷国产综合精品| 中文字幕亚洲在| 欧美在线播放高清精品| 日韩精品一二三| 日韩美女天天操| 国产成人亚洲综合a∨猫咪| 中文字幕一区视频| 欧美日韩另类国产亚洲欧美一级| 日本欧美一区二区| 国产日韩欧美精品电影三级在线| 91首页免费视频| 日本系列欧美系列| 欧美国产亚洲另类动漫| 欧美性猛片aaaaaaa做受| 蜜桃传媒麻豆第一区在线观看| 国产亚洲婷婷免费| 在线观看亚洲精品视频| 久草中文综合在线| 日韩毛片一二三区| 日韩视频在线一区二区| 成人一二三区视频| 午夜精品久久久久久久久久| 久久综合久久综合久久综合| 日韩欧美国产三级电影视频| av一区二区三区四区| 日韩—二三区免费观看av| 中文字幕av不卡| 欧美一卡在线观看| 91看片淫黄大片一级在线观看| 日韩综合小视频| 日韩毛片一二三区| 久久久久青草大香线综合精品| 91在线免费视频观看| 国产九色精品成人porny| 亚洲国产日日夜夜| 国产精品伦一区| 精品日韩一区二区三区| 欧美日韩黄色一区二区| 99久久精品一区| 国产精品一区二区x88av| 天堂蜜桃一区二区三区| 日韩伦理电影网| 欧美国产精品一区二区| 日韩视频在线观看一区二区| 一本色道久久综合亚洲精品按摩| 国产精品一二三区在线| 男人的天堂久久精品| 亚洲一区二区在线免费观看视频 | 欧美精品在线观看播放| 色香色香欲天天天影视综合网 | 日韩电影免费一区| 一区二区三区波多野结衣在线观看| 国产亚洲污的网站| 日韩美女天天操| 欧美激情一二三区| 国产欧美精品一区二区色综合| 日韩一区二区三区高清免费看看| 欧美日韩激情一区| 欧美性受xxxx黑人xyx| 99国产精品国产精品久久| 国产激情视频一区二区在线观看 | 亚洲欧洲精品一区二区三区| 欧美mv和日韩mv的网站| 日韩欧美中文字幕一区| 69堂国产成人免费视频| 欧美精品v日韩精品v韩国精品v| 在线观看国产日韩| 91福利在线看| 欧美三日本三级三级在线播放| 91日韩一区二区三区| 色综合天天综合在线视频| 91免费精品国自产拍在线不卡| 95精品视频在线| 色综合咪咪久久| 欧美日韩一区二区三区不卡| 欧美日韩你懂的| 91精品国产日韩91久久久久久| 在线成人av网站| 亚洲精品一区二区三区在线观看| 精品欧美乱码久久久久久| 久久久国产精品不卡| 中文字幕精品一区二区三区精品| 亚洲欧洲成人精品av97| 一区二区三区在线影院| 婷婷六月综合网| 久久国产福利国产秒拍| 国产激情精品久久久第一区二区| 从欧美一区二区三区| 91在线无精精品入口| 中文字幕va一区二区三区| 日韩毛片精品高清免费| 亚洲电影在线播放| 久久99国产精品尤物| 国产成人精品www牛牛影视| 色综合中文字幕| 91精品国产综合久久精品麻豆 | 欧美视频在线一区| 91精品国产综合久久精品麻豆| 精品久久久影院| 亚洲色图20p| 日韩不卡免费视频| 成人爽a毛片一区二区免费| 91福利区一区二区三区| 精品日韩99亚洲| 亚洲天堂精品视频| 蜜臀av亚洲一区中文字幕| 成人一区二区三区| 在线成人av影院| 欧美极品少妇xxxxⅹ高跟鞋 | 国产精品网站在线观看| 婷婷久久综合九色综合伊人色| 国产精品影视在线观看| 欧美写真视频网站| 精品乱人伦小说| 一区二区三区欧美日| 国产一区二区三区蝌蚪| 欧美日韩日日骚| 国产精品久久一级| 欧美aⅴ一区二区三区视频| 99久久亚洲一区二区三区青草| 欧美一区二区三区免费视频| 日韩美女视频19| 国产美女在线观看一区| 69p69国产精品| 亚洲免费观看在线视频| 国产成人午夜精品影院观看视频| 欧美美女bb生活片| 中文字幕视频一区二区三区久| 久久草av在线| 欧美一区二区视频网站| 亚洲一区二区五区| 91在线看国产| 国产日韩v精品一区二区| 美国毛片一区二区| 欧美三级三级三级| 亚洲天堂久久久久久久| 国产91丝袜在线播放九色| 精品国产乱子伦一区| 蜜臀久久99精品久久久久宅男| 欧美亚洲日本国产| 亚洲黄色免费网站| 色哟哟一区二区三区| 国产精品久久久久久久裸模| 国产九色sp调教91| 久久久国产精华| 国产69精品一区二区亚洲孕妇| 久久综合狠狠综合| 国产一区二区三区四区五区入口| 欧美一级片免费看| 欧美aaaaaa午夜精品|