00001
00088 #include <avr32/io.h>
00089 #include "compiler.h"
00090 #include "board.h"
00091 #include "pm.h"
00092 #include "gpio.h"
00093 #include "usart.h"
00094
00095
00098
00099 #if BOARD == EVK1100
00100 # define EXAMPLE_USART (&AVR32_USART1)
00101 # define EXAMPLE_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
00102 # define EXAMPLE_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
00103 # define EXAMPLE_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
00104 # define EXAMPLE_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
00105 # define EXAMPLE_USART_SPI (&AVR32_USART2)
00106 # define EXAMPLE_USART_SPI_SCK_PIN AVR32_USART2_CLK_0_PIN
00107 # define EXAMPLE_USART_SPI_SCK_FUNCTION AVR32_USART2_CLK_0_FUNCTION
00108 # define EXAMPLE_USART_SPI_MISO_PIN AVR32_USART2_RXD_0_0_PIN
00109 # define EXAMPLE_USART_SPI_MISO_FUNCTION AVR32_USART2_RXD_0_0_FUNCTION
00110 # define EXAMPLE_USART_SPI_MOSI_PIN AVR32_USART2_TXD_0_0_PIN
00111 # define EXAMPLE_USART_SPI_MOSI_FUNCTION AVR32_USART2_TXD_0_0_FUNCTION
00112 # define EXAMPLE_USART_SPI_NSS_PIN AVR32_USART2_RTS_0_0_PIN
00113 # define EXAMPLE_USART_SPI_NSS_FUNCTION AVR32_USART2_RTS_0_0_FUNCTION
00114 #elif BOARD == EVK1101
00115 # define EXAMPLE_USART (&AVR32_USART1)
00116 # define EXAMPLE_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
00117 # define EXAMPLE_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
00118 # define EXAMPLE_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
00119 # define EXAMPLE_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
00120 # define EXAMPLE_USART_SPI (&AVR32_USART2)
00121 # define EXAMPLE_USART_SPI_SCK_PIN AVR32_USART2_CLK_0_PIN
00122 # define EXAMPLE_USART_SPI_SCK_FUNCTION AVR32_USART2_CLK_0_FUNCTION
00123 # define EXAMPLE_USART_SPI_MISO_PIN AVR32_USART2_RXD_0_0_PIN
00124 # define EXAMPLE_USART_SPI_MISO_FUNCTION AVR32_USART2_RXD_0_0_FUNCTION
00125 # define EXAMPLE_USART_SPI_MOSI_PIN AVR32_USART2_TXD_0_0_PIN
00126 # define EXAMPLE_USART_SPI_MOSI_FUNCTION AVR32_USART2_TXD_0_0_FUNCTION
00127 # define EXAMPLE_USART_SPI_NSS_PIN AVR32_USART2_RTS_0_PIN
00128 # define EXAMPLE_USART_SPI_NSS_FUNCTION AVR32_USART2_RTS_0_FUNCTION
00129 #endif
00131
00132
00136 int main(void)
00137 {
00138 static const gpio_map_t USART_GPIO_MAP =
00139 {
00140 {EXAMPLE_USART_RX_PIN, EXAMPLE_USART_RX_FUNCTION},
00141 {EXAMPLE_USART_TX_PIN, EXAMPLE_USART_TX_FUNCTION}
00142 };
00143
00144 static const gpio_map_t USART_SPI_GPIO_MAP =
00145 {
00146 {EXAMPLE_USART_SPI_SCK_PIN, EXAMPLE_USART_SPI_SCK_FUNCTION },
00147 {EXAMPLE_USART_SPI_MISO_PIN, EXAMPLE_USART_SPI_MISO_FUNCTION},
00148 {EXAMPLE_USART_SPI_MOSI_PIN, EXAMPLE_USART_SPI_MOSI_FUNCTION},
00149 {EXAMPLE_USART_SPI_NSS_PIN, EXAMPLE_USART_SPI_NSS_FUNCTION }
00150 };
00151
00152
00153 static const usart_options_t USART_OPTIONS =
00154 {
00155 .baudrate = 57600,
00156 .charlength = 8,
00157 .paritytype = USART_NO_PARITY,
00158 .stopbits = USART_1_STOPBIT,
00159 .channelmode = USART_NORMAL_CHMODE
00160 };
00161
00162
00163 static const usart_spi_options_t USART_SPI_OPTIONS =
00164 {
00165 .baudrate = 60000,
00166 .charlength = 8,
00167 .spimode = 0,
00168 .channelmode = USART_NORMAL_CHMODE
00169 };
00170
00171
00172 pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);
00173
00174
00175 gpio_enable_module(USART_GPIO_MAP,
00176 sizeof(USART_GPIO_MAP) / sizeof(USART_GPIO_MAP[0]));
00177
00178
00179 gpio_enable_module(USART_SPI_GPIO_MAP,
00180 sizeof(USART_SPI_GPIO_MAP) / sizeof(USART_SPI_GPIO_MAP[0]));
00181
00182
00183 usart_init_rs232(EXAMPLE_USART, &USART_OPTIONS, FOSC0);
00184
00185
00186 usart_init_spi_master(EXAMPLE_USART_SPI, &USART_SPI_OPTIONS, FOSC0);
00187
00188
00189 usart_write_line(EXAMPLE_USART, "Basic write in USART SPI Mode (press enter)\n");
00190
00191
00192 while (usart_get_echo_line(EXAMPLE_USART) == USART_FAILURE);
00193
00194 while (TRUE)
00195 {
00196 usart_spi_selectChip(EXAMPLE_USART_SPI);
00197 usart_putchar(EXAMPLE_USART_SPI, 0x55);
00198 usart_putchar(EXAMPLE_USART_SPI, 0xAA);
00199 usart_spi_unselectChip(EXAMPLE_USART_SPI);
00200 }
00201 }