Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:22:49

0001 /**
0002  * @file
0003  *
0004  * @ingroup csb337_at91rm9200
0005  *
0006  * @brief Atmel AT91RM9200_USART Register definitions
0007  */
0008 
0009 /*
0010  * Atmel AT91RM9200_USART Register definitions, used in KIT637_V6 (CSB637)
0011  *
0012  * Copyright (c) 2003 by Cogent Computer Systems
0013  * Written by Mike Kelly <mike@cogcomp.com>
0014  *
0015  * Modified by Fernando Nicodemos <fgnicodemos@terra.com.br>
0016  * from NCB - Sistemas Embarcados Ltda. (Brazil)
0017  *
0018  *  The license and distribution terms for this file may be
0019  *  found in the file LICENSE in this distribution or at
0020  *  http://www.rtems.org/license/LICENSE.
0021 */
0022 
0023 #ifndef __AT91RM9200_USART_H__
0024 #define __AT91RM9200_USART_H__
0025 
0026 #include <bits.h>
0027 
0028 /* Register Offsets */
0029 #define US_CR         0x00            /* Control Register */
0030 #define US_MR         0x04            /* Mode Register */
0031 #define US_IER        0x08            /* Interrupt Enable Register */
0032 #define US_IDR        0x0C            /* Interrupt Disable Register */
0033 #define US_IMR        0x10            /* Interrupt Mask Register */
0034 #define US_SR         0x14            /* Channel Status Register */
0035 #define US_RHR        0x18            /* Receiver Holding Register */
0036 #define US_THR        0x1C            /* Transmitter Holding Register */
0037 #define US_BRGR       0x20            /* Baud Rate Generator Register */
0038 #define US_RTOR       0x24        /* Receiver Time-out Register */
0039 #define US_TTGR       0x28            /* Transmitter Timeguard Register */
0040 #define US_C1R        0x40            /* Chip ID1 Register - FI DI Ratio Register */
0041 #define US_C2R        0x44            /* Chip ID2 Register - Number of Erros Register */
0042 #define US_FNTR       0x48            /* Force NTRST Register */
0043 #define US_IF         0x4C            /* IrDA Filter Register  */
0044 
0045 /* Bit Defines */
0046 /* Control Register, US_CR, Offset 0x00 */
0047 #define US_CR_RSTRX    BIT2            /* 1 = Reset and disable receiver */
0048 #define US_CR_RSTTX    BIT3            /* 1 = Reset and disable transmitter */
0049 #define US_CR_RXEN     BIT4            /* 1 = Receiver enable */
0050 #define US_CR_RXDIS    BIT5            /* 1 = Receiver disable */
0051 #define US_CR_TXEN     BIT6            /* 1 = Transmitter enable */
0052 #define US_CR_TXDIS    BIT7            /* 1 = Transmitter disable */
0053 #define US_CR_RSTSTA   BIT8            /* 1 = Reset PARE, FRAME and OVRE in DBGU_SR. */
0054 #define US_CR_STTBRK   BIT9        /* 1 = Start transmission of a Break */
0055 #define US_CR_STPBRK   BIT10           /* 1 = Stop transmission of a Break */
0056 #define US_CR_STTTO    BIT11           /* 1 = Start Time-out */
0057 #define US_CR_SENDA    BIT12           /* 1 = Send Address - MDROP mode only */
0058 #define US_CR_RSTIT    BIT13           /* 1 = Reset Iteration */
0059 #define US_CR_RSTNACK  BIT14           /* 1 = Reset Non Acknowledge */
0060 #define US_CR_RETTO    BIT15           /* 1 = Restart Time-out */
0061 #define US_CR_DTREN    BIT16           /* 1 = Data Terminal Ready Enable - AT91RM9200 only */
0062 #define US_CR_DTRDIS   BIT17           /* 1 = Data Terminal Ready Disable - AT91RM9200 only */
0063 #define US_CR_RTSEN    BIT18           /* 1 = Request To Send Enable */
0064 #define US_CR_RTSDIS   BIT19           /* 1 = Request To Send Disable */
0065 
0066 
0067 /* Mode Register. US_MR. Offset 0x04 */
0068 #define US_MR_USMODE        (0xF <<  0)     /* Mode of the USART */
0069 #define US_MR_USMODE_NORMAL     0
0070 #define US_MR_USMODE_RS485      1
0071 #define US_MR_USMODE_HWHS       2
0072 #define US_MR_USMODE_MODEM      3
0073 #define US_MR_USMODE_ISO7816_T0     4
0074 #define US_MR_USMODE_ISO7816_T1     6
0075 #define US_MR_USMODE_IRDA       8
0076 #define US_MR_USCLKS        (3 <<  4)       /* Clock Selection */
0077 #define US_MR_USCLKS_MCK    (0 <<  4)
0078 #define US_MR_USCLKS_MCK_DIV8   (1 <<  4)
0079 #define US_MR_USCLKS_SCK    (3 <<  4)
0080 #define US_MR_CHRL      (3 <<  6)       /* Character Length */
0081 #define US_MR_CHRL_5        (0 <<  6)
0082 #define US_MR_CHRL_6        (1 <<  6)
0083 #define US_MR_CHRL_7        (2 <<  6)
0084 #define US_MR_CHRL_8        (3 <<  6)
0085 #define US_MR_SYNC      (1 <<  8)       /* Synchronous Mode Select */
0086 #define US_MR_PAR       (7 <<  9)       /* Parity Type */
0087 #define US_MR_PAR_EVEN      (0 <<  9)       /* Even Parity */
0088 #define US_MR_PAR_ODD       (1 <<  9)       /* Odd Parity */
0089 #define US_MR_PAR_SPACE     (2 <<  9)       /* Parity forced to 0 (Space) */
0090 #define US_MR_PAR_MARK      (3 <<  9)       /* Parity forced to 1 (Mark) */
0091 #define US_MR_PAR_NONE      (4 <<  9)       /* No Parity */
0092 #define US_MR_PAR_MDROP         (6 <<  9)       /* Multi-drop mode */
0093 #define US_MR_NBSTOP        (3 << 12)       /* Number of Stop Bits */
0094 #define US_MR_NBSTOP_1      (0 << 12)
0095 #define US_MR_NBSTOP_1_5    (1 << 12)
0096 #define US_MR_NBSTOP_2      (2 << 12)
0097 #define US_MR_CHMODE        (3 << 14)       /* Channel Mode */
0098 #define US_MR_CHMODE_NORM   (0 << 14)       /* Normal Mode */
0099 #define US_MR_CHMODE_AUTO   (1 << 14)       /* Auto Echo: RXD drives TXD */
0100 #define US_MR_CHMODE_LOC    (2 << 14)       /* Local Loopback: TXD drives RXD */
0101 #define US_MR_CHMODE_REM    (3 << 14)       /* Remote Loopback: RXD pin connected to TXD pin. */
0102 #define US_MR_MSBF      (1 << 16)       /* Bit Order */
0103 #define US_MR_MODE9     (1 << 17)       /* 9-bit Character Length */
0104 #define US_MR_CLKO      (1 << 18)       /* Clock Output Select */
0105 #define US_MR_OVER      (1 << 19)       /* Oversampling Mode */
0106 #define US_MR_INACK     (1 << 20)       /* Inhibit Non Acknowledge */
0107 #define US_MR_DSNACK        (1 << 21)       /* Disable Successive NACK */
0108 #define US_MR_MAX_ITER      (7 << 24)       /* Max Iterations */
0109 #define US_MR_FILTER        (1 << 28)       /* Infrared Receive Line Filter */
0110 
0111 /* Interrupt Enable Register, US_IER, Offset 0x08 */
0112 /* Interrupt Disable Register, US_IDR, Offset 0x0C */
0113 /* Interrupt Mask Register, US_IMR, Offset 0x10 */
0114 /* Channel Status Register, US_SR, Offset 0x14 */
0115 #define US_IER_RXRDY      BIT0  /* RXRDY Interrupt */
0116 #define US_IER_TXRDY      BIT1  /* TXRDY Interrupt */
0117 #define US_IER_RXBRK      BIT2  /* End of Receive Transfer Interrupt */
0118 #define US_IER_ENDRX      BIT3  /* End of Receiver Transfer */
0119 //#define   US_IER_ENDTX      BIT4  /* End of Transmit Interrupt */
0120 #define US_IER_OVRE       BIT5  /* Overrun Interrupt */
0121 #define US_IER_FRAME      BIT6  /* Framing Error Interrupt */
0122 #define US_IER_PARE       BIT7  /* Parity Error */
0123 #define US_IER_TIMEOUT    BIT8  /* Receiver Time-out */
0124 #define US_IER_TXEMPTY    BIT9  /* Transmitter Empty */
0125 #define US_IER_ITERATION  BIT10 /* Max number of Repetitions Reached */
0126 #define US_IER_TXBUFE     BIT11 /* Transmission Buffer Empty */
0127 #define US_IER_RXBUFF     BIT12 /* Reception Buffer Full */
0128 #define US_IER_NACK       BIT13 /* Non Acknowledge */
0129 #define US_IER_RIIC       BIT16 /* Ring Indicator Input Change [AT91RM9200 only] */
0130 #define US_IER_DSRIC      BIT17 /* Data Set Ready Input Change [AT91RM9200 only] */
0131 #define US_IER_DCDIC      BIT18 /* Data Carrier Detect Input Change [AT91RM9200 only] */
0132 #define US_IER_CTSIC      BIT19 /* Clear to Send Input Change */
0133 #define US_IER_ALL        0xC0001AFB  /* all assigned bits */
0134 
0135 /* FORCE_NTRST Register, US_FNTR, Offset 0x48 */
0136 #define US_FNTR_NTRST         BIT0    /* 1 = Force NTRST low in JTAG */
0137 
0138 typedef struct {
0139     volatile uint32_t cr;
0140     volatile uint32_t mr;
0141     volatile uint32_t ier;
0142     volatile uint32_t idr;
0143     volatile uint32_t imr;
0144     volatile uint32_t sr;
0145     volatile uint32_t rhr;
0146     volatile uint32_t thr;
0147     volatile uint32_t brgr;
0148     volatile uint32_t _res0[7];
0149     volatile uint32_t cidr;
0150     volatile uint32_t exid;
0151     volatile uint32_t fnr;
0152 } at91rm9200_usart_regs_t;
0153 
0154 #endif /* __AT91RM9200_USART_H__ */