每次都重新初始化,设计是不合理的。SAM系列是支持ADC多通道扫描方式,ASF也支持,只是没有现成的例子。需要自己加代码。如下:
注意:
config_adc.pin_scan.offset_start_scan = 0;
config_adc.pin_scan.inputs_to_scan = 2;
第二句是扫描2个通道,第一句是扫描起始偏移量为零。
起始通道由下面这句确定。
config_adc.positive_input = ADC_POSITIVE_INPUT_PIN6;
- void configure_adc7(void)
- {
- //! [setup_config]
- struct adc_config config_adc;
- //! [setup_config]
- //! [setup_config_defaults]
- adc_get_config_defaults(&config_adc);
- //! [setup_config_defaults]
- //! [setup_modify_conf]
- config_adc.clock_source = GCLK_GENERATOR_3;
- config_adc.gain_factor = ADC_GAIN_FACTOR_1X;
- config_adc.clock_prescaler = ADC_CLOCK_PRESCALER_DIV8;
- config_adc.reference = ADC_REFCTRL_REFSEL_INT1V;
- config_adc.positive_input = ADC_POSITIVE_INPUT_PIN6;//ADC_POSITIVE_INPUT_TEMP;
- config_adc.resolution = ADC_RESOLUTION_12BIT;
-
- config_adc.pin_scan.offset_start_scan = 0;
- config_adc.pin_scan.inputs_to_scan = 2;
-
- //! [setup_modify_conf]
- //! [setup_set_config;
- adc_init(&adc_instance, ADC, &config_adc);
- //! [setup_set_config]
- //! [setup_enable]
- adc_enable(&adc_instance);
- //! [setup_enable]
- }
复制代码 |