Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
usart.h
00001 /* ---------------------------------------------------------------------------- */ 00002 /* Atmel Microcontroller Software Support */ 00003 /* SAM Software Package License */ 00004 /* ---------------------------------------------------------------------------- */ 00005 /* Copyright (c) %copyright_year%, Atmel Corporation */ 00006 /* */ 00007 /* All rights reserved. */ 00008 /* */ 00009 /* Redistribution and use in source and binary forms, with or without */ 00010 /* modification, are permitted provided that the following condition is met: */ 00011 /* */ 00012 /* - Redistributions of source code must retain the above copyright notice, */ 00013 /* this list of conditions and the disclaimer below. */ 00014 /* */ 00015 /* Atmel's name may not be used to endorse or promote products derived from */ 00016 /* this software without specific prior written permission. */ 00017 /* */ 00018 /* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */ 00019 /* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ 00020 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */ 00021 /* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */ 00022 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ 00023 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ 00024 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */ 00025 /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ 00026 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ 00027 /* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 00028 /* ---------------------------------------------------------------------------- */ 00029 00030 #ifndef _SAM3U_USART_COMPONENT_ 00031 #define _SAM3U_USART_COMPONENT_ 00032 00033 /* ============================================================================= */ 00034 /** SOFTWARE API DEFINITION FOR Universal Synchronous Asynchronous Receiver Transmitter */ 00035 /* ============================================================================= */ 00036 /** \addtogroup SAM3U_USART Universal Synchronous Asynchronous Receiver Transmitter */ 00037 /*@{*/ 00038 00039 #if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) 00040 /** \brief Usart hardware registers */ 00041 typedef struct { 00042 WoReg US_CR; /**< \brief (Usart Offset: 0x0000) Control Register */ 00043 RwReg US_MR; /**< \brief (Usart Offset: 0x0004) Mode Register */ 00044 WoReg US_IER; /**< \brief (Usart Offset: 0x0008) Interrupt Enable Register */ 00045 WoReg US_IDR; /**< \brief (Usart Offset: 0x000C) Interrupt Disable Register */ 00046 RoReg US_IMR; /**< \brief (Usart Offset: 0x0010) Interrupt Mask Register */ 00047 RoReg US_CSR; /**< \brief (Usart Offset: 0x0014) Channel Status Register */ 00048 RoReg US_RHR; /**< \brief (Usart Offset: 0x0018) Receiver Holding Register */ 00049 WoReg US_THR; /**< \brief (Usart Offset: 0x001C) Transmitter Holding Register */ 00050 RwReg US_BRGR; /**< \brief (Usart Offset: 0x0020) Baud Rate Generator Register */ 00051 RwReg US_RTOR; /**< \brief (Usart Offset: 0x0024) Receiver Time-out Register */ 00052 RwReg US_TTGR; /**< \brief (Usart Offset: 0x0028) Transmitter Timeguard Register */ 00053 RoReg Reserved1[5]; 00054 RwReg US_FIDI; /**< \brief (Usart Offset: 0x0040) FI DI Ratio Register */ 00055 RoReg US_NER; /**< \brief (Usart Offset: 0x0044) Number of Errors Register */ 00056 RoReg Reserved2[1]; 00057 RwReg US_IF; /**< \brief (Usart Offset: 0x004C) IrDA Filter Register */ 00058 RwReg US_MAN; /**< \brief (Usart Offset: 0x0050) Manchester Encoder Decoder Register */ 00059 RoReg Reserved3[36]; 00060 RwReg US_WPMR; /**< \brief (Usart Offset: 0xE4) Write Protect Mode Register */ 00061 RoReg US_WPSR; /**< \brief (Usart Offset: 0xE8) Write Protect Status Register */ 00062 RoReg Reserved4[5]; 00063 RwReg US_RPR; /**< \brief (Usart Offset: 0x100) Receive Pointer Register */ 00064 RwReg US_RCR; /**< \brief (Usart Offset: 0x104) Receive Counter Register */ 00065 RwReg US_TPR; /**< \brief (Usart Offset: 0x108) Transmit Pointer Register */ 00066 RwReg US_TCR; /**< \brief (Usart Offset: 0x10C) Transmit Counter Register */ 00067 RwReg US_RNPR; /**< \brief (Usart Offset: 0x110) Receive Next Pointer Register */ 00068 RwReg US_RNCR; /**< \brief (Usart Offset: 0x114) Receive Next Counter Register */ 00069 RwReg US_TNPR; /**< \brief (Usart Offset: 0x118) Transmit Next Pointer Register */ 00070 RwReg US_TNCR; /**< \brief (Usart Offset: 0x11C) Transmit Next Counter Register */ 00071 WoReg US_PTCR; /**< \brief (Usart Offset: 0x120) Transfer Control Register */ 00072 RoReg US_PTSR; /**< \brief (Usart Offset: 0x124) Transfer Status Register */ 00073 } Usart; 00074 #endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */ 00075 /* -------- US_CR : (USART Offset: 0x0000) Control Register -------- */ 00076 #define US_CR_RSTRX (0x1u << 2) /**< \brief (US_CR) Reset Receiver */ 00077 #define US_CR_RSTTX (0x1u << 3) /**< \brief (US_CR) Reset Transmitter */ 00078 #define US_CR_RXEN (0x1u << 4) /**< \brief (US_CR) Receiver Enable */ 00079 #define US_CR_RXDIS (0x1u << 5) /**< \brief (US_CR) Receiver Disable */ 00080 #define US_CR_TXEN (0x1u << 6) /**< \brief (US_CR) Transmitter Enable */ 00081 #define US_CR_TXDIS (0x1u << 7) /**< \brief (US_CR) Transmitter Disable */ 00082 #define US_CR_RSTSTA (0x1u << 8) /**< \brief (US_CR) Reset Status Bits */ 00083 #define US_CR_STTBRK (0x1u << 9) /**< \brief (US_CR) Start Break */ 00084 #define US_CR_STPBRK (0x1u << 10) /**< \brief (US_CR) Stop Break */ 00085 #define US_CR_STTTO (0x1u << 11) /**< \brief (US_CR) Start Time-out */ 00086 #define US_CR_SENDA (0x1u << 12) /**< \brief (US_CR) Send Address */ 00087 #define US_CR_RSTIT (0x1u << 13) /**< \brief (US_CR) Reset Iterations */ 00088 #define US_CR_RSTNACK (0x1u << 14) /**< \brief (US_CR) Reset Non Acknowledge */ 00089 #define US_CR_RETTO (0x1u << 15) /**< \brief (US_CR) Rearm Time-out */ 00090 #define US_CR_DTREN (0x1u << 16) /**< \brief (US_CR) Data Terminal Ready Enable */ 00091 #define US_CR_DTRDIS (0x1u << 17) /**< \brief (US_CR) Data Terminal Ready Disable */ 00092 #define US_CR_RTSEN (0x1u << 18) /**< \brief (US_CR) Request to Send Enable */ 00093 #define US_CR_RTSDIS (0x1u << 19) /**< \brief (US_CR) Request to Send Disable */ 00094 #define US_CR_FCS (0x1u << 18) /**< \brief (US_CR) Force SPI Chip Select */ 00095 #define US_CR_RCS (0x1u << 19) /**< \brief (US_CR) Release SPI Chip Select */ 00096 /* -------- US_MR : (USART Offset: 0x0004) Mode Register -------- */ 00097 #define US_MR_USART_MODE_Pos 0 00098 #define US_MR_USART_MODE_Msk (0xfu << US_MR_USART_MODE_Pos) /**< \brief (US_MR) USART Mode of Operation */ 00099 #define US_MR_USART_MODE_NORMAL (0x0u << 0) /**< \brief (US_MR) Normal mode */ 00100 #define US_MR_USART_MODE_RS485 (0x1u << 0) /**< \brief (US_MR) RS485 */ 00101 #define US_MR_USART_MODE_HW_HANDSHAKING (0x2u << 0) /**< \brief (US_MR) Hardware Handshaking */ 00102 #define US_MR_USART_MODE_MODEM (0x3u << 0) /**< \brief (US_MR) Modem */ 00103 #define US_MR_USART_MODE_IS07816_T_0 (0x4u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 0 */ 00104 #define US_MR_USART_MODE_IS07816_T_1 (0x6u << 0) /**< \brief (US_MR) IS07816 Protocol: T = 1 */ 00105 #define US_MR_USART_MODE_IRDA (0x8u << 0) /**< \brief (US_MR) IrDA */ 00106 #define US_MR_USART_MODE_SPI_MASTER (0xEu << 0) /**< \brief (US_MR) SPI Master */ 00107 #define US_MR_USART_MODE_SPI_SLAVE (0xFu << 0) /**< \brief (US_MR) SPI Slave */ 00108 #define US_MR_USCLKS_Pos 4 00109 #define US_MR_USCLKS_Msk (0x3u << US_MR_USCLKS_Pos) /**< \brief (US_MR) Clock Selection */ 00110 #define US_MR_USCLKS_MCK (0x0u << 4) /**< \brief (US_MR) Master Clock MCK is selected */ 00111 #define US_MR_USCLKS_DIV (0x1u << 4) /**< \brief (US_MR) Internal Clock Divided MCK/DIV (DIV=8) is selected */ 00112 #define US_MR_USCLKS_SCK (0x3u << 4) /**< \brief (US_MR) Serial Clock SLK is selected */ 00113 #define US_MR_CHRL_Pos 6 00114 #define US_MR_CHRL_Msk (0x3u << US_MR_CHRL_Pos) /**< \brief (US_MR) Character Length. */ 00115 #define US_MR_CHRL_5_BIT (0x0u << 6) /**< \brief (US_MR) Character length is 5 bits */ 00116 #define US_MR_CHRL_6_BIT (0x1u << 6) /**< \brief (US_MR) Character length is 6 bits */ 00117 #define US_MR_CHRL_7_BIT (0x2u << 6) /**< \brief (US_MR) Character length is 7 bits */ 00118 #define US_MR_CHRL_8_BIT (0x3u << 6) /**< \brief (US_MR) Character length is 8 bits */ 00119 #define US_MR_SYNC (0x1u << 8) /**< \brief (US_MR) Synchronous Mode Select */ 00120 #define US_MR_PAR_Pos 9 00121 #define US_MR_PAR_Msk (0x7u << US_MR_PAR_Pos) /**< \brief (US_MR) Parity Type */ 00122 #define US_MR_PAR_EVEN (0x0u << 9) /**< \brief (US_MR) Even parity */ 00123 #define US_MR_PAR_ODD (0x1u << 9) /**< \brief (US_MR) Odd parity */ 00124 #define US_MR_PAR_SPACE (0x2u << 9) /**< \brief (US_MR) Parity forced to 0 (Space) */ 00125 #define US_MR_PAR_MARK (0x3u << 9) /**< \brief (US_MR) Parity forced to 1 (Mark) */ 00126 #define US_MR_PAR_NO (0x4u << 9) /**< \brief (US_MR) No parity */ 00127 #define US_MR_PAR_MULTIDROP (0x6u << 9) /**< \brief (US_MR) Multidrop mode */ 00128 #define US_MR_NBSTOP_Pos 12 00129 #define US_MR_NBSTOP_Msk (0x3u << US_MR_NBSTOP_Pos) /**< \brief (US_MR) Number of Stop Bits */ 00130 #define US_MR_NBSTOP_1_BIT (0x0u << 12) /**< \brief (US_MR) 1 stop bit */ 00131 #define US_MR_NBSTOP_1_5_BIT (0x1u << 12) /**< \brief (US_MR) 1.5 stop bit (SYNC = 0) or reserved (SYNC = 1) */ 00132 #define US_MR_NBSTOP_2_BIT (0x2u << 12) /**< \brief (US_MR) 2 stop bits */ 00133 #define US_MR_CHMODE_Pos 14 00134 #define US_MR_CHMODE_Msk (0x3u << US_MR_CHMODE_Pos) /**< \brief (US_MR) Channel Mode */ 00135 #define US_MR_CHMODE_NORMAL (0x0u << 14) /**< \brief (US_MR) Normal Mode */ 00136 #define US_MR_CHMODE_AUTOMATIC (0x1u << 14) /**< \brief (US_MR) Automatic Echo. Receiver input is connected to the TXD pin. */ 00137 #define US_MR_CHMODE_LOCAL_LOOPBACK (0x2u << 14) /**< \brief (US_MR) Local Loopback. Transmitter output is connected to the Receiver Input. */ 00138 #define US_MR_CHMODE_REMOTE_LOOPBACK (0x3u << 14) /**< \brief (US_MR) Remote Loopback. RXD pin is internally connected to the TXD pin. */ 00139 #define US_MR_MSBF (0x1u << 16) /**< \brief (US_MR) Bit Order */ 00140 #define US_MR_MODE9 (0x1u << 17) /**< \brief (US_MR) 9-bit Character Length */ 00141 #define US_MR_CLKO (0x1u << 18) /**< \brief (US_MR) Clock Output Select */ 00142 #define US_MR_OVER (0x1u << 19) /**< \brief (US_MR) Oversampling Mode */ 00143 #define US_MR_INACK (0x1u << 20) /**< \brief (US_MR) Inhibit Non Acknowledge */ 00144 #define US_MR_DSNACK (0x1u << 21) /**< \brief (US_MR) Disable Successive NACK */ 00145 #define US_MR_VAR_SYNC (0x1u << 22) /**< \brief (US_MR) Variable Synchronization of Command/Data Sync Start Frame Delimiter */ 00146 #define US_MR_INVDATA (0x1u << 23) /**< \brief (US_MR) INverted Data */ 00147 #define US_MR_MAX_ITERATION_Pos 24 00148 #define US_MR_MAX_ITERATION_Msk (0x7u << US_MR_MAX_ITERATION_Pos) /**< \brief (US_MR) Maximum Number of Automatic Iteration */ 00149 #define US_MR_MAX_ITERATION(value) ((US_MR_MAX_ITERATION_Msk & ((value) << US_MR_MAX_ITERATION_Pos))) 00150 #define US_MR_FILTER (0x1u << 28) /**< \brief (US_MR) Infrared Receive Line Filter */ 00151 #define US_MR_MAN (0x1u << 29) /**< \brief (US_MR) Manchester Encoder/Decoder Enable */ 00152 #define US_MR_MODSYNC (0x1u << 30) /**< \brief (US_MR) Manchester Synchronization Mode */ 00153 #define US_MR_ONEBIT (0x1u << 31) /**< \brief (US_MR) Start Frame Delimiter Selector */ 00154 #define US_MR_CPHA (0x1u << 8) /**< \brief (US_MR) SPI Clock Phase */ 00155 #define US_MR_CPOL (0x1u << 16) /**< \brief (US_MR) SPI Clock Polarity */ 00156 #define US_MR_WRDBT (0x1u << 20) /**< \brief (US_MR) Wait Read Data Before Transfer */ 00157 /* -------- US_IER : (USART Offset: 0x0008) Interrupt Enable Register -------- */ 00158 #define US_IER_RXRDY (0x1u << 0) /**< \brief (US_IER) RXRDY Interrupt Enable */ 00159 #define US_IER_TXRDY (0x1u << 1) /**< \brief (US_IER) TXRDY Interrupt Enable */ 00160 #define US_IER_RXBRK (0x1u << 2) /**< \brief (US_IER) Receiver Break Interrupt Enable */ 00161 #define US_IER_ENDRX (0x1u << 3) /**< \brief (US_IER) End of Receive Transfer Interrupt Enable (available in all USART modes of operation) */ 00162 #define US_IER_ENDTX (0x1u << 4) /**< \brief (US_IER) End of Transmit Interrupt Enable (available in all USART modes of operation) */ 00163 #define US_IER_OVRE (0x1u << 5) /**< \brief (US_IER) Overrun Error Interrupt Enable */ 00164 #define US_IER_FRAME (0x1u << 6) /**< \brief (US_IER) Framing Error Interrupt Enable */ 00165 #define US_IER_PARE (0x1u << 7) /**< \brief (US_IER) Parity Error Interrupt Enable */ 00166 #define US_IER_TIMEOUT (0x1u << 8) /**< \brief (US_IER) Time-out Interrupt Enable */ 00167 #define US_IER_TXEMPTY (0x1u << 9) /**< \brief (US_IER) TXEMPTY Interrupt Enable */ 00168 #define US_IER_ITER (0x1u << 10) /**< \brief (US_IER) Max number of Repetitions Reached Interrupt Enable */ 00169 #define US_IER_TXBUFE (0x1u << 11) /**< \brief (US_IER) Buffer Empty Interrupt Enable (available in all USART modes of operation) */ 00170 #define US_IER_RXBUFF (0x1u << 12) /**< \brief (US_IER) Buffer Full Interrupt Enable (available in all USART modes of operation) */ 00171 #define US_IER_NACK (0x1u << 13) /**< \brief (US_IER) Non AcknowledgeInterrupt Enable */ 00172 #define US_IER_RIIC (0x1u << 16) /**< \brief (US_IER) Ring Indicator Input Change Enable */ 00173 #define US_IER_DSRIC (0x1u << 17) /**< \brief (US_IER) Data Set Ready Input Change Enable */ 00174 #define US_IER_DCDIC (0x1u << 18) /**< \brief (US_IER) Data Carrier Detect Input Change Interrupt Enable */ 00175 #define US_IER_CTSIC (0x1u << 19) /**< \brief (US_IER) Clear to Send Input Change Interrupt Enable */ 00176 #define US_IER_MANE (0x1u << 24) /**< \brief (US_IER) Manchester Error Interrupt Enable */ 00177 #define US_IER_UNRE (0x1u << 10) /**< \brief (US_IER) SPI Underrun Error Interrupt Enable */ 00178 /* -------- US_IDR : (USART Offset: 0x000C) Interrupt Disable Register -------- */ 00179 #define US_IDR_RXRDY (0x1u << 0) /**< \brief (US_IDR) RXRDY Interrupt Disable */ 00180 #define US_IDR_TXRDY (0x1u << 1) /**< \brief (US_IDR) TXRDY Interrupt Disable */ 00181 #define US_IDR_RXBRK (0x1u << 2) /**< \brief (US_IDR) Receiver Break Interrupt Disable */ 00182 #define US_IDR_ENDRX (0x1u << 3) /**< \brief (US_IDR) End of Receive Transfer Interrupt Disable (available in all USART modes of operation) */ 00183 #define US_IDR_ENDTX (0x1u << 4) /**< \brief (US_IDR) End of Transmit Interrupt Disable (available in all USART modes of operation) */ 00184 #define US_IDR_OVRE (0x1u << 5) /**< \brief (US_IDR) Overrun Error Interrupt Enable */ 00185 #define US_IDR_FRAME (0x1u << 6) /**< \brief (US_IDR) Framing Error Interrupt Disable */ 00186 #define US_IDR_PARE (0x1u << 7) /**< \brief (US_IDR) Parity Error Interrupt Disable */ 00187 #define US_IDR_TIMEOUT (0x1u << 8) /**< \brief (US_IDR) Time-out Interrupt Disable */ 00188 #define US_IDR_TXEMPTY (0x1u << 9) /**< \brief (US_IDR) TXEMPTY Interrupt Disable */ 00189 #define US_IDR_ITER (0x1u << 10) /**< \brief (US_IDR) Max number of Repetitions Reached Interrupt Disable */ 00190 #define US_IDR_TXBUFE (0x1u << 11) /**< \brief (US_IDR) Buffer Empty Interrupt Disable (available in all USART modes of operation) */ 00191 #define US_IDR_RXBUFF (0x1u << 12) /**< \brief (US_IDR) Buffer Full Interrupt Disable (available in all USART modes of operation) */ 00192 #define US_IDR_NACK (0x1u << 13) /**< \brief (US_IDR) Non AcknowledgeInterrupt Disable */ 00193 #define US_IDR_RIIC (0x1u << 16) /**< \brief (US_IDR) Ring Indicator Input Change Disable */ 00194 #define US_IDR_DSRIC (0x1u << 17) /**< \brief (US_IDR) Data Set Ready Input Change Disable */ 00195 #define US_IDR_DCDIC (0x1u << 18) /**< \brief (US_IDR) Data Carrier Detect Input Change Interrupt Disable */ 00196 #define US_IDR_CTSIC (0x1u << 19) /**< \brief (US_IDR) Clear to Send Input Change Interrupt Disable */ 00197 #define US_IDR_MANE (0x1u << 24) /**< \brief (US_IDR) Manchester Error Interrupt Disable */ 00198 #define US_IDR_UNRE (0x1u << 10) /**< \brief (US_IDR) SPI Underrun Error Interrupt Disable */ 00199 /* -------- US_IMR : (USART Offset: 0x0010) Interrupt Mask Register -------- */ 00200 #define US_IMR_RXRDY (0x1u << 0) /**< \brief (US_IMR) RXRDY Interrupt Mask */ 00201 #define US_IMR_TXRDY (0x1u << 1) /**< \brief (US_IMR) TXRDY Interrupt Mask */ 00202 #define US_IMR_RXBRK (0x1u << 2) /**< \brief (US_IMR) Receiver Break Interrupt Mask */ 00203 #define US_IMR_ENDRX (0x1u << 3) /**< \brief (US_IMR) End of Receive Transfer Interrupt Mask (available in all USART modes of operation) */ 00204 #define US_IMR_ENDTX (0x1u << 4) /**< \brief (US_IMR) End of Transmit Interrupt Mask (available in all USART modes of operation) */ 00205 #define US_IMR_OVRE (0x1u << 5) /**< \brief (US_IMR) Overrun Error Interrupt Mask */ 00206 #define US_IMR_FRAME (0x1u << 6) /**< \brief (US_IMR) Framing Error Interrupt Mask */ 00207 #define US_IMR_PARE (0x1u << 7) /**< \brief (US_IMR) Parity Error Interrupt Mask */ 00208 #define US_IMR_TIMEOUT (0x1u << 8) /**< \brief (US_IMR) Time-out Interrupt Mask */ 00209 #define US_IMR_TXEMPTY (0x1u << 9) /**< \brief (US_IMR) TXEMPTY Interrupt Mask */ 00210 #define US_IMR_ITER (0x1u << 10) /**< \brief (US_IMR) Max number of Repetitions Reached Interrupt Mask */ 00211 #define US_IMR_TXBUFE (0x1u << 11) /**< \brief (US_IMR) Buffer Empty Interrupt Mask (available in all USART modes of operation) */ 00212 #define US_IMR_RXBUFF (0x1u << 12) /**< \brief (US_IMR) Buffer Full Interrupt Mask (available in all USART modes of operation) */ 00213 #define US_IMR_NACK (0x1u << 13) /**< \brief (US_IMR) Non AcknowledgeInterrupt Mask */ 00214 #define US_IMR_RIIC (0x1u << 16) /**< \brief (US_IMR) Ring Indicator Input Change Mask */ 00215 #define US_IMR_DSRIC (0x1u << 17) /**< \brief (US_IMR) Data Set Ready Input Change Mask */ 00216 #define US_IMR_DCDIC (0x1u << 18) /**< \brief (US_IMR) Data Carrier Detect Input Change Interrupt Mask */ 00217 #define US_IMR_CTSIC (0x1u << 19) /**< \brief (US_IMR) Clear to Send Input Change Interrupt Mask */ 00218 #define US_IMR_MANE (0x1u << 24) /**< \brief (US_IMR) Manchester Error Interrupt Mask */ 00219 #define US_IMR_UNRE (0x1u << 10) /**< \brief (US_IMR) SPI Underrun Error Interrupt Mask */ 00220 /* -------- US_CSR : (USART Offset: 0x0014) Channel Status Register -------- */ 00221 #define US_CSR_RXRDY (0x1u << 0) /**< \brief (US_CSR) Receiver Ready */ 00222 #define US_CSR_TXRDY (0x1u << 1) /**< \brief (US_CSR) Transmitter Ready */ 00223 #define US_CSR_RXBRK (0x1u << 2) /**< \brief (US_CSR) Break Received/End of Break */ 00224 #define US_CSR_ENDRX (0x1u << 3) /**< \brief (US_CSR) End of Receiver Transfer */ 00225 #define US_CSR_ENDTX (0x1u << 4) /**< \brief (US_CSR) End of Transmitter Transfer */ 00226 #define US_CSR_OVRE (0x1u << 5) /**< \brief (US_CSR) Overrun Error */ 00227 #define US_CSR_FRAME (0x1u << 6) /**< \brief (US_CSR) Framing Error */ 00228 #define US_CSR_PARE (0x1u << 7) /**< \brief (US_CSR) Parity Error */ 00229 #define US_CSR_TIMEOUT (0x1u << 8) /**< \brief (US_CSR) Receiver Time-out */ 00230 #define US_CSR_TXEMPTY (0x1u << 9) /**< \brief (US_CSR) Transmitter Empty */ 00231 #define US_CSR_ITER (0x1u << 10) /**< \brief (US_CSR) Max number of Repetitions Reached */ 00232 #define US_CSR_TXBUFE (0x1u << 11) /**< \brief (US_CSR) Transmission Buffer Empty */ 00233 #define US_CSR_RXBUFF (0x1u << 12) /**< \brief (US_CSR) Reception Buffer Full */ 00234 #define US_CSR_NACK (0x1u << 13) /**< \brief (US_CSR) Non AcknowledgeInterrupt */ 00235 #define US_CSR_RIIC (0x1u << 16) /**< \brief (US_CSR) Ring Indicator Input Change Flag */ 00236 #define US_CSR_DSRIC (0x1u << 17) /**< \brief (US_CSR) Data Set Ready Input Change Flag */ 00237 #define US_CSR_DCDIC (0x1u << 18) /**< \brief (US_CSR) Data Carrier Detect Input Change Flag */ 00238 #define US_CSR_CTSIC (0x1u << 19) /**< \brief (US_CSR) Clear to Send Input Change Flag */ 00239 #define US_CSR_RI (0x1u << 20) /**< \brief (US_CSR) Image of RI Input */ 00240 #define US_CSR_DSR (0x1u << 21) /**< \brief (US_CSR) Image of DSR Input */ 00241 #define US_CSR_DCD (0x1u << 22) /**< \brief (US_CSR) Image of DCD Input */ 00242 #define US_CSR_CTS (0x1u << 23) /**< \brief (US_CSR) Image of CTS Input */ 00243 #define US_CSR_MANERR (0x1u << 24) /**< \brief (US_CSR) Manchester Error */ 00244 #define US_CSR_UNRE (0x1u << 10) /**< \brief (US_CSR) Underrun Error */ 00245 /* -------- US_RHR : (USART Offset: 0x0018) Receiver Holding Register -------- */ 00246 #define US_RHR_RXCHR_Pos 0 00247 #define US_RHR_RXCHR_Msk (0x1ffu << US_RHR_RXCHR_Pos) /**< \brief (US_RHR) Received Character */ 00248 #define US_RHR_RXSYNH (0x1u << 15) /**< \brief (US_RHR) Received Sync */ 00249 /* -------- US_THR : (USART Offset: 0x001C) Transmitter Holding Register -------- */ 00250 #define US_THR_TXCHR_Pos 0 00251 #define US_THR_TXCHR_Msk (0x1ffu << US_THR_TXCHR_Pos) /**< \brief (US_THR) Character to be Transmitted */ 00252 #define US_THR_TXCHR(value) ((US_THR_TXCHR_Msk & ((value) << US_THR_TXCHR_Pos))) 00253 #define US_THR_TXSYNH (0x1u << 15) /**< \brief (US_THR) Sync Field to be transmitted */ 00254 /* -------- US_BRGR : (USART Offset: 0x0020) Baud Rate Generator Register -------- */ 00255 #define US_BRGR_CD_Pos 0 00256 #define US_BRGR_CD_Msk (0xffffu << US_BRGR_CD_Pos) /**< \brief (US_BRGR) Clock Divider */ 00257 #define US_BRGR_CD(value) ((US_BRGR_CD_Msk & ((value) << US_BRGR_CD_Pos))) 00258 #define US_BRGR_FP_Pos 16 00259 #define US_BRGR_FP_Msk (0x7u << US_BRGR_FP_Pos) /**< \brief (US_BRGR) Fractional Part */ 00260 #define US_BRGR_FP(value) ((US_BRGR_FP_Msk & ((value) << US_BRGR_FP_Pos))) 00261 /* -------- US_RTOR : (USART Offset: 0x0024) Receiver Time-out Register -------- */ 00262 #define US_RTOR_TO_Pos 0 00263 #define US_RTOR_TO_Msk (0xffffu << US_RTOR_TO_Pos) /**< \brief (US_RTOR) Time-out Value */ 00264 #define US_RTOR_TO(value) ((US_RTOR_TO_Msk & ((value) << US_RTOR_TO_Pos))) 00265 /* -------- US_TTGR : (USART Offset: 0x0028) Transmitter Timeguard Register -------- */ 00266 #define US_TTGR_TG_Pos 0 00267 #define US_TTGR_TG_Msk (0xffu << US_TTGR_TG_Pos) /**< \brief (US_TTGR) Timeguard Value */ 00268 #define US_TTGR_TG(value) ((US_TTGR_TG_Msk & ((value) << US_TTGR_TG_Pos))) 00269 /* -------- US_FIDI : (USART Offset: 0x0040) FI DI Ratio Register -------- */ 00270 #define US_FIDI_FI_DI_RATIO_Pos 0 00271 #define US_FIDI_FI_DI_RATIO_Msk (0x7ffu << US_FIDI_FI_DI_RATIO_Pos) /**< \brief (US_FIDI) FI Over DI Ratio Value */ 00272 #define US_FIDI_FI_DI_RATIO(value) ((US_FIDI_FI_DI_RATIO_Msk & ((value) << US_FIDI_FI_DI_RATIO_Pos))) 00273 /* -------- US_NER : (USART Offset: 0x0044) Number of Errors Register -------- */ 00274 #define US_NER_NB_ERRORS_Pos 0 00275 #define US_NER_NB_ERRORS_Msk (0xffu << US_NER_NB_ERRORS_Pos) /**< \brief (US_NER) Number of Errors */ 00276 /* -------- US_IF : (USART Offset: 0x004C) IrDA Filter Register -------- */ 00277 #define US_IF_IRDA_FILTER_Pos 0 00278 #define US_IF_IRDA_FILTER_Msk (0xffu << US_IF_IRDA_FILTER_Pos) /**< \brief (US_IF) IrDA Filter */ 00279 #define US_IF_IRDA_FILTER(value) ((US_IF_IRDA_FILTER_Msk & ((value) << US_IF_IRDA_FILTER_Pos))) 00280 /* -------- US_MAN : (USART Offset: 0x0050) Manchester Encoder Decoder Register -------- */ 00281 #define US_MAN_TX_PL_Pos 0 00282 #define US_MAN_TX_PL_Msk (0xfu << US_MAN_TX_PL_Pos) /**< \brief (US_MAN) Transmitter Preamble Length */ 00283 #define US_MAN_TX_PL(value) ((US_MAN_TX_PL_Msk & ((value) << US_MAN_TX_PL_Pos))) 00284 #define US_MAN_TX_PP_Pos 8 00285 #define US_MAN_TX_PP_Msk (0x3u << US_MAN_TX_PP_Pos) /**< \brief (US_MAN) Transmitter Preamble Pattern */ 00286 #define US_MAN_TX_PP_ALL_ONE (0x0u << 8) /**< \brief (US_MAN) The preamble is composed of '1's */ 00287 #define US_MAN_TX_PP_ALL_ZERO (0x1u << 8) /**< \brief (US_MAN) The preamble is composed of '0's */ 00288 #define US_MAN_TX_PP_ZERO_ONE (0x2u << 8) /**< \brief (US_MAN) The preamble is composed of '01's */ 00289 #define US_MAN_TX_PP_ONE_ZERO (0x3u << 8) /**< \brief (US_MAN) The preamble is composed of '10's */ 00290 #define US_MAN_TX_MPOL (0x1u << 12) /**< \brief (US_MAN) Transmitter Manchester Polarity */ 00291 #define US_MAN_RX_PL_Pos 16 00292 #define US_MAN_RX_PL_Msk (0xfu << US_MAN_RX_PL_Pos) /**< \brief (US_MAN) Receiver Preamble Length */ 00293 #define US_MAN_RX_PL(value) ((US_MAN_RX_PL_Msk & ((value) << US_MAN_RX_PL_Pos))) 00294 #define US_MAN_RX_PP_Pos 24 00295 #define US_MAN_RX_PP_Msk (0x3u << US_MAN_RX_PP_Pos) /**< \brief (US_MAN) Receiver Preamble Pattern detected */ 00296 #define US_MAN_RX_PP_ALL_ONE (0x0u << 24) /**< \brief (US_MAN) The preamble is composed of '1's */ 00297 #define US_MAN_RX_PP_ALL_ZERO (0x1u << 24) /**< \brief (US_MAN) The preamble is composed of '0's */ 00298 #define US_MAN_RX_PP_ZERO_ONE (0x2u << 24) /**< \brief (US_MAN) The preamble is composed of '01's */ 00299 #define US_MAN_RX_PP_ONE_ZERO (0x3u << 24) /**< \brief (US_MAN) The preamble is composed of '10's */ 00300 #define US_MAN_RX_MPOL (0x1u << 28) /**< \brief (US_MAN) Receiver Manchester Polarity */ 00301 #define US_MAN_ONE (0x1u << 29) /**< \brief (US_MAN) Must Be Set to 1 */ 00302 #define US_MAN_DRIFT (0x1u << 30) /**< \brief (US_MAN) Drift compensation */ 00303 /* -------- US_WPMR : (USART Offset: 0xE4) Write Protect Mode Register -------- */ 00304 #define US_WPMR_WPEN (0x1u << 0) /**< \brief (US_WPMR) Write Protect Enable */ 00305 #define US_WPMR_WPKEY_Pos 8 00306 #define US_WPMR_WPKEY_Msk (0xffffffu << US_WPMR_WPKEY_Pos) /**< \brief (US_WPMR) Write Protect KEY */ 00307 #define US_WPMR_WPKEY(value) ((US_WPMR_WPKEY_Msk & ((value) << US_WPMR_WPKEY_Pos))) 00308 /* -------- US_WPSR : (USART Offset: 0xE8) Write Protect Status Register -------- */ 00309 #define US_WPSR_WPVS (0x1u << 0) /**< \brief (US_WPSR) Write Protect Violation Status */ 00310 #define US_WPSR_WPVSRC_Pos 8 00311 #define US_WPSR_WPVSRC_Msk (0xffffu << US_WPSR_WPVSRC_Pos) /**< \brief (US_WPSR) Write Protect Violation Source */ 00312 /* -------- US_RPR : (USART Offset: 0x100) Receive Pointer Register -------- */ 00313 #define US_RPR_RXPTR_Pos 0 00314 #define US_RPR_RXPTR_Msk (0xffffffffu << US_RPR_RXPTR_Pos) /**< \brief (US_RPR) Receive Pointer Register */ 00315 #define US_RPR_RXPTR(value) ((US_RPR_RXPTR_Msk & ((value) << US_RPR_RXPTR_Pos))) 00316 /* -------- US_RCR : (USART Offset: 0x104) Receive Counter Register -------- */ 00317 #define US_RCR_RXCTR_Pos 0 00318 #define US_RCR_RXCTR_Msk (0xffffu << US_RCR_RXCTR_Pos) /**< \brief (US_RCR) Receive Counter Register */ 00319 #define US_RCR_RXCTR(value) ((US_RCR_RXCTR_Msk & ((value) << US_RCR_RXCTR_Pos))) 00320 /* -------- US_TPR : (USART Offset: 0x108) Transmit Pointer Register -------- */ 00321 #define US_TPR_TXPTR_Pos 0 00322 #define US_TPR_TXPTR_Msk (0xffffffffu << US_TPR_TXPTR_Pos) /**< \brief (US_TPR) Transmit Counter Register */ 00323 #define US_TPR_TXPTR(value) ((US_TPR_TXPTR_Msk & ((value) << US_TPR_TXPTR_Pos))) 00324 /* -------- US_TCR : (USART Offset: 0x10C) Transmit Counter Register -------- */ 00325 #define US_TCR_TXCTR_Pos 0 00326 #define US_TCR_TXCTR_Msk (0xffffu << US_TCR_TXCTR_Pos) /**< \brief (US_TCR) Transmit Counter Register */ 00327 #define US_TCR_TXCTR(value) ((US_TCR_TXCTR_Msk & ((value) << US_TCR_TXCTR_Pos))) 00328 /* -------- US_RNPR : (USART Offset: 0x110) Receive Next Pointer Register -------- */ 00329 #define US_RNPR_RXNPTR_Pos 0 00330 #define US_RNPR_RXNPTR_Msk (0xffffffffu << US_RNPR_RXNPTR_Pos) /**< \brief (US_RNPR) Receive Next Pointer */ 00331 #define US_RNPR_RXNPTR(value) ((US_RNPR_RXNPTR_Msk & ((value) << US_RNPR_RXNPTR_Pos))) 00332 /* -------- US_RNCR : (USART Offset: 0x114) Receive Next Counter Register -------- */ 00333 #define US_RNCR_RXNCTR_Pos 0 00334 #define US_RNCR_RXNCTR_Msk (0xffffu << US_RNCR_RXNCTR_Pos) /**< \brief (US_RNCR) Receive Next Counter */ 00335 #define US_RNCR_RXNCTR(value) ((US_RNCR_RXNCTR_Msk & ((value) << US_RNCR_RXNCTR_Pos))) 00336 /* -------- US_TNPR : (USART Offset: 0x118) Transmit Next Pointer Register -------- */ 00337 #define US_TNPR_TXNPTR_Pos 0 00338 #define US_TNPR_TXNPTR_Msk (0xffffffffu << US_TNPR_TXNPTR_Pos) /**< \brief (US_TNPR) Transmit Next Pointer */ 00339 #define US_TNPR_TXNPTR(value) ((US_TNPR_TXNPTR_Msk & ((value) << US_TNPR_TXNPTR_Pos))) 00340 /* -------- US_TNCR : (USART Offset: 0x11C) Transmit Next Counter Register -------- */ 00341 #define US_TNCR_TXNCTR_Pos 0 00342 #define US_TNCR_TXNCTR_Msk (0xffffu << US_TNCR_TXNCTR_Pos) /**< \brief (US_TNCR) Transmit Counter Next */ 00343 #define US_TNCR_TXNCTR(value) ((US_TNCR_TXNCTR_Msk & ((value) << US_TNCR_TXNCTR_Pos))) 00344 /* -------- US_PTCR : (USART Offset: 0x120) Transfer Control Register -------- */ 00345 #define US_PTCR_RXTEN (0x1u << 0) /**< \brief (US_PTCR) Receiver Transfer Enable */ 00346 #define US_PTCR_RXTDIS (0x1u << 1) /**< \brief (US_PTCR) Receiver Transfer Disable */ 00347 #define US_PTCR_TXTEN (0x1u << 8) /**< \brief (US_PTCR) Transmitter Transfer Enable */ 00348 #define US_PTCR_TXTDIS (0x1u << 9) /**< \brief (US_PTCR) Transmitter Transfer Disable */ 00349 /* -------- US_PTSR : (USART Offset: 0x124) Transfer Status Register -------- */ 00350 #define US_PTSR_RXTEN (0x1u << 0) /**< \brief (US_PTSR) Receiver Transfer Enable */ 00351 #define US_PTSR_TXTEN (0x1u << 8) /**< \brief (US_PTSR) Transmitter Transfer Enable */ 00352 00353 /*@}*/ 00354 00355 00356 #endif /* _SAM3U_USART_COMPONENT_ */
Generated on Tue Jul 12 2022 15:37:26 by
1.7.2