00001
00086 #include "board.h"
00087 #include "print_funcs.h"
00088 #include "gpio.h"
00089 #include "power_clocks_lib.h"
00090 #include "adcifb.h"
00091
00092
00095
00096
00097 #define EXAMPLE_BATTERY_ADCIFB_PIN AT32UC3L_EK_VBAT_PIN
00098 #define EXAMPLE_BATTERY_ADCIFB_FUNCTION AT32UC3L_EK_VBAT_FUNCTION
00099 #define EXAMPLE_BATTERY_ADCIFB_CHANNEL_MASK AT32UC3L_EK_VBAT_ADC_CHANNEL
00101
00102
00104
00105 #define EXAMPLE_TARGET_DFLL_FREQ_HZ 96000000 // DFLL target frequency, in Hz
00106 #define EXAMPLE_TARGET_MCUCLK_FREQ_HZ 12000000 // MCU clock target frequency, in Hz
00107 #define EXAMPLE_TARGET_PBACLK_FREQ_HZ 12000000 // PBA clock target frequency, in Hz
00108 #define EXAMPLE_TARGET_CLK_ADC_FREQ_HZ 1500000 // Internal ADCIFB CLK_ADC clock frequency, in Hz
00110
00111
00113
00114 static scif_gclk_opt_t gc_dfllif_ref_opt = { SCIF_GCCTRL_SLOWCLOCK, 0, OFF};
00115 static pcl_freq_param_t pcl_dfll_freq_param =
00116 {
00117 .main_clk_src = PCL_MC_DFLL0,
00118 .cpu_f = EXAMPLE_TARGET_MCUCLK_FREQ_HZ,
00119 .pba_f = EXAMPLE_TARGET_PBACLK_FREQ_HZ,
00120 .pbb_f = EXAMPLE_TARGET_PBACLK_FREQ_HZ,
00121 .dfll_f = EXAMPLE_TARGET_DFLL_FREQ_HZ,
00122 .pextra_params = &gc_dfllif_ref_opt
00123 };
00125
00129 int main( void )
00130 {
00131 volatile int i;
00132
00133 static const gpio_map_t ADCIFB_GPIO_MAP =
00134 {
00135 {EXAMPLE_BATTERY_ADCIFB_PIN, EXAMPLE_BATTERY_ADCIFB_FUNCTION}
00136 };
00137 volatile avr32_adcifb_t *adcifb = &AVR32_ADCIFB;
00138
00139 adcifb_opt_t adcifb_opt = {
00140 .resolution = AVR32_ADCIFB_ACR_RES_12BIT,
00141 .shtim = 15,
00142 .ratio_clkadcifb_clkadc = EXAMPLE_TARGET_PBACLK_FREQ_HZ/EXAMPLE_TARGET_CLK_ADC_FREQ_HZ,
00143 .startup = 3,
00144 .sleep_mode_enable = FALSE
00145 };
00146 unsigned long int adc_data;
00147
00148
00149
00150
00151
00152 pcl_configure_clocks(&pcl_dfll_freq_param);
00153
00154
00155
00156
00157
00158
00159
00160 init_dbg_rs232(EXAMPLE_TARGET_PBACLK_FREQ_HZ);
00161
00162
00163 gpio_enable_module(ADCIFB_GPIO_MAP, sizeof(ADCIFB_GPIO_MAP) / sizeof(ADCIFB_GPIO_MAP[0]));
00164
00165
00166 if(PASS != adcifb_configure(adcifb, &adcifb_opt))
00167 {
00168
00169 while(1)
00170 {
00171 gpio_tgl_gpio_pin(LED0_GPIO);
00172 for(i=100000; i; i--);
00173 }
00174 }
00175
00176
00177 if(PASS != adcifb_configure_trigger( adcifb, AVR32_ADCIFB_TRGMOD_NT, 0 ))
00178 {
00179
00180 while(1)
00181 {
00182 gpio_tgl_gpio_pin(LED1_GPIO);
00183 for(i=10000; i; i--);
00184 }
00185 }
00186
00187
00188 adcifb_channels_enable( adcifb, EXAMPLE_BATTERY_ADCIFB_CHANNEL_MASK);
00189
00190
00191 for (;;)
00192 {
00193
00194 while(FALSE == adcifb_is_ready(adcifb));
00195
00196
00197 adcifb_start_conversion_sequence(adcifb);
00198
00199
00200 while(FALSE == adcifb_is_drdy(adcifb));
00201
00202
00203 adc_data = adcifb_get_last_data(adcifb);
00204
00205
00206 print_dbg("\x1B[2J\x1B[H\r\nADCIFB Example\r\nHEX Value for VBAT : 0x");
00207 print_dbg_hex(adc_data&AVR32_ADCIFB_LCDR_LDATA_MASK);
00208 print_dbg("\r\n");
00209
00210
00211
00212
00213
00214 }
00215 }