Nut/OS  4.10.3
API Reference
usart2.c
Go to the documentation of this file.
00001 
00036 /*
00037  * $Log: usart2.c,v $
00038  *
00039  */
00040 
00041 #include <cfg/os.h>
00042 #include <cfg/clock.h>
00043 #include <cfg/arch.h>
00044 #include <cfg/uart.h>
00045 #include <cfg/arch/gpio.h>
00046 
00047 #include <string.h>
00048 
00049 #include <sys/atom.h>
00050 #include <sys/event.h>
00051 #include <sys/timer.h>
00052 
00053 #include <dev/irqreg.h>
00054 #include <dev/usartavr32.h>
00055 #include <dev/gpio.h>
00056 
00057 /*
00058  * Local function prototypes.
00059  */
00060 static uint32_t Avr32UsartGetSpeed(void);
00061 static int Avr32UsartSetSpeed(uint32_t rate);
00062 static uint8_t Avr32UsartGetDataBits(void);
00063 static int Avr32UsartSetDataBits(uint8_t bits);
00064 static uint8_t Avr32UsartGetParity(void);
00065 static int Avr32UsartSetParity(uint8_t mode);
00066 static uint8_t Avr32UsartGetStopBits(void);
00067 static int Avr32UsartSetStopBits(uint8_t bits);
00068 static uint32_t Avr32UsartGetFlowControl(void);
00069 static int Avr32UsartSetFlowControl(uint32_t flags);
00070 static uint32_t Avr32UsartGetStatus(void);
00071 static int Avr32UsartSetStatus(uint32_t flags);
00072 static uint8_t Avr32UsartGetClockMode(void);
00073 static int Avr32UsartSetClockMode(uint8_t mode);
00074 static void Avr32UsartTxStart(void);
00075 static void Avr32UsartRxStart(void);
00076 static int Avr32UsartInit(void);
00077 static int Avr32UsartDeinit(void);
00078 
00083 
00087 static USARTDCB dcb_usart2 = {
00088     0,                          /* dcb_modeflags */
00089     0,                          /* dcb_statusflags */
00090     0,                          /* dcb_rtimeout */
00091     0,                          /* dcb_wtimeout */
00092     {0, 0, 0, 0, 0, 0, 0, 0},   /* dcb_tx_rbf */
00093     {0, 0, 0, 0, 0, 0, 0, 0},   /* dcb_rx_rbf */
00094     0,                          /* dbc_last_eol */
00095     Avr32UsartInit,             /* dcb_init */
00096     Avr32UsartDeinit,           /* dcb_deinit */
00097     Avr32UsartTxStart,          /* dcb_tx_start */
00098     Avr32UsartRxStart,          /* dcb_rx_start */
00099     Avr32UsartSetFlowControl,   /* dcb_set_flow_control */
00100     Avr32UsartGetFlowControl,   /* dcb_get_flow_control */
00101     Avr32UsartSetSpeed,         /* dcb_set_speed */
00102     Avr32UsartGetSpeed,         /* dcb_get_speed */
00103     Avr32UsartSetDataBits,      /* dcb_set_data_bits */
00104     Avr32UsartGetDataBits,      /* dcb_get_data_bits */
00105     Avr32UsartSetParity,        /* dcb_set_parity */
00106     Avr32UsartGetParity,        /* dcb_get_parity */
00107     Avr32UsartSetStopBits,      /* dcb_set_stop_bits */
00108     Avr32UsartGetStopBits,      /* dcb_get_stop_bits */
00109     Avr32UsartSetStatus,        /* dcb_set_status */
00110     Avr32UsartGetStatus,        /* dcb_get_status */
00111     Avr32UsartSetClockMode,     /* dcb_set_clock_mode */
00112     Avr32UsartGetClockMode,     /* dcb_get_clock_mode */
00113 };
00114 
00130 NUTDEVICE devUsartAvr322 = {
00131     0,                          /* Pointer to next device, dev_next. */
00132     {'u', 'a', 'r', 't', '2', 0, 0, 0, 0},      /* Unique device name, dev_name. */
00133     IFTYP_CHAR,                 /* Type of device, dev_type. */
00134     0,                          /* Base address, dev_base (not used). */
00135     0,                          /* First interrupt number, dev_irq (not used). */
00136     0,                          /* Interface control block, dev_icb (not used). */
00137     &dcb_usart2,                /* Driver control block, dev_dcb. */
00138     UsartInit,                  /* Driver initialization routine, dev_init. */
00139     UsartIOCtl,                 /* Driver specific control function, dev_ioctl. */
00140     UsartRead,                  /* Read from device, dev_read. */
00141     UsartWrite,                 /* Write to device, dev_write. */
00142     UsartOpen,                  /* Open a device or file, dev_open. */
00143     UsartClose,                 /* Close a device or file, dev_close. */
00144     UsartSize                   /* Request file size, dev_size. */
00145 };
00146 
00150 
00151 #define SIG_UART        sig_UART2
00152 #define dcb_usart       dcb_usart2
00153 
00154 #define USARTn_BASE         AVR32_USART2
00155 
00156 #if UART2_ALT_PINSET == ALTERNATE_PIN_SET2
00157 # if defined(AVR32_USART2_TXD_0_0_PIN)
00158 #  define USART_RX_PIN        AVR32_USART2_RXD_0_1_PIN
00159 #  define USART_RX_FUNCTION   AVR32_USART2_RXD_0_1_FUNCTION
00160 #  define USART_TX_PIN        AVR32_USART2_TXD_0_1_PIN
00161 #  define USART_TX_FUNCTION   AVR32_USART2_TXD_0_1_FUNCTION
00162 # elif defined(AVR32_USART2_TXD_0_PIN)
00163 #  define USART_RX_PIN        AVR32_USART2_RXD_1_PIN
00164 #  define USART_RX_FUNCTION   AVR32_USART2_RXD_1_FUNCTION
00165 #  define USART_TX_PIN        AVR32_USART2_TXD_1_PIN
00166 #  define USART_TX_FUNCTION   AVR32_USART2_TXD_1_FUNCTION
00167 # endif
00168 #elif UART2_ALT_PINSET == ALTERNATE_PIN_SET3
00169 # if defined(AVR32_USART2_TXD_0_0_PIN)
00170 #  define USART_RX_PIN        AVR32_USART2_RXD_0_2_PIN
00171 #  define USART_RX_FUNCTION   AVR32_USART2_RXD_0_2_FUNCTION
00172 #  define USART_TX_PIN        AVR32_USART2_TXD_0_2_PIN
00173 #  define USART_TX_FUNCTION   AVR32_USART2_TXD_0_2_FUNCTION
00174 # elif defined(AVR32_USART2_TXD_0_PIN)
00175 #  define USART_RX_PIN        AVR32_USART2_RXD_2_PIN
00176 #  define USART_RX_FUNCTION   AVR32_USART2_RXD_2_FUNCTION
00177 #  define USART_TX_PIN        AVR32_USART2_TXD_2_PIN
00178 #  define USART_TX_FUNCTION   AVR32_USART2_TXD_2_FUNCTION
00179 # endif
00180 #else // ALTERNATE_PIN_SET1
00181 # if defined(AVR32_USART2_TXD_0_0_PIN)
00182 #  define USART_RX_PIN        AVR32_USART2_RXD_0_0_PIN
00183 #  define USART_RX_FUNCTION   AVR32_USART2_RXD_0_0_FUNCTION
00184 #  define USART_TX_PIN        AVR32_USART2_TXD_0_0_PIN
00185 #  define USART_TX_FUNCTION   AVR32_USART2_TXD_0_0_FUNCTION
00186 # elif defined(AVR32_USART2_TXD_0_PIN)
00187 #  define USART_RX_PIN        AVR32_USART2_RXD_0_PIN
00188 #  define USART_RX_FUNCTION   AVR32_USART2_RXD_0_FUNCTION
00189 #  define USART_TX_PIN        AVR32_USART2_TXD_0_PIN
00190 #  define USART_TX_FUNCTION   AVR32_USART2_TXD_0_FUNCTION
00191 # endif
00192 #endif
00193 
00194 #include "usart.c"