00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef ARMLIB_UARTDMA_H
00026 #define ARMLIB_UARTDMA_H
00027
00028 #include "global.h"
00029 #include "buffer.h"
00030
00031
00032 #ifndef UART0_INTERRUPT_LEVEL
00033 #define UART0_INTERRUPT_LEVEL 6
00034 #endif
00035 #ifndef UART1_INTERRUPT_LEVEL
00036 #define UART1_INTERRUPT_LEVEL 6
00037 #endif
00038
00039
00040
00041
00042
00043
00044
00045
00046 #define UART_BAUD(baud) (uint16_t)((F_CPU+baud*8L)/(baud*16))
00047
00048
00049 #define UART_8N1 (AT91C_US_CHRL_8_BITS | AT91C_US_PAR_NONE | AT91C_US_NBSTOP_1_BIT)
00050 #define UART_8N2 (AT91C_US_CHRL_8_BITS | AT91C_US_PAR_NONE | AT91C_US_NBSTOP_2_BIT)
00051 #define UART_7N1 (AT91C_US_CHRL_7_BITS | AT91C_US_PAR_NONE | AT91C_US_NBSTOP_1_BIT)
00052 #define UART_7N2 (AT91C_US_CHRL_7_BITS | AT91C_US_PAR_NONE | AT91C_US_NBSTOP_2_BIT)
00053
00054 #define UART_8E1 (AT91C_US_CHRL_8_BITS | AT91C_US_PAR_EVEN | AT91C_US_NBSTOP_1_BIT)
00055 #define UART_8E2 (AT91C_US_CHRL_8_BITS | AT91C_US_PAR_EVEN | AT91C_US_NBSTOP_2_BIT)
00056 #define UART_7E1 (AT91C_US_CHRL_7_BITS | AT91C_US_PAR_EVEN | AT91C_US_NBSTOP_1_BIT)
00057 #define UART_7E2 (AT91C_US_CHRL_7_BITS | AT91C_US_PAR_EVEN | AT91C_US_NBSTOP_2_BIT)
00058
00059 #define UART_8O1 (AT91C_US_CHRL_8_BITS | AT91C_US_PAR_ODD | AT91C_US_NBSTOP_1_BIT)
00060 #define UART_8O2 (AT91C_US_CHRL_8_BITS | AT91C_US_PAR_ODD | AT91C_US_NBSTOP_2_BIT)
00061 #define UART_7O1 (AT91C_US_CHRL_7_BITS | AT91C_US_PAR_ODD | AT91C_US_NBSTOP_1_BIT)
00062 #define UART_7O2 (AT91C_US_CHRL_7_BITS | AT91C_US_PAR_ODD | AT91C_US_NBSTOP_2_BIT)
00063
00064
00065
00066
00067 #ifndef UART0_TX_BUFFER_SIZE
00068 #define UART0_TX_BUFFER_SIZE 0x0010
00069 #endif
00070 #ifndef UART0_RX_BUFFER_SIZE
00071 #define UART0_RX_BUFFER_SIZE 0x0080
00072 #endif
00073 #ifndef UART1_TX_BUFFER_SIZE
00074 #define UART1_TX_BUFFER_SIZE 0x0010
00075 #endif
00076 #ifndef UART1_RX_BUFFER_SIZE
00077 #define UART1_RX_BUFFER_SIZE 0x0080
00078 #endif
00079 #ifndef UART2_TX_BUFFER_SIZE
00080 #define UART2_TX_BUFFER_SIZE 0x0010
00081 #endif
00082 #ifndef UART2_RX_BUFFER_SIZE
00083 #define UART2_RX_BUFFER_SIZE 0x0080
00084 #endif
00085
00086
00087
00088
00089 void uart0Init(uint16_t bauddiv, uint32_t mode);
00090 void uart1Init(uint16_t bauddiv, uint32_t mode);
00091 void uart2Init(uint16_t bauddiv, uint32_t mode);
00092
00093
00094
00095 void uart0InitBuffers(void);
00096 void uart1InitBuffers(void);
00097 void uart2InitBuffers(void);
00098
00099
00100
00101 void uartInitDmaTx(int dev);
00102
00103
00104
00105 void uartInitDmaRx(int dev);
00106
00107
00108
00109 cBuffer* uartGetRxBuffer(int dev);
00110
00111
00112
00113
00114
00115 int uartSendByte(int dev, int data);
00116 inline int uart0SendByte(int data) { return uartSendByte(0, data); };
00117 inline int uart1SendByte(int data) { return uartSendByte(1, data); };
00118 inline int uart2SendByte(int data) { return uartSendByte(2, data); };
00119
00120
00121 int uartGetByte(int dev);
00122 inline int uart0GetByte(void) { return uartGetByte(0); };
00123 inline int uart1GetByte(void) { return uartGetByte(1); };
00124 inline int uart2GetByte(void) { return uartGetByte(2); };
00125
00126
00127
00128 int uartSendBlock(int dev, unsigned char* data, unsigned int len);
00129 inline int uart0SendBlock(unsigned char* data, unsigned int len) { return uartSendBlock(0,data,len); };
00130 inline int uart1SendBlock(unsigned char* data, unsigned int len) { return uartSendBlock(1,data,len); };
00131 inline int uart2SendBlock(unsigned char* data, unsigned int len) { return uartSendBlock(2,data,len); };
00132
00133
00134
00135
00136 int uartGetBlock(int dev, unsigned char* data, unsigned int len);
00137 inline int uart0GetBlock(unsigned char* data, unsigned int len) { return uartGetBlock(0,data,len); };
00138 inline int uart1GetBlock(unsigned char* data, unsigned int len) { return uartGetBlock(1,data,len); };
00139 inline int uart2GetBlock(unsigned char* data, unsigned int len) { return uartGetBlock(2,data,len); };
00140
00141
00142 void uart0Service(void);
00143 void uart1Service(void);
00144 void uart2Service(void);
00145
00146 #endif
00147