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

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

?? fw.c

?? FS7805 使用APLIF的demoFS7805 使用APLIF的demo
?? C
?? 第 1 頁 / 共 2 頁
字號:
{
    if (!(EP1FIFOCS & bmFIFO0_FULL))
    {
        FifoIn(pReadBuffer, DataLen);
    }

    if (!(EP1FIFOCS & bmFIFO0_FULL))
    {
        SendDataCmd();
    }
}


/*
*********************************************************************************************************
*                                             FIFOOUT
*
* Description: Device receive data from host using FIFO function
*
* Arguments  : pReadBuffer   buffer address
*
* Returns    : none
*********************************************************************************************************
*/
void  FifoOut (INT8U *pReadBuffer)
{
    Length.Byte[1]      = EP2CNT0L;                    // Get low byte data
    Length.Byte[0]      = EP2CNTH & 0x07;              // Get high byte data
    UsbDmaBuffer        = DMA_FIFO2_0;                 // Get FIFO address

    memcpy(pReadBuffer, (INT8U xdata *)UsbDmaBuffer, Length.Val);

                                                       // Clear FULL bit
    EP2FIFOCS           = (EP2FIFOCS | bmFIFO0_FULL_WE) & (~bmFIFO0_FULL);

    EP2CS               = EP2CS | bmEP_RXTXEN;         // Enable RXTX
}


/*
*********************************************************************************************************
*                                             FIFOIN
*
* Description: Device send data to host using FIFO function
*
* Arguments  : pReadBuffer   buffer address
*
*              DataLen       Data Length
*
* Returns    : none
*********************************************************************************************************
*/
void  FifoIn (INT8U *pReadBuffer, INT16U DataLen)
{
    union
    {
        INT8U   Val;
        struct
        {
            INT8U   Count0 : 3;
            INT8U          : 1;
            INT8U   Count1 : 3;
            INT8U          : 1;
        } Bit;
    } HighReg;

    Length.Val              = DataLen;
    HighReg.Val             = EP1CNTH;

    EP1CNT0L                = Length.Byte[1];          // Write count low byte
    HighReg.Bit.Count0      = Length.Byte[0] & 0x07;
    HighReg.Val             = HighReg.Val | bmCNT0HWEN;
    EP1CNTH                 = HighReg.Val;             // Write count high byte
    UsbDmaBuffer            = DMA_FIFO1_0;             // Get FIFO address

    memcpy((INT8U xdata *)UsbDmaBuffer, pReadBuffer, DataLen);
                                                       // Copy data
}

void WriteData_APLIF(INT8U *pReadBuffer, INT16U DataLen)
{
    if (!(EP1FIFOCS & bmFIFO0_FULL))
    {
        FifoIn(pReadBuffer, DataLen);
        EP1FIFOCS   = (EP1FIFOCS | bmFIFO0_FULL_WE) | bmFIFO0_FULL; // Set FULL bit
        SFI_SKIP        = 0x04;
        while (!AplifIdle());                          //wait for aplif idle
        APLIFTCL        = (DataLen >> 1) & 0xFF;       //set transaction count value
        APLIFTCH        = (DataLen >> 1) >> 8;
        EP1APLIFTRIG    = 0xAA;                        //start write ,use wave 2
        while (!AplifIdle());                          //wait for write done
        EP1CS      = EP1CS | bmEP_RXTXEN;              //enable usb receive next frame data
    }
}

/*
*********************************************************************************************************
*                                             SENDDATACMD
*
* Description: Complete IN operation function
*
* Arguments  : none
*
* Returns    : none
*********************************************************************************************************
*/
void  SendDataCmd (void)
{
                                                       // Set FULL bit
    EP1FIFOCS   = (EP1FIFOCS | bmFIFO0_FULL_WE) | bmFIFO0_FULL;

    EP1CS       = EP1CS | bmEP_RXTXEN;                 // Enable RXTX
}


#endif

/*
*********************************************************************************************************
*                                             USBDATAWRITE
*
* Description: device write data to host
*
* Arguments  : pReadBuffer   buffer address
*
*              DataLen       data length
*
* Returns    : none
*********************************************************************************************************
*/
void  UsbDataWrite (INT8U *pReadBuffer, INT16U DataLen)
{
    UsbBulkIn(pReadBuffer, DataLen);                   // Write data
}


/*
*********************************************************************************************************
*                                             USBDATAREAD
*
* Description: device read data from host
*
* Arguments  : pReadBuffer   buffer address
*
* Returns    : Data length
*********************************************************************************************************
*/
INT16U  UsbDataRead (INT8U *pReadBuffer)
{
    UsbBulkOut(pReadBuffer);                           // Read data
    return (Length.Val);
}

void McuInit(void)
{
    WDTRST  = 0x2D;                                    // Disable WDT
    SYS_CFG = SYS_CFG | bmPM_AVBLE;                    // Firmware process USB protocol, 30MHz
    SYS_CFG = SYS_CFG & (~bmBIT0) | bmBIT1;            // SYS_CFG use default value, 30MHz
    MEMCON  = 0x08;                                    // XDATA memory configuration
}
/*
*********************************************************************************************************
*                                             TDINIT
*
* Description: Task Dispatcher hooks function
*
* Arguments  : none
*
* Returns    : none
*********************************************************************************************************
*/
void  TdInit (void)
{
    INT16U  i;

    UsbInit();

    EA          = TRUE;                                // Enable All interrupt

    USBGCTRL    = USBGCTRL & (~bmPLUG);
    for (i = 0; i < 0xFFFF; i++);
    USBGCTRL    = USBGCTRL | bmPLUG;
    for (i = 0; i < 0xFFFF; i++);

    while (!Configuration);                            // detect USB speed
    KsocInit();
}



/*
*********************************************************************************************************
*                                             USBINIT
*
* Description: USB Initialization
*
* Arguments  : none
*
* Returns    : none
*********************************************************************************************************
*/
void  UsbInit (void)
{
    union
    {
        INT8U   Val;
        struct
        {
            INT8U   EpType : 2;
            INT8U   EpDir  : 1;
            INT8U   EpEn   : 1;
            INT8U   EpMap  : 4;
        } Bit;
    } Ep1Reg, Ep2Reg;

    Selfpwr     = TRUE;                                // Enable self powered
    Rwuen       = FALSE;                               // Disable remote wake up
    Configuration   = FALSE;
    OutData     = FALSE;
    InData      = FALSE;
    OutCnt      = 0x00;
    InCnt       = 0x00;

// initialize endpoint
#ifndef FIFO_SIZE_1024
    #ifdef  PINGPONG_FIFO
    EPFIFOCFG   = 0x55;                                // 512 Ping-Pong
    #else
    EPFIFOCFG   = 0x00;                                // 512 Single
    #endif
#else
    #ifdef  PINGPONG_FIFO
    EPFIFOCFG   = 0xFF;                                // 1024 Ping-Pong
    #else
    EPFIFOCFG   = 0xAA;                                // 1024 Single
    #endif
#endif
#ifdef ISOCHRONOUS
    Ep1Reg.Bit.EpType   = bmEP_TYPE_ISO;               // EP1 Isochronous In Enable
    Ep1Reg.Bit.EpDir    = TRUE;
    Ep1Reg.Bit.EpEn     = TRUE;
    Ep1Reg.Bit.EpMap    = bmEP1MAP;
    Ep2Reg.Bit.EpType   = bmEP_TYPE_ISO;               // EP2 Isochronous Out Enable
    Ep2Reg.Bit.EpDir    = FALSE;
    Ep2Reg.Bit.EpEn     = TRUE;
    Ep2Reg.Bit.EpMap    = bmEP2MAP;
#endif
#ifdef BULK
    Ep1Reg.Bit.EpType   = bmEP_TYPE_BULK;              // EP1 Bulk In Enable
    Ep1Reg.Bit.EpDir    = TRUE;
    Ep1Reg.Bit.EpEn     = TRUE;
    Ep1Reg.Bit.EpMap    = bmEP1MAP;
    Ep2Reg.Bit.EpType   = bmEP_TYPE_BULK;              // EP2 Bulk Out Enable
    Ep2Reg.Bit.EpDir    = FALSE;
    Ep2Reg.Bit.EpEn     = TRUE;
    Ep2Reg.Bit.EpMap    = bmEP2MAP;
#endif
#ifdef INTERRUPT
    Ep1Reg.Bit.EpType   = bmEP_TYPE_INT;               // EP1 Interrupt In Enable
    Ep1Reg.Bit.EpDir    = TRUE;
    Ep1Reg.Bit.EpEn     = TRUE;
    Ep1Reg.Bit.EpMap    = bmEP1MAP;
    Ep2Reg.Bit.EpType   = bmEP_TYPE_INT;               // EP2 Interrupt Out Enable
    Ep2Reg.Bit.EpDir    = FALSE;
    Ep2Reg.Bit.EpEn     = TRUE;
    Ep2Reg.Bit.EpMap    = bmEP2MAP;
#endif
    EP1CTRL     = Ep1Reg.Val;
    EP2CTRL     = Ep2Reg.Val;
    EP1CS       = EP1CS & (~bmEP_SESTALL);             // Disable EP1 STALL
    EP2CS       = EP2CS & (~bmEP_SESTALL);             // Disable EP2 STALL
    EP2CS       = EP2CS | bmEP_RXTXEN;                 // Enable EP2 RXTX

#ifdef  FIFO_SIZE_1024
    #ifdef  PINGPONG_FIFO
    EPBCS       = EPBCS & (~bmEP_EN);
    EPDCS       = EPDCS & (~bmEP_EN);
    #endif
#endif
// End initialize endpoint

    EP0RXCS     = EP0RXCS | bmRX0_EN;                  // Enable EP0 RX

    EPIE        = EPIE | bmRX0IE;                      // Enable EP0 RX Event interrupt
    EPIE        = EPIE | bmEP1INT | bmEP2INT;          // Enable EP1 EP2 interrupt
    STIE       |= bmIDLE3MIE | bmRESUMEIE | bmUSBRSTIE;// Enable USB reset, suspend, resume interrupt

    IE5         = TRUE;                                // Enable USB interrupt
}


/*
*********************************************************************************************************
*                                             SFIINIT
*
* Description: SlaveFIFO initialization function
*
* Arguments  : none
*
* Returns    : none
*********************************************************************************************************
*/
void  KsocInit (void)
{
    // initialize sfi register
    SYSIO_CFG       = 0x92;                            // pins for PLIF mode

    SFI_EPCFG       = 0x01;                            // Manual, 16-bit, Parallel mode, not swap
    SFI_EPINTE      = 0x05;                            // enable sfi interrupt
    // End initialize sfi register

    // initialize plif register
    APLIFDM_CTL     = 0x08;                            // Half-Duplex mode, State Output
    APLIFIOCFG      = 0x00;                            // TRICTL = 0, CTL[5:0] is CMOS, Tri-state Data Bus when IDLE
    APLIFIDLECTL    = 0xff;                            // APLIF_CTL Output State in the Idle State
    APLIFREADYCFG   = 0x50;                            // use tc as the end
    APLIFWAVESEL    = 0x1B;                            // APLIF Waveform Selector
    memcpy(WAVEDATA0, WaveData, 128);                  // Copy wave data

    P3CFG           = 0xFE;                            // Enable APLIFADR[7:0]/[15:8]
    P3OE            = 0xFE;                            // Address Output
    P0CFG           = 0xFF;                            // Enable APLIFADR[15:8]/[7:0]
    P0OE            = 0xFF;                            // Address Output
    // End initialize plif register

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区的国产在线播放| 精品粉嫩超白一线天av| 中文字幕一区二区三区视频| 精品影院一区二区久久久| 91啦中文在线观看| 中文字幕一区二区三区在线不卡 | 亚洲欧洲精品一区二区精品久久久 | 国产精品色婷婷久久58| 国产精品一区二区三区99| 欧美精品一区二区精品网| 久久福利资源站| 精品成人在线观看| 国产成人精品亚洲777人妖| 久久久不卡影院| 99精品在线免费| 亚洲一区电影777| 欧美日韩一区二区在线视频| 婷婷丁香激情综合| 欧美色图激情小说| 日本午夜精品视频在线观看 | 日韩—二三区免费观看av| 在线免费不卡视频| 亚洲一区二区三区四区在线| 欧美午夜电影一区| 久久电影网电视剧免费观看| 国产农村妇女毛片精品久久麻豆 | 欧美精品一区二区三区很污很色的 | 亚洲私人黄色宅男| 99国产精品99久久久久久| 亚洲国产一区二区在线播放| 555www色欧美视频| 国产成人久久精品77777最新版本| 中文字幕不卡的av| 色婷婷亚洲精品| 亚洲精品福利视频网站| 欧美成人a视频| 在线精品视频一区二区| 国产高清视频一区| 秋霞影院一区二区| 亚洲精品日韩综合观看成人91| 欧美一卡二卡在线观看| 色综合中文字幕| 成人一级视频在线观看| 亚洲成人福利片| 国产精品高清亚洲| 久久免费精品国产久精品久久久久| 91色porny在线视频| 国产精品一区二区无线| 日本不卡视频在线| 亚洲一区在线观看免费观看电影高清 | 日本女优在线视频一区二区| 亚洲天堂av一区| 中文字幕的久久| 久久理论电影网| 日韩欧美成人一区| 制服丝袜在线91| 欧美综合一区二区| 91丨九色丨尤物| 国产精品2024| 韩国视频一区二区| 久久99精品视频| 蜜桃传媒麻豆第一区在线观看| 亚洲一区国产视频| 亚洲精品国产一区二区精华液 | 91精品久久久久久久91蜜桃| 欧美伊人久久大香线蕉综合69 | 国产成人亚洲综合a∨猫咪| 美脚の诱脚舐め脚责91 | 在线看日韩精品电影| 色综合久久精品| 97精品国产露脸对白| 99精品久久免费看蜜臀剧情介绍| 国产成人精品免费一区二区| 国产九九视频一区二区三区| 国产福利一区二区三区视频在线| 国产一区在线视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产精品69久久久久水密桃 | 色婷婷精品久久二区二区蜜臀av | 色94色欧美sute亚洲线路二| 99在线精品一区二区三区| 成人黄色网址在线观看| 99这里只有精品| 欧美中文字幕不卡| 欧美一区二区三区日韩视频| 日韩精品一区国产麻豆| 久久久久久久久久电影| 国产精品萝li| 亚洲国产你懂的| 免费欧美高清视频| 国产精品自拍在线| 91视频你懂的| 欧美精品电影在线播放| 欧美精品一区二| 亚洲欧美成aⅴ人在线观看| 亚洲午夜影视影院在线观看| 蜜臀久久99精品久久久画质超高清| 国产在线看一区| 国产91丝袜在线观看| 色综合av在线| 欧美一区二区三区色| 国产亚洲成年网址在线观看| 日韩毛片一二三区| 日日夜夜免费精品| 国产成人精品影院| 在线精品亚洲一区二区不卡| 欧美va在线播放| 最新久久zyz资源站| 亚洲成人免费看| 国产在线国偷精品免费看| av午夜精品一区二区三区| 欧美三级日韩在线| 欧美精品一区二区精品网| 一区在线观看视频| 日日嗨av一区二区三区四区| 国产99久久久国产精品潘金| 欧美日韩日日夜夜| 国产片一区二区三区| 亚洲电影第三页| 国产二区国产一区在线观看| 欧美日韩亚洲综合一区二区三区| 久久免费午夜影院| 视频在线观看91| 99精品在线观看视频| 欧美成人video| 亚洲福利视频三区| 成人高清伦理免费影院在线观看| 欧美日韩精品系列| 国产精品久久网站| 久久超碰97中文字幕| 欧美三级中文字| 亚洲男人的天堂在线观看| 麻豆精品新av中文字幕| 欧美系列亚洲系列| 国产精品国产三级国产a | 亚洲精品中文字幕在线观看| 久久99九九99精品| 欧美一区国产二区| 亚洲精品国产精华液| 成人国产免费视频| 欧美精品一区二区久久久| 日韩不卡一区二区| 欧美日本一区二区三区四区 | 日韩视频123| 婷婷六月综合网| 一本久道中文字幕精品亚洲嫩| 日本一区二区三区国色天香 | 97成人超碰视| 中日韩av电影| 国产成人精品免费视频网站| 欧美电视剧在线看免费| 欧美a级一区二区| 8v天堂国产在线一区二区| 午夜精品一区二区三区免费视频| 91亚洲精品一区二区乱码| 中文字幕免费不卡在线| 国产福利一区二区三区视频在线| 亚洲精品在线观看网站| 久久99精品久久久| 欧美本精品男人aⅴ天堂| 麻豆视频观看网址久久| 精品sm捆绑视频| 看电影不卡的网站| 日韩精品专区在线| 精品午夜一区二区三区在线观看| 日韩欧美国产综合一区 | 一区二区三区91| 色婷婷久久久综合中文字幕| 亚洲精品中文在线影院| 日本道在线观看一区二区| 亚洲欧洲综合另类在线 | 91精品国产综合久久久久久漫画 | 国产精品一区在线观看你懂的| 精品国偷自产国产一区| 国产自产高清不卡| 国产午夜久久久久| av高清不卡在线| 亚洲综合图片区| 欧美男男青年gay1069videost| 香蕉加勒比综合久久| 91精品国产乱码久久蜜臀| 久久精品国产秦先生| 久久久久久久网| av男人天堂一区| 亚洲成人激情自拍| 精品欧美一区二区三区精品久久 | 久久狠狠亚洲综合| 久久免费看少妇高潮| 99精品欧美一区二区三区综合在线| 亚洲蜜臀av乱码久久精品蜜桃| 欧美三级欧美一级| 国产一区二区三区四| 亚洲乱码国产乱码精品精可以看 | 国产最新精品免费| 亚洲男人都懂的| 日韩欧美不卡在线观看视频| 成人av免费在线播放| 亚洲成人在线观看视频| 精品国产乱码久久久久久浪潮| jvid福利写真一区二区三区|