SAM4SD32 (SAM4S-EK2)
Loading...
Searching...
No Matches
adc.h File Reference

Analog-to-Digital Converter (ADC/ADC12B) driver for SAM. More...

#include "compiler.h"

Go to the source code of this file.

Macros

#define ADC_FREQ_MAX   20000000
#define ADC_FREQ_MIN   1000000
#define ADC_STARTUP_FAST   12
#define ADC_STARTUP_NORM   40

Enumerations

enum  adc_channel_num_t {
  ADC_CHANNEL_0 = 0 ,
  ADC_CHANNEL_1 = 1 ,
  ADC_CHANNEL_2 = 2 ,
  ADC_CHANNEL_3 = 3 ,
  ADC_CHANNEL_4 = 4 ,
  ADC_CHANNEL_5 = 5 ,
  ADC_CHANNEL_6 = 6 ,
  ADC_CHANNEL_7 = 7 ,
  ADC_CHANNEL_8 = 8 ,
  ADC_CHANNEL_9 = 9 ,
  ADC_CHANNEL_10 = 10 ,
  ADC_CHANNEL_11 = 11 ,
  ADC_CHANNEL_12 = 12 ,
  ADC_CHANNEL_13 = 13 ,
  ADC_CHANNEL_14 = 14 ,
  ADC_TEMPERATURE_SENSOR = 15
}
enum  adc_gainvalue_t {
  ADC_GAINVALUE_0 = 0 ,
  ADC_GAINVALUE_1 = 1 ,
  ADC_GAINVALUE_2 = 2 ,
  ADC_GAINVALUE_3 = 3
}
enum  adc_resolution_t {
  ADC_10_BITS = ADC_MR_LOWRES_BITS_10 ,
  ADC_12_BITS = ADC_MR_LOWRES_BITS_12
}
enum  adc_settling_time_t {
  ADC_SETTLING_TIME_0 = ADC_MR_SETTLING_AST3 ,
  ADC_SETTLING_TIME_1 = ADC_MR_SETTLING_AST5 ,
  ADC_SETTLING_TIME_2 = ADC_MR_SETTLING_AST9 ,
  ADC_SETTLING_TIME_3 = ADC_MR_SETTLING_AST17
}
enum  adc_startup_time {
  ADC_STARTUP_TIME_0 = ADC_MR_STARTUP_SUT0 ,
  ADC_STARTUP_TIME_1 = ADC_MR_STARTUP_SUT8 ,
  ADC_STARTUP_TIME_2 = ADC_MR_STARTUP_SUT16 ,
  ADC_STARTUP_TIME_3 = ADC_MR_STARTUP_SUT24 ,
  ADC_STARTUP_TIME_4 = ADC_MR_STARTUP_SUT64 ,
  ADC_STARTUP_TIME_5 = ADC_MR_STARTUP_SUT80 ,
  ADC_STARTUP_TIME_6 = ADC_MR_STARTUP_SUT96 ,
  ADC_STARTUP_TIME_7 = ADC_MR_STARTUP_SUT112 ,
  ADC_STARTUP_TIME_8 = ADC_MR_STARTUP_SUT512 ,
  ADC_STARTUP_TIME_9 = ADC_MR_STARTUP_SUT576 ,
  ADC_STARTUP_TIME_10 = ADC_MR_STARTUP_SUT640 ,
  ADC_STARTUP_TIME_11 = ADC_MR_STARTUP_SUT704 ,
  ADC_STARTUP_TIME_12 = ADC_MR_STARTUP_SUT768 ,
  ADC_STARTUP_TIME_13 = ADC_MR_STARTUP_SUT832 ,
  ADC_STARTUP_TIME_14 = ADC_MR_STARTUP_SUT896 ,
  ADC_STARTUP_TIME_15 = ADC_MR_STARTUP_SUT960
}
 Definitions for ADC Start Up Time. More...
enum  adc_trigger_t {
  ADC_TRIG_SW = ADC_MR_TRGEN_DIS ,
  ADC_TRIG_EXT = ADC_MR_TRGSEL_ADC_TRIG0 | ADC_MR_TRGEN ,
  ADC_TRIG_TIO_CH_0 = ADC_MR_TRGSEL_ADC_TRIG1 | ADC_MR_TRGEN ,
  ADC_TRIG_TIO_CH_1 = ADC_MR_TRGSEL_ADC_TRIG2 | ADC_MR_TRGEN ,
  ADC_TRIG_TIO_CH_2 = ADC_MR_TRGSEL_ADC_TRIG3 | ADC_MR_TRGEN ,
  ADC_TRIG_PWM_EVENT_LINE_0 = ADC_MR_TRGSEL_ADC_TRIG4 | ADC_MR_TRGEN ,
  ADC_TRIG_PWM_EVENT_LINE_1 = ADC_MR_TRGSEL_ADC_TRIG5 | ADC_MR_TRGEN
}

Functions

void adc_check (Adc *p_adc, const uint32_t ul_mck)
 Check ADC configurations.
void adc_configure_power_save (Adc *p_adc, const uint8_t uc_sleep, const uint8_t uc_fwup)
 Configures ADC power saving mode.
void adc_configure_sequence (Adc *p_adc, const enum adc_channel_num_t ch_list[], const uint8_t uc_num)
 Configure conversion sequence.
void adc_configure_timing (Adc *p_adc, const uint8_t uc_tracking, const enum adc_settling_time_t settling, const uint8_t uc_transfer)
 Configure ADC timing.
void adc_configure_trigger (Adc *p_adc, const enum adc_trigger_t trigger, const uint8_t uc_freerun)
 Configure conversion trigger and free run mode.
void adc_disable_all_channel (Adc *p_adc)
 Disable all ADC channel.
void adc_disable_anch (Adc *p_adc)
 Disable analog change.
void adc_disable_channel (Adc *p_adc, const enum adc_channel_num_t adc_ch)
 Disable the specified ADC channel.
void adc_disable_channel_differential_input (Adc *p_adc, const enum adc_channel_num_t channel)
 Disable differential input for the specified channel.
void adc_disable_channel_input_offset (Adc *p_adc, const enum adc_channel_num_t channel)
 Disable analog signal offset for the specified channel.
void adc_disable_interrupt (Adc *p_adc, const uint32_t ul_source)
 Disable ADC interrupts.
void adc_disable_tag (Adc *p_adc)
 Disable TAG option.
void adc_disable_ts (Adc *p_adc)
 Turn off temperature sensor.
void adc_enable_all_channel (Adc *p_adc)
 Enable all ADC channels.
void adc_enable_anch (Adc *p_adc)
 Enable analog change.
void adc_enable_channel (Adc *p_adc, const enum adc_channel_num_t adc_ch)
 Enable the specified ADC channel.
void adc_enable_channel_differential_input (Adc *p_adc, const enum adc_channel_num_t channel)
 Enable differential input for the specified channel.
void adc_enable_channel_input_offset (Adc *p_adc, const enum adc_channel_num_t channel)
 Enable analog signal offset for the specified channel.
void adc_enable_interrupt (Adc *p_adc, const uint32_t ul_source)
 Enable ADC interrupts.
void adc_enable_tag (Adc *p_adc)
 Enable TAG option so that the number of the last converted channel can be indicated.
void adc_enable_ts (Adc *p_adc)
 Turn on temperature sensor.
uint32_t adc_get_actual_adc_clock (const Adc *p_adc, const uint32_t ul_mck)
 Return the actual ADC clock.
uint32_t adc_get_channel_status (const Adc *p_adc, const enum adc_channel_num_t adc_ch)
 Read the ADC channel status.
uint32_t adc_get_channel_value (const Adc *p_adc, const enum adc_channel_num_t adc_ch)
 Read the ADC result data of the specified channel.
uint32_t adc_get_comparison_mode (const Adc *p_adc)
 Get comparison mode.
uint32_t adc_get_interrupt_mask (const Adc *p_adc)
 Read ADC interrupt mask.
uint32_t adc_get_latest_value (const Adc *p_adc)
 Read the last ADC result data.
uint32_t adc_get_overrun_status (const Adc *p_adc)
 Get ADC interrupt and overrun error status.
Pdc * adc_get_pdc_base (const Adc *p_adc)
 Get PDC registers base address.
uint32_t adc_get_status (const Adc *p_adc)
 Get ADC interrupt and overrun error status.
enum adc_channel_num_t adc_get_tag (const Adc *p_adc)
 Indicate the last converted channel.
uint32_t adc_get_writeprotect_status (const Adc *p_adc)
 Indicate write protect status.
uint32_t adc_init (Adc *p_adc, const uint32_t ul_mck, const uint32_t ul_adc_clock, const enum adc_startup_time startup)
 Initialize the given ADC with the specified ADC clock and startup time.
void adc_reset (Adc *p_adc)
 Reset ADC.
void adc_set_bias_current (Adc *p_adc, const uint8_t uc_ibctl)
 Adapt performance versus power consumption.
void adc_set_calibmode (Adc *p_adc)
 Set ADC auto calibration mode.
void adc_set_channel_input_gain (Adc *p_adc, const enum adc_channel_num_t channel, const enum adc_gainvalue_t uc_gain)
 Configure input gain for the specified channel.
void adc_set_comparison_channel (Adc *p_adc, const enum adc_channel_num_t channel)
 Configure comparison selected channel.
void adc_set_comparison_mode (Adc *p_adc, const uint8_t uc_mode)
 Configure comparison mode.
void adc_set_comparison_window (Adc *p_adc, const uint16_t us_low_threshold, const uint16_t us_high_threshold)
 Configure ADC compare window.
void adc_set_resolution (Adc *p_adc, const enum adc_resolution_t resolution)
 Configure the conversion resolution.
void adc_set_writeprotect (Adc *p_adc, const uint32_t ul_enable)
 Enable or disable write protection of ADC registers.
void adc_start (Adc *p_adc)
 Start analog-to-digital conversion.
void adc_start_sequencer (Adc *p_adc)
 Enable conversion sequencer.
void adc_stop_sequencer (Adc *p_adc)
 Disable conversion sequencer.

Detailed Description

Analog-to-Digital Converter (ADC/ADC12B) driver for SAM.

Copyright (c) 2011-2018 Microchip Technology Inc. and its subsidiaries.

\cond ASF_LICENSE

Definition in file adc.h.

Macro Definition Documentation

◆ ADC_FREQ_MAX

#define ADC_FREQ_MAX   20000000

Definition at line 52 of file adc.h.

Referenced by adc_check().

◆ ADC_FREQ_MIN

#define ADC_FREQ_MIN   1000000

Definition at line 57 of file adc.h.

Referenced by adc_check().

◆ ADC_STARTUP_FAST

#define ADC_STARTUP_FAST   12

Definition at line 61 of file adc.h.

Referenced by adc_check().

◆ ADC_STARTUP_NORM

#define ADC_STARTUP_NORM   40

Definition at line 59 of file adc.h.

Referenced by adc_check().

Enumeration Type Documentation

◆ adc_channel_num_t

Enumerator
ADC_CHANNEL_0 
ADC_CHANNEL_1 
ADC_CHANNEL_2 
ADC_CHANNEL_3 
ADC_CHANNEL_4 
ADC_CHANNEL_5 
ADC_CHANNEL_6 
ADC_CHANNEL_7 
ADC_CHANNEL_8 
ADC_CHANNEL_9 
ADC_CHANNEL_10 
ADC_CHANNEL_11 
ADC_CHANNEL_12 
ADC_CHANNEL_13 
ADC_CHANNEL_14 
ADC_TEMPERATURE_SENSOR 

Definition at line 141 of file adc.h.

141 {
142 ADC_CHANNEL_0 = 0,
143 ADC_CHANNEL_1 = 1,
144 ADC_CHANNEL_2 = 2,
145 ADC_CHANNEL_3 = 3,
146 ADC_CHANNEL_4 = 4,
147 ADC_CHANNEL_5 = 5,
148 ADC_CHANNEL_6 = 6,
149#if SAM4C || SAM4CP || SAM4CM
151#else
152 ADC_CHANNEL_7 = 7,
153 ADC_CHANNEL_8 = 8,
154 ADC_CHANNEL_9 = 9,
155 ADC_CHANNEL_10 = 10,
156 ADC_CHANNEL_11 = 11,
157 ADC_CHANNEL_12 = 12,
158 ADC_CHANNEL_13 = 13,
159 ADC_CHANNEL_14 = 14,
161#endif
162};
@ ADC_CHANNEL_9
Definition adc.h:154
@ ADC_CHANNEL_1
Definition adc.h:143
@ ADC_CHANNEL_8
Definition adc.h:153
@ ADC_CHANNEL_4
Definition adc.h:146
@ ADC_CHANNEL_12
Definition adc.h:157
@ ADC_CHANNEL_0
Definition adc.h:142
@ ADC_CHANNEL_3
Definition adc.h:145
@ ADC_CHANNEL_14
Definition adc.h:159
@ ADC_CHANNEL_10
Definition adc.h:155
@ ADC_CHANNEL_13
Definition adc.h:158
@ ADC_CHANNEL_2
Definition adc.h:144
@ ADC_CHANNEL_6
Definition adc.h:148
@ ADC_TEMPERATURE_SENSOR
Definition adc.h:160
@ ADC_CHANNEL_7
Definition adc.h:152
@ ADC_CHANNEL_5
Definition adc.h:147
@ ADC_CHANNEL_11
Definition adc.h:156

◆ adc_gainvalue_t

Enumerator
ADC_GAINVALUE_0 
ADC_GAINVALUE_1 
ADC_GAINVALUE_2 
ADC_GAINVALUE_3 

Definition at line 178 of file adc.h.

178 {
179 ADC_GAINVALUE_0 = 0,
180 ADC_GAINVALUE_1 = 1,
181 ADC_GAINVALUE_2 = 2,
183};
@ ADC_GAINVALUE_3
Definition adc.h:182
@ ADC_GAINVALUE_0
Definition adc.h:179
@ ADC_GAINVALUE_2
Definition adc.h:181
@ ADC_GAINVALUE_1
Definition adc.h:180

◆ adc_resolution_t

Enumerator
ADC_10_BITS 
ADC_12_BITS 

Definition at line 65 of file adc.h.

65 {
66 ADC_10_BITS = ADC_MR_LOWRES_BITS_10, /* ADC 10-bit resolution */
67 ADC_12_BITS = ADC_MR_LOWRES_BITS_12 /* ADC 12-bit resolution */
68};
@ ADC_10_BITS
Definition adc.h:66
@ ADC_12_BITS
Definition adc.h:67
#define ADC_MR_LOWRES_BITS_12
(ADC_MR) 12-bit resolution
#define ADC_MR_LOWRES_BITS_10
(ADC_MR) 10-bit resolution

◆ adc_settling_time_t

Enumerator
ADC_SETTLING_TIME_0 
ADC_SETTLING_TIME_1 
ADC_SETTLING_TIME_2 
ADC_SETTLING_TIME_3 

Definition at line 187 of file adc.h.

187 {
192};
@ ADC_SETTLING_TIME_3
Definition adc.h:191
@ ADC_SETTLING_TIME_1
Definition adc.h:189
@ ADC_SETTLING_TIME_2
Definition adc.h:190
@ ADC_SETTLING_TIME_0
Definition adc.h:188
#define ADC_MR_SETTLING_AST9
(ADC_MR) 9 periods of ADCClock
#define ADC_MR_SETTLING_AST5
(ADC_MR) 5 periods of ADCClock
#define ADC_MR_SETTLING_AST3
(ADC_MR) 3 periods of ADCClock
#define ADC_MR_SETTLING_AST17
(ADC_MR) 17 periods of ADCClock

◆ adc_startup_time

Definitions for ADC Start Up Time.

Enumerator
ADC_STARTUP_TIME_0 
ADC_STARTUP_TIME_1 
ADC_STARTUP_TIME_2 
ADC_STARTUP_TIME_3 
ADC_STARTUP_TIME_4 
ADC_STARTUP_TIME_5 
ADC_STARTUP_TIME_6 
ADC_STARTUP_TIME_7 
ADC_STARTUP_TIME_8 
ADC_STARTUP_TIME_9 
ADC_STARTUP_TIME_10 
ADC_STARTUP_TIME_11 
ADC_STARTUP_TIME_12 
ADC_STARTUP_TIME_13 
ADC_STARTUP_TIME_14 
ADC_STARTUP_TIME_15 

Definition at line 197 of file adc.h.

197 {
214};
@ ADC_STARTUP_TIME_1
Definition adc.h:199
@ ADC_STARTUP_TIME_10
Definition adc.h:208
@ ADC_STARTUP_TIME_3
Definition adc.h:201
@ ADC_STARTUP_TIME_5
Definition adc.h:203
@ ADC_STARTUP_TIME_4
Definition adc.h:202
@ ADC_STARTUP_TIME_9
Definition adc.h:207
@ ADC_STARTUP_TIME_14
Definition adc.h:212
@ ADC_STARTUP_TIME_6
Definition adc.h:204
@ ADC_STARTUP_TIME_11
Definition adc.h:209
@ ADC_STARTUP_TIME_2
Definition adc.h:200
@ ADC_STARTUP_TIME_7
Definition adc.h:205
@ ADC_STARTUP_TIME_8
Definition adc.h:206
@ ADC_STARTUP_TIME_15
Definition adc.h:213
@ ADC_STARTUP_TIME_0
Definition adc.h:198
@ ADC_STARTUP_TIME_13
Definition adc.h:211
@ ADC_STARTUP_TIME_12
Definition adc.h:210
#define ADC_MR_STARTUP_SUT960
(ADC_MR) 960 periods of ADCClock
#define ADC_MR_STARTUP_SUT8
(ADC_MR) 8 periods of ADCClock
#define ADC_MR_STARTUP_SUT832
(ADC_MR) 832 periods of ADCClock
#define ADC_MR_STARTUP_SUT768
(ADC_MR) 768 periods of ADCClock
#define ADC_MR_STARTUP_SUT64
(ADC_MR) 64 periods of ADCClock
#define ADC_MR_STARTUP_SUT96
(ADC_MR) 96 periods of ADCClock
#define ADC_MR_STARTUP_SUT80
(ADC_MR) 80 periods of ADCClock
#define ADC_MR_STARTUP_SUT896
(ADC_MR) 896 periods of ADCClock
#define ADC_MR_STARTUP_SUT0
(ADC_MR) 0 periods of ADCClock
#define ADC_MR_STARTUP_SUT640
(ADC_MR) 640 periods of ADCClock
#define ADC_MR_STARTUP_SUT24
(ADC_MR) 24 periods of ADCClock
#define ADC_MR_STARTUP_SUT512
(ADC_MR) 512 periods of ADCClock
#define ADC_MR_STARTUP_SUT112
(ADC_MR) 112 periods of ADCClock
#define ADC_MR_STARTUP_SUT576
(ADC_MR) 576 periods of ADCClock
#define ADC_MR_STARTUP_SUT704
(ADC_MR) 704 periods of ADCClock
#define ADC_MR_STARTUP_SUT16
(ADC_MR) 16 periods of ADCClock

◆ adc_trigger_t

Enumerator
ADC_TRIG_SW 
ADC_TRIG_EXT 
ADC_TRIG_TIO_CH_0 
ADC_TRIG_TIO_CH_1 
ADC_TRIG_TIO_CH_2 
ADC_TRIG_PWM_EVENT_LINE_0 
ADC_TRIG_PWM_EVENT_LINE_1 

Definition at line 90 of file adc.h.

90 {
91 /* Starting a conversion is only possible by software. */
93 /* External trigger */
95 /* TIO Output of the Timer Counter Channel 0 */
97 /* TIO Output of the Timer Counter Channel 1 */
99 /* TIO Output of the Timer Counter Channel 2 */
101#if SAM4C || SAM4CP || SAM4CM
102 /* TIO Output of the Timer Counter Channel 3 */
103 ADC_TRIG_TIO_CH_3 = ADC_MR_TRGSEL_ADC_TRIG3 | ADC_MR_TRGEN,
104 /* TIO Output of the Timer Counter Channel 4 */
105 ADC_TRIG_TIO_CH_4 = ADC_MR_TRGSEL_ADC_TRIG4 | ADC_MR_TRGEN,
106 /* TIO Output of the Timer Counter Channel 5 */
107 ADC_TRIG_TIO_CH_5 = ADC_MR_TRGSEL_ADC_TRIG5 | ADC_MR_TRGEN,
108 /* TIO Output of the Timer Counter Channel 6 */
109 ADC_TRIG_TIO_CH_6 = ADC_MR_TRGSEL_ADC_TRIG6 | ADC_MR_TRGEN,
110#endif
111#if SAM3S || SAM4S || SAM3XA || SAM3U
112 /* PWM Event Line 0 */
114 /* PWM Event Line 1 */
116#endif
117};
@ ADC_TRIG_TIO_CH_0
Definition adc.h:96
@ ADC_TRIG_EXT
Definition adc.h:94
@ ADC_TRIG_SW
Definition adc.h:92
@ ADC_TRIG_TIO_CH_1
Definition adc.h:98
@ ADC_TRIG_PWM_EVENT_LINE_1
Definition adc.h:115
@ ADC_TRIG_PWM_EVENT_LINE_0
Definition adc.h:113
@ ADC_TRIG_TIO_CH_2
Definition adc.h:100
#define ADC_MR_TRGEN_DIS
(ADC_MR) Hardware triggers are disabled.
#define ADC_MR_TRGEN
(ADC_MR) Trigger Enable
#define ADC_MR_TRGSEL_ADC_TRIG4
(ADC_MR) PWM Event Line 0
#define ADC_MR_TRGSEL_ADC_TRIG3
(ADC_MR) TIO Output of the Timer Counter Channel 2
#define ADC_MR_TRGSEL_ADC_TRIG5
(ADC_MR) PWM Event Line 1
#define ADC_MR_TRGSEL_ADC_TRIG1
(ADC_MR) TIO Output of the Timer Counter Channel 0
#define ADC_MR_TRGSEL_ADC_TRIG2
(ADC_MR) TIO Output of the Timer Counter Channel 1
#define ADC_MR_TRGSEL_ADC_TRIG0
(ADC_MR) External trigger