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

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

?? xsffuart.c

?? ylpxa270 GPRS 通信代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************
**
**  COPYRIGHT (C) 2000 Intel Corporation
**
**  FILENAME:      xsffuart.c
**
**  PURPOSE:       
**
** $ LAST MODIFIED: 12/26/2000 $
******************************************************************************/

/*
*******************************************************************************
*   HEADER FILES
*******************************************************************************
*/                                                                      

#include "systypes.h"
//#include "DM_Debug.h"
#include "XsClkMgr.h"
#include "XsDmaApi.h"
#include "xsuart.h"
#define FFUART_GLOBALS  1
#include "xsffuart.h"
#include "utils.h"

//#include "timedelays.h"
/*
*******************************************************************************
*   GLOBAL DEFINITIONS
*******************************************************************************
*/

/*
*******************************************************************************
*   LOCAL DEFINITIONS
*******************************************************************************
*/

static UartCfgT defaultFFUartCfg = 
{
	FCR_TRFIFOE,				 // Enable FIFOs
	IER_UUE,    				 // Disable DMA, no NRZ, disable IRQ, and enable UART unit
	LCR_WLS8,                    // One stop bit, no parity, 8 bits
	0,			                 // No IRDA
	UartLoopbackOff,			 // Disable loopback		
	115200,					     // baud rate 115200 
};

// DMA configuration structure to setup the transmit channel
static UartDmaCfgT defaultDmaTxCfg = 
{
	NUM_BUF_DEFAULT,
	BUFF_SIZE_DEFAULT,
	XFER_LEN_DEFAULT,	
	XSDMA_DN_MEMORY,	
	XSDMA_DN_FFUART,
	XSDMA_CH_PR_LOW	
};

// DMA configuration structure to setup the receive channel
static UartDmaCfgT defaultDmaRxCfg = 
{
	NUM_BUF_DEFAULT,		
	BUFF_SIZE_DEFAULT,
	XFER_LEN_DEFAULT,	
	XSDMA_DN_FFUART,	
	XSDMA_DN_MEMORY,
	XSDMA_CH_PR_LOW	
};

static UartDmaStatusT defaultDmaTxStatus = {0,0,0,0};
static UartDmaStatusT defaultDmaRxStatus = {0,0,0,0};

/*
******************************************************************************************
*
* FUNCTION:             XsFFUartHWSetup         
*
* DESCRIPTION:          This function is used for hardware initialization of UART.
*                       It uses the uart configuration structure for coniguring UART's
*                       modes of operation.
*
* INPUT PARAMETERS:     ctxP  is a pointer to UART's context structure
*
* RETURNS:              UINT32
*
* GLOBAL EFFECTS:       none.
*
* ASSUMPTIONS:          GPIO registers need to be programmed before this function
*                       can be called.
*                       On the Sandgate board:
*                             Board Control Register bit BCR[9] = 1 (RS232 power on)
*                             was set on early board initialization as a default. 
*                       
*******************************************************************************************
*/

UINT32 XsFFUartHWSetup(UartContextT * ctxP)
{   
    volatile UartRegsT * uartP = (UartRegsT *)ctxP->regsP;
    UartCfgT * cfgP = (UartCfgT *)ctxP->uartCfgP;
    UINT divisor;
    UINT value;
    UINT rate;
    
	// Select the peripheral clock bit for the UART
	xsCMEnableClock (CK_FFUART);

    // Clear all the registers
	uartP->IER = 0;	
	uartP->FCR = 0;	
	uartP->LCR = 0;	
	uartP->MCR = 0;	
	uartP->ISR = 0;
	
    // Clear the Rx FIFO 
    uartP->FCR = ctxP->uartCfgP->maskFIFO | FCR_RESETRF;

    // Clear the Tx FIFO 
    uartP->FCR = ctxP->uartCfgP->maskFIFO | FCR_RESETTF;

    // Set Serial Line Control Register (LCR) 
    // DLAB = 1
    uartP->LCR = (LCR_DLAB1 | cfgP->maskSerial);

    // Configure the baud rate generator
    // Base rate is 14.7456 MHz
    // Baud Rate = base rate/(16*divisor)
    // 230.4 kbps = divisor = 4 (min.)
    // 115.2 kbps = divisor = 8
    // 9.6   kpbs = divisor = 96
    
    // Check the default rate
    if (cfgP->rate == 0)
        rate = 115200;
    else
        rate = cfgP->rate;

    // To Configure the baud rate generators for UART:
    // DLAB = 1 to access DLL and DLH
    // Load DLL and DLH with divisor (divisor = 8 for 115200)
    // DLAB = 0
    divisor = 14745600 / (16 * rate);
    //divisor = 15;//13714286 / (16 * rate);	//hzh, 12M OSC,57600
    if (divisor < FFDIVISOR_MIN )
        divisor = FFDIVISOR_MIN;

    uartP->UDATA = divisor & 0xff;
	uartP->IER = (divisor & 0xff00) >> 8; 
    uartP->LCR &= ~LCR_DLAB1;

    // Set loopback
    // LOOP = 1 Test mode
    if (cfgP->loopback != 0)
        uartP->MCR |= MCR_LOOP;
    else
    {    
        uartP->MCR &= ~MCR_LOOP;
        // Read MSR once to clear delta bits (bits 3:0)
        value = uartP->MSR;
        // Enable RTS signal
        uartP->MCR |= MCR_RTS;
    }

    // Enable FIFOs, reset FIFOs and set interrupt triger level
    if ((cfgP->maskFIFO & FCR_TRFIFOE) != 0)
    {        
        // Enable FIFOs	and reset FIFOs and set interrupt trigger level
        uartP->FCR = cfgP->maskFIFO | FCR_TRFIFOE| FCR_RESETRF| FCR_RESETTF;
    }
    else
    {
        // non-FIFO mode
        uartP->FCR = FCR_TRFIFOD;
    }

    // Configure UART to operate via programmed I/O or DMA
    if ((cfgP->maskInt & IER_DMAE) == 0)
    { 
        // Disable DMA, configure NRZ, IRQ, and enable UART unit
        // Just make sure that DMA is disabled and UART is enabled
        uartP->IER = (cfgP->maskInt & ~IER_DMAE) | IER_UUE;
    }

    else if ((cfgP->maskFIFO & FCR_TRFIFOE) && (cfgP->maskInt & IER_DMAE))
    {    
        // Enable DMA and enable UART unit
        uartP->IER = (cfgP->maskInt | IER_UUE);
    }

    return 0;
}


/*
*******************************************************************************
*
* FUNCTION:         loopbackFFUart
*
* DESCRIPTION:      This function is used to test UART in polled mode operation.
*
* INPUT PARAMETERS: ctxP    is a pointer to UART context structure. 
*                   data    is a single character sent via loopback path.
* RETURNS:          INT   the byte of data.
*                   -1      if timeout expired and no character has been received.
*
* GLOBAL EFFECTS:   none.
*
* ASSUMPTIONS:      UART has been setup to operate in FIFO or non-FIFO polled mode
*                   and loopback test mode is enabled
*
*******************************************************************************
*/

static
INT loopbackFFUart(UartContextT * ctxP, INT data)
{
    volatile UartRegsT * uartP = (UartRegsT *)ctxP->regsP;
    INT retry = RETRY;

    while((uartP->LSR & LSR_TEMT) == 0);
	DM_WaitMs(10);

    // Write data
    uartP->UDATA = data;   
	DM_WaitMs(10);

    // Wait for the loopback data to arrive
    while (((uartP->LSR & LSR_DR) == 0) && (--retry > 0))
       DM_WaitMs(1);
            
    if (retry > 0)
        return uartP->UDATA;

    return (-1);
}

/*
*******************************************************************************
*
* FUNCTION:         writeFFUart                      
*
* DESCRIPTION:      This function is used to transmit data via UART in polled mode
*                   operation
*
* INPUT PARAMETERS: ctxP    is a pointer to UART context structure 
*                   txbufP  is a pointer to the buffer where the data is going 
*                           to be taken from
*                   len     is number of bytes to be sent
*
* RETURNS:          none.
*
* GLOBAL EFFECTS:   none.
*
* ASSUMPTIONS:      none.
*
*******************************************************************************
*/

static
void writeFFUart(UartContextT * ctxP, CHAR * txbufP, INT len)
{
    volatile UartRegsT * uartP = (UartRegsT *)ctxP->regsP;
    INT i;
  
    for (i=0; i < len; i++)
    {
        // Write data
        uartP->UDATA = *txbufP++;   

        // Wait for UART to complete transmition
        while((uartP->LSR & LSR_TEMT) == 0)
            {;}
    }
}

/*
*******************************************************************************
*
* FUNCTION:         readFFUart        
*
* DESCRIPTION:      This function is used to receive data via UART in polled mode 
*                   operation
*
* INPUT PARAMETERS: ctxP    is a pointer to UART context structure 
*                   rxbufP  is a pointer to the buffer where received data is
*                           going to be placed
*                   len     is a specified number of bytes to read.
*
* RETURNS:          INT an actual number of bytes have been read        
*                   
* GLOBAL EFFECTS:   none.
*                  
* ASSUMPTIONS:      none.
*                  
*******************************************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩精品在线| 丝袜国产日韩另类美女| 一个色综合av| 国产suv一区二区三区88区| 欧美午夜视频网站| 中文字幕成人在线观看| 日本色综合中文字幕| 972aa.com艺术欧美| 精品成人a区在线观看| 亚洲444eee在线观看| 一本一本大道香蕉久在线精品 | 91免费视频网| 久久九九久久九九| 日韩和欧美的一区| 欧美三区在线观看| 亚洲综合色在线| 97精品视频在线观看自产线路二| 国产色产综合产在线视频| 麻豆成人久久精品二区三区红| 91成人免费在线| 亚洲精品自拍动漫在线| 成人精品视频网站| 国产日本欧美一区二区| 国产一区二区按摩在线观看| 欧美大度的电影原声| 日本中文字幕一区二区视频| 7878成人国产在线观看| 亚洲成人免费视| 在线中文字幕一区二区| 玉足女爽爽91| 欧美日韩国产一区| 午夜精品aaa| 91精品婷婷国产综合久久竹菊| 亚洲国产日产av| 欧美日韩一区二区三区四区 | 色综合久久88色综合天天免费| 国产精品理伦片| av资源网一区| 亚洲乱码国产乱码精品精98午夜| 91日韩在线专区| 洋洋成人永久网站入口| 欧美午夜在线一二页| 同产精品九九九| 日韩欧美一级二级三级| 久久99精品一区二区三区| 日韩免费在线观看| 国产一区二区影院| 国产精品情趣视频| 成人av影视在线观看| 亚洲欧美国产77777| 在线观看亚洲成人| 日韩精品电影在线| 26uuuu精品一区二区| 国产伦精一区二区三区| 国产精品色哟哟| 在线中文字幕不卡| 蜜桃一区二区三区四区| 国产精品色哟哟网站| 在线亚洲+欧美+日本专区| 亚洲不卡av一区二区三区| 日韩免费高清av| 99免费精品视频| 日韩国产欧美在线播放| 国产欧美精品区一区二区三区| 色婷婷久久久久swag精品| 蜜桃av噜噜一区二区三区小说| 亚洲国产高清在线观看视频| 色狠狠一区二区三区香蕉| 久久99精品久久久| 亚洲精品国产精品乱码不99| 日韩欧美的一区| av在线不卡网| 久久不见久久见免费视频7| 亚洲女女做受ⅹxx高潮| 日韩欧美你懂的| eeuss国产一区二区三区| 免费观看91视频大全| 综合久久给合久久狠狠狠97色| 欧美精品精品一区| 不卡的av电影| 国产精一品亚洲二区在线视频| 一区二区三区中文在线| 久久久久国产精品麻豆ai换脸 | 偷窥国产亚洲免费视频 | 国产日韩欧美在线一区| 在线观看精品一区| 成人av第一页| 国产乱对白刺激视频不卡| 午夜精品久久久久久久蜜桃app| 国产精品久久久久aaaa| 日韩女同互慰一区二区| 欧美日韩高清一区| 在线观看日韩精品| 91色在线porny| 成人精品国产福利| 国产剧情一区二区三区| 青青草原综合久久大伊人精品优势 | 麻豆视频一区二区| 亚洲成a人v欧美综合天堂| 亚洲欧洲三级电影| 国产精品视频一二三区| 久久综合色8888| 欧美r级电影在线观看| 91精品蜜臀在线一区尤物| 欧美性videosxxxxx| 91丨九色丨国产丨porny| 国产成人精品午夜视频免费| 另类小说一区二区三区| 捆绑紧缚一区二区三区视频| 亚洲成人av免费| 亚洲成人自拍偷拍| 午夜激情一区二区| 亚洲在线免费播放| 亚洲午夜在线电影| 午夜欧美电影在线观看| 亚洲国产精品麻豆| 亚洲成人av在线电影| 石原莉奈一区二区三区在线观看| 亚洲地区一二三色| 日韩精品一级中文字幕精品视频免费观看 | 日韩电影免费在线看| 午夜精品一区二区三区电影天堂| 日韩欧美国产三级电影视频| 欧美偷拍一区二区| 91麻豆高清视频| kk眼镜猥琐国模调教系列一区二区| 激情小说亚洲一区| 国产成人av一区二区三区在线| 国产精品亚洲专一区二区三区| 国产成人8x视频一区二区| 成人一区二区三区| 色诱视频网站一区| 欧美高清视频一二三区| 精品区一区二区| 国产精品久久久久久久久久免费看| 欧美激情一区二区三区不卡 | 88在线观看91蜜桃国自产| 欧美一区二区女人| 久久精品男人天堂av| 亚洲精品国产a| 久久成人久久鬼色| 99精品久久久久久| 欧美高清视频在线高清观看mv色露露十八 | 自拍偷拍欧美精品| 欧美国产日韩a欧美在线观看| 国产精品国产自产拍在线| 一区二区高清在线| 青青草精品视频| 粉嫩aⅴ一区二区三区四区五区| 99麻豆久久久国产精品免费| 欧亚洲嫩模精品一区三区| 欧美一区二区性放荡片| 中文字幕高清不卡| 首页国产欧美久久| 成人手机在线视频| 欧美精品精品一区| 中文字幕在线不卡一区二区三区| 午夜在线成人av| 成人av网站在线观看| 日韩欧美国产1| 亚洲精品欧美综合四区| 老汉av免费一区二区三区| 色天天综合久久久久综合片| 91精品国产入口| 亚洲欧美偷拍三级| 国产精品18久久久久久久久| 欧美高清www午色夜在线视频| 亚洲国产精品v| 久久丁香综合五月国产三级网站| 日本韩国欧美在线| 久久丝袜美腿综合| 天堂蜜桃91精品| 国产91在线观看| 欧美一区二区福利在线| 国产精品剧情在线亚洲| 国产中文字幕精品| 欧美人妇做爰xxxⅹ性高电影| 中文字幕在线免费不卡| 韩国欧美一区二区| 欧美一区二区成人6969| 一区二区三区在线播| 99久久99精品久久久久久 | 日韩精品一区二区三区视频播放| 一区二区在线免费观看| 成人午夜又粗又硬又大| 精品少妇一区二区| 免费欧美高清视频| 欧美精品三级在线观看| 亚洲地区一二三色| 欧美亚洲一区二区三区四区| 国产精品久久久久久久久快鸭| 国产精品18久久久久久vr | 欧美日韩精品一区二区天天拍小说| 国产日韩欧美在线一区| 欧美私人免费视频| 亚洲女性喷水在线观看一区| 国内一区二区视频| 亚洲精品在线网站| 九九精品视频在线看| 日韩视频在线永久播放|