00001
00096 #include <avr32/io.h>
00097 #include "compiler.h"
00098 #include "board.h"
00099 #include "power_clocks_lib.h"
00100 #include "gpio.h"
00101 #include "usart.h"
00102
00103
00106
00107
00108 # define EXAMPLE_TARGET_PBACLK_FREQ_HZ FOSC0 // PBA clock target frequency, in Hz
00109
00110 #if BOARD == EVK1100
00111 # define EXAMPLE_USART (&AVR32_USART1)
00112 # define EXAMPLE_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
00113 # define EXAMPLE_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
00114 # define EXAMPLE_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
00115 # define EXAMPLE_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
00116 # define EXAMPLE_USART_CLOCK_MASK AVR32_USART1_CLK_PBA
00117 # define EXAMPLE_PDCA_CLOCK_HSB AVR32_PDCA_CLK_HSB
00118 # define EXAMPLE_PDCA_CLOCK_PB AVR32_PDCA_CLK_PBA
00119 #elif BOARD == EVK1101
00120 # define EXAMPLE_USART (&AVR32_USART1)
00121 # define EXAMPLE_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
00122 # define EXAMPLE_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
00123 # define EXAMPLE_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
00124 # define EXAMPLE_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
00125 # define EXAMPLE_USART_CLOCK_MASK AVR32_USART1_CLK_PBA
00126 # define EXAMPLE_PDCA_CLOCK_HSB AVR32_PDCA_CLK_HSB
00127 # define EXAMPLE_PDCA_CLOCK_PB AVR32_PDCA_CLK_PBA
00128 #elif BOARD == UC3C_EK
00129 # define EXAMPLE_USART (&AVR32_USART2)
00130 # define EXAMPLE_USART_RX_PIN AVR32_USART2_RXD_0_1_PIN
00131 # define EXAMPLE_USART_RX_FUNCTION AVR32_USART2_RXD_0_1_FUNCTION
00132 # define EXAMPLE_USART_TX_PIN AVR32_USART2_TXD_0_1_PIN
00133 # define EXAMPLE_USART_TX_FUNCTION AVR32_USART2_TXD_0_1_FUNCTION
00134 # define EXAMPLE_USART_CLOCK_MASK AVR32_USART2_CLK_PBA
00135 # define EXAMPLE_PDCA_CLOCK_HSB AVR32_PDCA_CLK_HSB
00136 # define EXAMPLE_PDCA_CLOCK_PB AVR32_PDCA_CLK_PBB
00137 #elif BOARD == EVK1104
00138 # define EXAMPLE_USART (&AVR32_USART1)
00139 # define EXAMPLE_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN
00140 # define EXAMPLE_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION
00141 # define EXAMPLE_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN
00142 # define EXAMPLE_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION
00143 # define EXAMPLE_USART_CLOCK_MASK AVR32_USART1_CLK_PBA
00144 # define EXAMPLE_PDCA_CLOCK_HSB AVR32_PDCA_CLK_HSB
00145 # define EXAMPLE_PDCA_CLOCK_PB AVR32_PDCA_CLK_PBA
00146 #elif BOARD == EVK1105
00147 # define EXAMPLE_USART (&AVR32_USART0)
00148 # define EXAMPLE_USART_RX_PIN AVR32_USART0_RXD_0_0_PIN
00149 # define EXAMPLE_USART_RX_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION
00150 # define EXAMPLE_USART_TX_PIN AVR32_USART0_TXD_0_0_PIN
00151 # define EXAMPLE_USART_TX_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION
00152 # define EXAMPLE_USART_CLOCK_MASK AVR32_USART0_CLK_PBA
00153 # define EXAMPLE_PDCA_CLOCK_HSB AVR32_PDCA_CLK_HSB
00154 # define EXAMPLE_PDCA_CLOCK_PB AVR32_PDCA_CLK_PBA
00155 #elif BOARD == STK600_RCUC3L0
00156 # define EXAMPLE_USART (&AVR32_USART1)
00157 # define EXAMPLE_USART_RX_PIN AVR32_USART1_RXD_0_1_PIN
00158 # define EXAMPLE_USART_RX_FUNCTION AVR32_USART1_RXD_0_1_FUNCTION
00159
00160 # define EXAMPLE_USART_TX_PIN AVR32_USART1_TXD_0_1_PIN
00161 # define EXAMPLE_USART_TX_FUNCTION AVR32_USART1_TXD_0_1_FUNCTION
00162
00163 # define EXAMPLE_USART_CLOCK_MASK AVR32_USART1_CLK_PBA
00164 # define EXAMPLE_PDCA_CLOCK_HSB AVR32_PDCA_CLK_HSB
00165 # define EXAMPLE_PDCA_CLOCK_PB AVR32_PDCA_CLK_PBA
00166 #elif BOARD == UC3L_EK
00167 # define EXAMPLE_USART (&AVR32_USART3)
00168 # define EXAMPLE_USART_RX_PIN AVR32_USART3_RXD_0_0_PIN
00169 # define EXAMPLE_USART_RX_FUNCTION AVR32_USART3_RXD_0_0_FUNCTION
00170 # define EXAMPLE_USART_TX_PIN AVR32_USART3_TXD_0_0_PIN
00171 # define EXAMPLE_USART_TX_FUNCTION AVR32_USART3_TXD_0_0_FUNCTION
00172 # define EXAMPLE_USART_CLOCK_MASK AVR32_USART3_CLK_PBA
00173 # define EXAMPLE_TARGET_DFLL_FREQ_HZ 96000000 // DFLL target frequency, in Hz
00174 # define EXAMPLE_TARGET_MCUCLK_FREQ_HZ 12000000 // MCU clock target frequency, in Hz
00175 # undef EXAMPLE_TARGET_PBACLK_FREQ_HZ
00176 # define EXAMPLE_TARGET_PBACLK_FREQ_HZ 12000000 // PBA clock target frequency, in Hz
00177 # define EXAMPLE_PDCA_CLOCK_HSB AVR32_PDCA_CLK_HSB
00178 # define EXAMPLE_PDCA_CLOCK_PB AVR32_PDCA_CLK_PBA
00179 #endif
00180
00181 #if !defined(EXAMPLE_USART) || \
00182 !defined(EXAMPLE_USART_RX_PIN) || \
00183 !defined(EXAMPLE_USART_RX_FUNCTION) || \
00184 !defined(EXAMPLE_USART_TX_PIN) || \
00185 !defined(EXAMPLE_USART_TX_FUNCTION)
00186 # error The USART configuration to use in this example is missing.
00187 #endif
00188
00190
00191
00192 #if BOARD == UC3L_EK
00193
00195
00196 static scif_gclk_opt_t gc_dfllif_ref_opt = { SCIF_GCCTRL_SLOWCLOCK, 0, OFF };
00197 static pcl_freq_param_t pcl_dfll_freq_param =
00198 {
00199 .main_clk_src = PCL_MC_DFLL0,
00200 .cpu_f = EXAMPLE_TARGET_MCUCLK_FREQ_HZ,
00201 .pba_f = EXAMPLE_TARGET_PBACLK_FREQ_HZ,
00202 .pbb_f = EXAMPLE_TARGET_PBACLK_FREQ_HZ,
00203 .dfll_f = EXAMPLE_TARGET_DFLL_FREQ_HZ,
00204 .pextra_params = &gc_dfllif_ref_opt
00205 };
00207 #endif
00208
00212 int main(void)
00213 {
00214 static const gpio_map_t USART_GPIO_MAP =
00215 {
00216 {EXAMPLE_USART_RX_PIN, EXAMPLE_USART_RX_FUNCTION},
00217 {EXAMPLE_USART_TX_PIN, EXAMPLE_USART_TX_FUNCTION}
00218 };
00219
00220
00221 static const usart_options_t USART_OPTIONS =
00222 {
00223 .baudrate = 57600,
00224 .charlength = 8,
00225 .paritytype = USART_NO_PARITY,
00226 .stopbits = USART_1_STOPBIT,
00227 .channelmode = USART_NORMAL_CHMODE
00228 };
00229
00230
00231 #if BOARD == UC3L_EK
00232
00233
00234
00235 pcl_configure_clocks(&pcl_dfll_freq_param);
00236
00237
00238
00239
00240
00241 #else
00242
00243
00244
00245 pcl_switch_to_osc(PCL_OSC0, FOSC0, OSC0_STARTUP);
00246 #endif
00247
00248
00249 gpio_enable_module(USART_GPIO_MAP,
00250 sizeof(USART_GPIO_MAP) / sizeof(USART_GPIO_MAP[0]));
00251
00252
00253 usart_init_rs232(EXAMPLE_USART, &USART_OPTIONS, EXAMPLE_TARGET_PBACLK_FREQ_HZ);
00254
00255
00256 usart_write_line(EXAMPLE_USART, "Hello, this is AT32UC3 saying hello! (press enter)\n");
00257
00258
00259 while (usart_get_echo_line(EXAMPLE_USART) == USART_FAILURE);
00260
00261 usart_write_line(EXAMPLE_USART, "Goodbye.\n");
00262
00263
00264
00265
00266
00267
00268
00269 while(!usart_tx_empty(EXAMPLE_USART));
00270 pcl_disable_module(EXAMPLE_USART_CLOCK_MASK);
00271
00272
00273
00274 pcl_disable_module(EXAMPLE_PDCA_CLOCK_HSB);
00275 pcl_disable_module(EXAMPLE_PDCA_CLOCK_PB);
00276
00277
00278
00279
00280 AVR32_INTC.ipr[0];
00281
00282
00283 SLEEP(AVR32_PM_SMODE_STATIC);
00284
00285 while (TRUE);
00286 }