18#ifndef LIBOPENCM3_SAM4L_ADCIFE_H
19#define LIBOPENCM3_SAM4L_ADCIFE_H
27#define ADCIFE_CR MMIO32(ADCIFE_BASE + 0x0000)
30#define ADCIFE_CFG MMIO32(ADCIFE_BASE + 0x0004)
33#define ADCIFE_SR MMIO32(ADCIFE_BASE + 0x008)
36#define ADCIFE_SCR MMIO32(ADCIFE_BASE + 0x000C)
39#define ADCIFE_SEQCFG MMIO32(ADCIFE_BASE + 0x0014)
42#define ADCIFE_CDMA MMIO32(ADCIFE_BASE + 0x0018)
45#define ADCIFE_TIM MMIO32(ADCIFE_BASE + 0x001C)
48#define ADCIFE_ITIMER MMIO32(ADCIFE_BASE + 0x0020)
51#define ADCIFE_WCFG MMIO32(ADCIFE_BASE + 0x0024)
54#define ADCIFE_WTH MMIO32(ADCIFE_BASE + 0x0028)
57#define ADCIFE_LCV MMIO32(ADCIFE_BASE + 0x002C)
60#define ADCIFE_IER MMIO32(ADCIFE_BASE + 0x0030)
63#define ADCIFE_IDR MMIO32(ADCIFE_BASE + 0x0034)
66#define ADCIFE_IMR MMIO32(ADCIFE_BASE + 0x0038)
69#define ADCIFE_CALIB MMIO32(ADCIFE_BASE + 0x003C)
72#define ADCIFE_VERSION MMIO32(ADCIFE_BASE + 0x0040)
75#define ADCIFE_PARAMETER MMIO32(ADCIFE_BASE + 0x0044)
79#define ADCIFE_CR_SWRST (1 << 0)
80#define ADCIFE_CR_TSTOP (1 << 1)
81#define ADCIFE_CR_TSTART (1 << 2)
82#define ADCIFE_CR_STRIG (1 << 3)
83#define ADCIFE_CR_REFBUFEN (1 << 4)
84#define ADCIFE_CR_REFBUFDIS (1 << 5)
85#define ADCIFE_CR_EN (1 << 8)
86#define ADCIFE_CR_DIS (1 << 9)
87#define ADCIFE_CR_BGREQEN (1 << 10)
88#define ADCIFE_CR_BGREQDIS (1 << 11)
90#define _MASKED_VALUE(V, S, M) (((V) << (S)) & (M))
92#define ADCIFE_CFG_REFSEL_SHIFT (1)
93#define ADCIFE_CFG_REFSEL_MASK (7 << ADCIFE_CFG_REFSEL_SHIFT)
94#define ADCIFE_CFG_REFSEL_MASKED(V) _MASKED_VALUE((V), ADCIFE_CFG_REFSEL_SHIFT, ADCIFE_CFG_REFSEL_MASK)
95#define ADCIFE_CFG_SPEED_SHIFT (4)
96#define ADCIFE_CFG_SPEED_MASK (3 << ADCIFE_CFG_SPEED_SHIFT)
97#define ADCIFE_CFG_SPEED_MASKED(V) _MASKED_VALUE((V), ADCIFE_CFG_SPEED_SHIFT, ADCIFE_CFG_SPEED_MASK)
98#define ADCIFE_CFG_CLKSEL (1 << 6)
99#define ADCIFE_CFG_PRESCAL_SHIFT (8)
100#define ADCIFE_CFG_PRESCAL_MASK (3 << ADCIFE_CFG_PRESCAL_SHIFT)
101#define ADCIFE_CFG_PRESCAL_MASKED(V) _MASKED_VALUE((V), ADCIFE_CFG_PRESCAL_SHIFT, ADCIFE_CFG_PRESCAL_MASK)
103#define ADCIFE_SR_SEOC (1 << 0)
104#define ADCIFE_SR_LOVR (1 << 1)
105#define ADCIFE_SR_WM (1 << 2)
106#define ADCIFE_SR_SMTRG (1 << 3)
107#define ADCIFE_SR_TTO (1 << 5)
108#define ADCIFE_SR_EN (1 << 24)
109#define ADCIFE_SR_TBUSY (1 << 25)
110#define ADCIFE_SR_SBUSY (1 << 26)
111#define ADCIFE_SR_CBUSY (1 << 27)
112#define ADCIFE_SR_REFBUF (1 << 28)
113#define ADCIFE_SR_BGREQ (1 << 30)
115#define ADCIFE_IR_SEOC (1 << 0)
116#define ADCIFE_IR_LOVR (1 << 1)
117#define ADCIFE_IR_WM (1 << 2)
118#define ADCIFE_IR_SMTRG (1 << 3)
119#define ADCIFE_IR_TTO (1 << 5)
121#define ADCIFE_SEQCFG_HWLA (1 << 0)
122#define ADCIFE_SEQCFG_BIPOLAR (1 << 2)
123#define ADCIFE_SEQCFG_GAIN_SHIFT (4)
124#define ADCIFE_SEQCFG_GAIN_MASK (7 << ADCIFE_SEQCFG_GAIN_SHIFT)
125#define ADCIFE_SEQCFG_GAIN_MASKED(V) _MASKED_VALUE((V), ADCIFE_SEQCFG_GAIN_SHIFT, ADCIFE_SEQCFG_GAIN_MASK)
126#define ADCIFE_SEQCFG_GCOMP (1 << 7)
127#define ADCIFE_SEQCFG_TRGSEL_SHIFT (8)
128#define ADCIFE_SEQCFG_TRGSEL_MASK (7 << ADCIFE_SEQCFG_TRGSEL_SHIFT)
129#define ADCIFE_SEQCFG_TRGSEL_MASKED(V) _MASKED_VALUE((V), ADCIFE_SEQCFG_TRGSEL_SHIFT, ADCIFE_SEQCFG_TRGSEL_MASK)
130#define ADCIFE_SEQCFG_RES (1 << 12)
131#define ADCIFE_SEQCFG_INTERNAL_SHIFT (14)
132#define ADCIFE_SEQCFG_INTERNAL_MASK (3 << ADCIFE_SEQCFG_INTERNAL_SHIFT)
133#define ADCIFE_SEQCFG_INTERNAL_MASKED(V) _MASKED_VALUE((V), ADCIFE_SEQCFG_INTERNAL_SHIFT, ADCIFE_SEQCFG_INTERNAL_MASK)
134#define ADCIFE_SEQCFG_MUXPOS_SHIFT (16)
135#define ADCIFE_SEQCFG_MUXPOS_MASK (0xf << ADCIFE_SEQCFG_MUXPOS_SHIFT)
136#define ADCIFE_SEQCFG_MUXPOS_MASKED(V) _MASKED_VALUE((V), ADCIFE_SEQCFG_MUXPOS_SHIFT, ADCIFE_SEQCFG_MUXPOS_MASK)
137#define ADCIFE_SEQCFG_MUXNEG_SHIFT (20)
138#define ADCIFE_SEQCFG_MUXNEG_MASK (7 << ADCIFE_SEQCFG_MUXNEG_SHIFT)
139#define ADCIFE_SEQCFG_MUXNEG_MASKED(V) _MASKED_VALUE((V), ADCIFE_SEQCFG_MUXNEG_SHIFT, ADCIFE_SEQCFG_MUXNEG_MASK)
140#define ADCIFE_SEQCFG_ZOOMRANGE_SHIFT (28)
141#define ADCIFE_SEQCFG_ZOOMRANGE_MASK (7 << ADCIFE_SEQCFG_ZOOMRANGE_SHIFT)
142#define ADCIFE_SEQCFG_ZOOMRANGE_MASKED(V) _MASKED_VALUE((V), ADCIFE_SEQCFG_ZOOMRANGE_SHIFT, ADCIFE_SEQCFG_ZOOMRANGE_MASK)
231#define lc_channel _lc_u._lc_s.channel
232#define lc_value _lc_u._lc_s.value
void adcife_enable_sync(void)
Enable ADC interface.
@ ADCIFE_RESOLUTION_12BITS
@ ADCIFE_RESOLUTION_8BITS
void adcife_set_bipolar(bool enable)
void adcife_timer_stop(void)
void adcife_set_left_adjust(bool enable)
struct adcife_lcv adcife_get_lcv(void)
void adcife_timer_start(void)
void adcife_set_resolution(enum adcife_resolution res)
void adcife_start_conversion(void)
@ ADCIFE_REFSEL_EXTERNAL1
@ ADCIFE_REFSEL_0_625xVCC
@ ADCIFE_REFSEL_EXTERNAL2
@ ADCIFE_REFSEL_INTERNAL1V
void adcife_select_trigger(enum adcife_trigger trig)
void adcife_disable_interrupts(uint32_t imask)
@ ADCIFE_TRIGGER_EXT_FALL
@ ADCIFE_TRIGGER_IADC_TMR
@ ADCIFE_TRIGGER_EXT_BOTH
#define ADCIFE_CFG_CLKSEL
void adcife_set_gain(enum adcife_gain gain)
void adcife_timer_set_timeout(uint16_t timeout)
void adcife_wait_conversion(void)
void adcife_select_channel(enum adcife_channel ad)
void adcife_enable_interrupts(uint32_t imask)
void adcife_configure(enum adcife_refsel ref, enum adcife_speed speed, enum adcife_clk clk, enum adcife_prescal prescal)
union adcife_lcv::@0 _lc_u
struct adcife_lcv::@0::@1 _lc_s