⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpc2204sio.h

📁 菲利普22系列 vxworks bsp 可以用来可以和其他版本的ARM vxworks bsp(特别是7内核的进行比较)进行比较可以加深对BSP的理解和掌握
💻 H
字号:
/* Copyright 1984-2001 Wind River Systems, Inc. */
#include "copyright_wrs.h"
#include "mytypes.h"
/*
modification history
--------------------
01o,27jul04,a_m  BSP定制 for 精英arm7开发板
01c,16jul02,m_h  C++ protection
01b,26apr01,m_h  convert tabs to spaces for readability
01a,12apr01,m_h  created from snds100 template.
*/

#ifndef __INCsngks32cSioh
#define __INCsngks32cSioh

#ifdef __cplusplus
extern "C" {
#endif

#include "sioLib.h"
#include "lpc2210.h"


/* Register offsets from Base Address*/

#define SNGKS32C_ULCON         0x0000        /*UART Line Control Registers*/
#define SNGKS32C_UCON          0x0004        /*UART Control Register */

/*  : added */
#define S3C44B0X_UFCON		   0x0008		 /*UART channel FIFO control register*/
#define S3C44B0X_UMCON		   0x000C		 /*UART channel Modem control register*/

/*  : 0x0008->0x0010 */
#define SNGKS32C_USTAT         0x0010        /*UART Status Register */

/*  : added */
#define S3C44B0X_UERSTAT       0x0014        /*UART Rx error Status Register */
#define S3C44B0X_UFSTAT        0x0018        /*UART FIFO Status Register */
#define S3C44B0X_UMSTAT        0x001C        /*UART Modem Status Register */

/*  : 0x000c->0x0020 */
#define SNGKS32C_UTXBUF        0x0020        /*UART Transmit Buffer Register*/
/*  : 0x0010->0x0024 */
#define SNGKS32C_URXBUF        0x0024        /*UART Receive Buffer Register*/
/*  : 0x0014->0x0028 */
#define SNGKS32C_UBRDIV        0x0028        /*UART Baud Rate Divisor Register*/
/*  : deleted */
/*#define SNGKS32C_BRDCNT        0x0018*/     /*UART Baud Rate Count Register */
/*#define SNGKS32C_BRDCLK        0x001c*/     /*UART Baud Rate Clock Monitor*/



/* Bit definitions within ULCON0/1 Line Control Register*/

#define PARITY_NONE     0x00            /* Set No Parity*/
#define PARITY_ODD      0x01            /* Set Odd Parity*/
#define PARITY_EVEN     0x03            /* Set Even Parity*/
#define ONE_STOP        0x00            /* One Stop Bit*/
#define WORD_LEN        0x03            /* Set Word Length 8*/
/*  : deleted */
/*#define INT_CLK         0x00*/         /* Internal Clock Mode */
/*#define    EXT_CLK      0x40*/         /* External Clock Mode */


/* Bit definitions within UCON0/1 Control Register*/

#define UCON_RX          0x01            /* Receive Mode -Interrupt*/
/*  : deleted */
/*#define UCON_STAT_EN     0x04*/            /* Status Interrrupt -Enable*/
/*  : 0x08->0x04 */
#define UCON_TX          0x04            /* Transmit Mode-Interrupt*/
/*  : 0x01->0x00 */
#define UCON_TX_DIS      0x00            /* Transmit Interrupt -Disable*/
/*  : deleted */
/*#define UCON_DSR         0x20*/            /* Data Set Ready -Enable*/
/*  : 0x40->0x10 */
#define UCON_BREAK       0x10            /* Set Break*/
/*  : 0xe4->0xff0 */
#define UCON_RX_TX_RESET 0xff0            /* Rx and Tx Reset */

/*  : added */
#define UCON_TX_LEVEL	 0x200	
#define UCON_RX_PULSE	 0x000	

/* Bit definitions within USTAT0/1 Status Register*/
/*  : deleted */
/*#define USTAT_DTR_LOW   0x10*/            /* DTR Enable */
/*#define USTAT_DTR_HIGH  0x00*/            /* DTR Disable*/
/*  : 0x40->0x02 */
#define USTAT_TX_READY  0x02            /* Transmitter Ready for another char */
/*  : 0x20->0x01 */
#define USTAT_RX_AVAIL  0x01            /* Character has arrived*/ 
/*  : deleted */
/*#define USTAT_OVER_ERR  0x01*/            /* Over Run Error*/
/*#define USTAT_PAR_ERR   0x02*/            /* Parity Error*/
/*#define USTAT_FRAME_ERR 0x04*/            /* Frame Error*/ 
/*  : 0x20->0x01 */
#define USTAT_RX_READY  0x01            /* Receive Data Buffer*/

/*  : added */
#define UFSTAT_TX_FULL  0x200            
#define UFSTAT_RX_COUNT  0x00F            




/*UBRDIVn = ((int)(fMCLK/16./baud + 0.5) -1)  波特率与系统主时钟计算公式*/
#define SNGKS32C_CNT0_1200      ((int)(fMCLK_MHz/16.0/1200+0.5)-1) /* Baud_Rate 1200*/
#define SNGKS32C_CNT0_2400      ((int)(fMCLK_MHz/16.0/2400+0.5)-1)    /* Baud_Rate 2400*/
#define SNGKS32C_CNT0_4800      ((int)(fMCLK_MHz/16.0/4800+0.5)-1)    /* Baud_Rate 4800*/
#define SNGKS32C_CNT0_9600      ((int)(fMCLK_MHz/16.0/9600+0.5)-1)    /* Baud_Rate 9600*/
#define SNGKS32C_CNT0_19200     ((int)(fMCLK_MHz/16.0/19200+0.5)-1)    /* Baud_Rate 19200*/
#define SNGKS32C_CNT0_38400     ((int)(fMCLK_MHz/16.0/38400+0.5)-1)    /* Baud_Rate 38400*/
#define SNGKS32C_CNT0_57600     ((int)(fMCLK_MHz/16.0/57600+0.5)-1)    /* Baud_Rate 57600*/
#define SNGKS32C_CNT0_115200    ((int)(fMCLK_MHz/16.0/115200+0.5)-1)    /* Baud_Rate 115200*/
 
#define SNGKS32C_CNT1_VAL         0x00    /* Baud Rate Divisor Value*/


/* device and channel structures */

typedef struct
{
    /* must be first */
    SIO_CHAN        sio;        /* standard SIO_CHAN element */

    /* callbacks */
    STATUS            (*getTxChar) ();
    STATUS            (*putRcvChar) ();
    void *            getTxArg;
    void *            putRcvArg;

    /* register addresses */
    UINT32 *          regs;        /*UART Registers*/

    /*  interrupts */
    UINT32             intLevel;     /* recv interrupt Level for this device*/

    /* misc */
    UINT32            regDelta;       /* register address spacing */
    uint_t            options;        /* Hardware options */
    int               mode;           /* current mode (interrupt or poll) */
    DWORD               baudRate;       /* input clock frequency */
} LPC2210_CHAN;

/* function prototypes */

#if defined(__STDC__)

extern void    lpc2210DevInit  (LPC2210_CHAN *pChan); 
extern void    lpc2210DevInit2 (LPC2210_CHAN *pChan); 
extern void    lpc2210IntRcv   (LPC2210_CHAN *pChan);
extern void    lpc2210IntTx    (LPC2210_CHAN *pChan);

#else   /* __STDC__ */

extern void    lpc2210DevInit  ();
extern void    lpc2210DevInit2 ();
extern void    lpc2210IntRcv   ();
extern void    lpc2210IntTx    ();


#endif  /* __STDC__ */

#ifdef __cplusplus
}
#endif

#endif  /* __INCsngks32cSioh */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -