Component - Sequencing SAR ADC V2.0.pdf

PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC
(ADC_SAR_Seq)
2.0
Features
 Supports PSoC 5LP devices
 Selectable resolution (8, 10 or 12 bit) and sample rate
(up to 1 Msps)

Scans up to 64 single ended or 32 differential channels
automatically, or just a single input
Note Only GPIOs can be connected to the channel inputs. The
actual maximum number of input channels depends on the
number of routable analog GPIOs available on a specific PSoC
part and package.
General Description
The Sequencing SAR ADC component enables makes it possible for you to configure and then
use the different operational modes of the SAR ADC on PSoC 5LP. You also have schematic
level and firmware level support for seamless use of the Sequencing SAR ADC in PSoC Creator
designs and projects. You are able to configure multiple analog channels that are automatically
scanned with the results placed in individual SRAM locations.
When to Use the ADC_SAR_Seq
The Sequencing SAR ADC is commonly used in high sample rate systems where multiple
channels must be sampled without CPU intervention until all channels are sampled.
Cypress Semiconductor Corporation • 198 Champion Court • San Jose, CA 95134-1709 • 408-943-2600
Document Number: 001-96232 Rev. *C
Revised December 16, 2015
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
PSoC® Creator™ Component Datasheet
Input/Output Connections
This section describes the input and output connections for the ADC_SAR_Seq. An asterisk (*)
in the list of I/Os indicates that the I/O may be hidden on the symbol under the conditions listed
in the description of that I/O.
Differential Inputs
Single-ended inputs
Differential inputs – 1 channel
(sdone is visible)
+Input – Analog
This input is the positive analog signal input to the ADC_SAR_Seq. The conversion result is a
function of the +Input signal minus the voltage reference. The voltage reference is either the
Input signal or VSSA.
–Input – Analog *
When shown, this optional input is the negative analog signal (or reference) input to the
ADC_SAR_Seq. The conversion result is a function of +Input minus –Input. You see this pin
when you set the Input Range parameter to one of the differential modes.
vdac_ref – Input *
The VDAC reference (vdac_ref) is an optional pin. To see it, select Vssa to VDAC*2 (Single
Ended) or 0.0 +/- VDAC (Differential) input range; otherwise, this I/O is hidden.
Note You can only connect this pin to a VDAC component output. Do not connect it to any other
signal.
soc – Input *
The start of conversion (soc) is an optional pin. You see it if you select the Hardware trigger
sample mode. A rising edge on this input starts an ADC conversion. The first soc rising edge
should be generated at least 10 us after the component is started to guarantee reference and
Page 2 of 23
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
pump voltage stability. You can connect the output of a PWM component to this input. It can also
be connected to any GPIO pin or a UDB. This signal should be synchronized to the
ADC_SAR_Seq clock and must be at least one ADC_SAR_Seq clock cycle wide.
This input is hidden if you set the Sample Mode parameter to Free-running or Software
trigger.
aclk – Input *
You see this optional pin if you set the Clock Source parameter to External; otherwise, the pin
is hidden. This clock determines the conversion rate as a function of the conversion method and
resolution.
eoc – Output
A rising edge on the end of conversion (eoc) output means that one conversion cycle is
complete. At this moment, conversion results for all channels are ready to be read from the
SRAM. An internal interrupt is also connected to this signal, or you may connect your own
interrupt.
sdone – Output *
A rising edge on this output means that sampling is complete. This is a direct connection from
EOS output of the ADC SAR component. This signal is only visible when the component is
configured for one channel operation.
Document Number: 001-96232 Rev. *C
Page 3 of 23
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
PSoC® Creator™ Component Datasheet
Component Parameters
Drag an ADC_SAR_Seq component onto your design and double-click it to open the Configure
dialog.
The ADC_SAR_Seq has the following parameters. The option shown in bold is the default.
Timing
Resolution (bits)
Sets the resolution of the ADC_SAR_Seq.
Resolution
Description
12
Sets resolution to 12 bits
10
Sets resolution to 10 bits
8
Sets resolution to 8 bits
Sample Rate (SPS)
This parameter shows the sample rate in samples per second (SPS) for all channels. It is
automatically calculated based on the clock frequency and number of channels. Channel Sample
Rate is shown near the Channels numeric up-down control.
The actual sample rate may differ based on the available clock speed and divider range. It is
shown on the right side from selected sample rate.
Page 4 of 23
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
The actual sample rate also depends on a sample mode and availability of the data bus for DMA
transfer. Refer to the Functional Description section for details on how to calculate the number of
clocks required for sampling.
Clock Frequency (kHz)
This text box is read-only by default (always grayed out) that displays the required clock rate for
the selected operating conditions: resolution and conversion rate. It is updated when either or
both of these conditions change. It can be changed if Clock Source is set to Internal. Clock
frequency can be anywhere between 1 MHz and 18 MHz. The duty cycle should be 50 percent.
Make the minimum pulse width greater than 25.5 ns. PSoC Creator generates an error during
the build process if the clock does not fall within these limits. In there is an error, change the
Master Clock in the Design-Wide Resources Clock Editor.
Sample mode
This parameter determines how the ADC operates.
SampleMode
Description
Free Running
ADC_SAR_Seq runs continuously. Use the ADC_SAR_Seq_StartConvert() function to
start and the ADC_SAR_Seq_StopConvert() function to stop continuous conversions.
Software trigger
Calling of the ADC_SAR_Seq_StartConvert() starts a single cycle of conversion for all
channels
Hardware trigger
A rising-edge pulse on the SOC pin starts a single cycle of conversion for all channels
Input
Input Range
This parameter configures the ADC for a given input range. The analog signals connected to the
PSoC must be between VSSA and VDDA regardless of the input range settings.
InputRange
0.0 to 2.048V (Single Ended)
0 to Vref*2
Description
When using the internal reference (1.024 V), the usable input range is 0.0 to
2.048 V. The ADC is configured to operate in a single-ended input mode with
–Input connected internally to Vrefhi_out. If you are using an external reference
voltage, the usable input range is 0.0 to Vref*2.
Vssa to Vdda (Single Ended)
This mode uses the VDDA/2 reference; the usable input range covers the full
analog supply voltage. The ADC is put in a single-ended input mode with –Input
connected internally to Vrefhi_out. If you are using an external reference
voltage, the usable input range is 0.0 to Vref*2.
Vssa to VDAC*2 (Single Ended)
This mode uses the VDAC reference, which should be connected to the
vdac_ref pin. The usable input range is Vssa to VDAC*2 volts. The ADC is
configured to operate in a single-ended input mode with –Input connected
internally to Vrefhi_out.
Document Number: 001-96232 Rev. *C
Page 5 of 23
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
InputRange
0.0 ± 1.024V (Differential)
–Input ± Vref
PSoC® Creator™ Component Datasheet
Description
This mode is configured for differential inputs. When using the internal
reference (1.024 V), the input range is –Input ± 1.024 V.
For example, if –Input is connected to 2.048 V, the usable input range is 2.048
± 1.024 V or 1.024 to 3.072 V. For systems in which both single-ended and
differential signals are scanned, connect –Input to Vssa when scanning a
single-ended input.
You can use an external reference to provide a wider operating range. You can
calculate the usable input range with the same equation, –Input ± Vref.
0.0 ± Vdda (Differential)
–Input ± Vdda
0.0 ± Vdda/2 (Differential)
–Input ± Vdda/2
0.0 ± VDAC (Differential)
–Input ± VDAC
This mode is configured for differential inputs and is ratiometric with the supply
voltage. The input range is –Input ± Vdda. For systems in which both singleended and differential signals are scanned, connect –Input to Vssa when
scanning a single-ended input. If you are using an external reference voltage,
the usable input range is –Input ± Vref.
This mode is configured for differential inputs and is ratiometric to the supply
voltage. The input range is –Input ± Vdda/2. For systems in which both singleended and differential signals are scanned, connect –Input to Vssa when
scanning a single-ended input. If you are using an external reference voltage,
the usable input range is –Input ± Vref.
This mode is configured for differential inputs and uses the VDAC reference,
which should be connected to the vdac_ref pin. The input range is
–Input ±VDAC. For systems in which both single-ended and differential signals
are scanned, connect –Input to Vssa when scanning a single-ended input.
Reference
This parameter selects the switches for reference configuration for the ADC_SAR.
ADC_Reference
Allowed Clock
Frequency (MHz)
Internal Vref
1 ~ 1.6 MHz
Description
Uses the internal reference. This clock frequency range is valid with all
input ranges except “0.0 ± Vdda”.
Uses the Internal Vref, bypassed option for higher clock frequency.
1
1 ~ 9 MHz
Uses the internal reference. This clock frequency range is valid with “0.0 ±
Vdda” input range.
Internal Vref,
bypassed
1 ~ 18 MHz
Uses the internal reference. You must place a bypass capacitor on pin
P0[2] [1] for SAR1 or on pin P0[4] [1] for SAR0. This mode is not applicable
with “0.0 ± Vdda” input range.
External Vref
1 ~ 18 MHz
Uses an external reference on pin P0[2] for SAR1 or on pin P0[4] for
SAR0.
The use of an external bypass capacitor is recommended if the internal noise caused by digital switching
exceeds an application's analog performance requirements. To use this option, configure either port pin P0[2] or
P0[4] as an analog HI-Z pin and connect an external capacitor with a value between 0.01 µF and 10 µF.
Page 6 of 23
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
Note The same internal reference is used for ADC_SAR and for ADC_DelSig components. If
both types of the ADC need to work with an internal reference simultaneously, use the Internal
Vref, bypassed option for the best performance.
Voltage Reference
The voltage reference is used for the ADC count to voltage conversion functions that is
discussed in the Application Programming Interface section. This parameter is read-only when
using the internal reference. When using an external reference, change this value to match the
external reference voltage.


When selecting input range Vssa to Vdda, -Input +/- Vdda, or -Input +/- Vdda/2, the
value is derived from the VDDA setting in System tab of the Design Wide Resources
(DWR).
When selecting the input range Vssa to VDAC*2 or –Input +/- VDAC, type the VDAC
supply voltage value.
Note The input range and reference voltage is limited by the VDDA voltage.
Clock Source
This parameter allows you to select either a clock that is internal to the ADC_SAR_Seq module
or an external clock.
ADC_Clock
Description
Internal
Use the internal clock of the ADC_SAR_Seq
External
Use an external clock. The clock source can be analog, digital, or generated by
another component.
Document Number: 001-96232 Rev. *C
Page 7 of 23
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
PSoC® Creator™ Component Datasheet
Application Programming Interface
Application Programming Interface (API) routines allow you to configure the component using
software. This table lists and describes the interface to each function. The following sections
discuss each function in more detail.
By default, PSoC Creator assigns the instance name “ ADC_SAR_Seq_1” to the first instance of
a component in a given design. You can rename the instance to any unique value that follows
the syntactic rules for identifiers. The instance name becomes the prefix of every global function
name, variable, and constant symbol. For readability, the instance name used in the following
table is “ADC_SAR_Seq”.
Functions
Function
Description
ADC_SAR_Seq_Start()
Powers up the ADC_SAR_Seq and resets all states
ADC_SAR_Seq_Stop()
Stops ADC_SAR_Seq conversions and reduces the power to the minimum
ADC_SAR_Seq_SetResolution()
Sets the resolution of the ADC_SAR_Seq
ADC_SAR_Seq_StartConvert()
Starts conversions
ADC_SAR_Seq_StopConvert()
Stops conversions
ADC_SAR_Seq_IRQ_Enable()
An internal IRQ is connected to the eoc. This API enables the internal ISR
ADC_SAR_Seq_IRQ_Disable()
An internal IRQ is connected to the eoc. This API disables the internal ISR
ADC_SAR_Seq_IsEndConversion()
Returns a nonzero value if conversion is complete
ADC_SAR_Seq_GetAdcResult()
Returns a signed 16-bit conversion result available in the ADC SAR Data
Register not the result buffer
ADC_SAR_Seq_GetResult16()
Returns a signed16-bit conversion result for specified channel
ADC_SAR_Seq_SetOffset()
Sets the offset of the ADC_SAR_Seq
ADC_SAR_Seq_SetScaledGain()
Sets the ADC_SAR_Seq gain in counts per 10 volts
ADC_SAR_Seq _CountsTo_Volts()
Converts ADC_SAR_Seq counts to floating-point volts
ADC_SAR_Seq_CountsTo_mVolts() Converts ADC_SAR_Seq counts to millivolts
ADC_SAR_Seq_CountsTo_uVolts()
Converts ADC_SAR_Seq counts to microvolts
ADC_SAR_Seq_Sleep()
Stops ADC_SAR_Seq operation and saves the user configuration
ADC_SAR_Seq_Wakeup()
Restores and enables the user configuration
ADC_SAR_Seq_Init()
Initializes the default configuration provided with the customizer
ADC_SAR_Seq_Enable()
Enables the clock and power for the ADC_SAR_Seq
ADC_SAR_Seq_SaveConfig()
Saves the current user configuration
ADC_SAR_Seq_RestoreConfig()
Restores the user configuration
Page 8 of 23
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
void ADC_SAR_Seq_Start(void)
Description:
This is the preferred method to begin component operation. ADC_SAR_Seq_Start() sets the
initVar variable, calls the ADC_SAR_Seq _Init() function, and then calls the
ADC_SAR_Seq_Enable() function. It is not recommended to call this API a second time
without stopping the component first.
Parameters:
None
Return Value:
None
Side Effects:
If the initVar variable is already set, this function only calls the ADC_SAR_Seq_Enable()
function.
void ADC_SAR_Seq_Stop(void)
Description:
Stops ADC_SAR_Seq conversions and reduces the power to the minimum.
Note This API does not power down the ADC, but reduces power to a minimum level. This
device has a defect that causes connections to several analog resources to be unreliable
when the device is not powered. The unreliability manifests itself in silent failures (for
example, unpredictable bad results from analog components) when the component using
that resource is stopped.
Parameters:
None
Return Value:
None
Side Effects:
None
Document Number: 001-96232 Rev. *C
Page 9 of 23
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
void ADC_SAR_Seq_SetResolution(uint8 resolution)
Description:
Sets the resolution for the GetResult16() and GetAdcResult() APIs.
Parameters:
uint8 resolution: Resolution setting
Parameters Name
Value
Description
ADC_SAR_Seq_ADC_BITS_12
12
Sets resolution to 12 bits.
ADC_SAR_Seq_ADC_BITS_10
10
Sets resolution to 10 bits.
ADC_SAR_Seq_ADC_BITS_8
8
Sets resolution to 8 bits.
Return Value:
None
Side Effects:
You cannot change the ADC resolution during a conversion cycle. The recommended best
practice is to stop conversions with ADC_SAR_SeqStopConvert(), change the resolution,
then restart the conversions with ADC_SAR_Seq_StartConvert().
If you decide not to stop conversions before calling this API, use
ADC_SAR_Seq_IsEndConversion() to wait until conversion is complete before changing the
resolution.
If you call ADC_SAR_Seq_SetResolution() during a conversion, the resolution does not
change until the current conversion is complete. Data will not be available in the new
resolution for another 6 + “New Resolution(in bits)” clock cycles. You may need add a delay
of this number of clock cycles after ADC_SAR_Seq_SetResolution() is called before data is
valid again.
Affects ADC_SAR_Seq_CountsTo_Volts(), ADC_SAR_Seq_CountsTo_mVolts(), and
ADC_SAR_Seq_CountsTo_uVolts() by calculating the correct conversion between
ADC_SAR_Seq counts and the applied input voltage. Calculation depends on resolution,
input range, and voltage reference.
void ADC_SAR_Seq_StartConvert(void)
Description:
This forces the ADC to initiate a conversion. In free-running mode, the ADC_SAR_Seq runs
continuously. In software trigger mode, the function also acts as a software version of the
SOC and every conversion must be triggered by ADC_SAR_Seq_StartConvert(). In
Hardware trigger mode this function is unavailable.
Parameters:
None
Return Value:
None
Side Effects:
Calling ADC_SAR_Seq_StartConvert() disables the external SOC pin.
Page 10 of 23
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
void ADC_SAR_Seq_StopConvert(void)
Description:
This forces the ADC_SAR_Seq to stop conversions. If a conversion is currently executing,
that conversion completes, but no further conversions happen. This only applies to freerunning mode.
Parameters:
None
Return Value:
None
Side Effects:
In free-running and software trigger mode, this function sets a software version of the SOC
to low level and switches the SOC source to hardware SOC input (Hardware trigger).
void ADC_SAR_Seq_IRQ_Enable(void)
Description:
This enables interrupts to occur at the end of a conversion. Global interrupts must also be
enabled for the ADC interrupts to occur. To enable global interrupts, call the enable global
interrupt macro “CyGlobalIntEnable;” in your main.c file before enabling any interrupts.
Parameters:
None
Return Value:
None
Side Effects:
Enables interrupts to occur. Reading the result clears the interrupt.
void ADC_SAR_Seq_IRQ_Disable(void)
Description:
Disables interrupts at the end of a conversion.
Parameters:
None
Return Value:
None
Side Effects:
None
Document Number: 001-96232 Rev. *C
Page 11 of 23
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
uint32 ADC_SAR_Seq_IsEndConversion(uint8 retMode)
Description:
Immediately returns the status of the conversion or does not return (blocking) until the
conversion completes, depending on the retMode parameter.
Parameters:
uint8 retMode: Check conversion return mode. This table describes the available options.
Options
ADC_SAR_Seq_RETURN_STATUS
Description
Immediately returns the status. If the value
returned is zero, the conversion is
incomplete, and this function should be
retried until a nonzero result is returned.
ADC_SAR_Seq_WAIT_FOR_RESULT Does not return a result until the
ADC_SAR_Seq conversion is complete.
Return Value:
uint32: If a nonzero value is returned, the last conversion is complete. If the returned value is
zero, the ADC_SAR_Seq is still calculating the last result.
Side Effects:
This function reads the end of conversion status, which is cleared on read.
int16 ADC_SAR_Seq_GetAdcResult(void)
Description:
Gets the data available in the SAR DATA register, not the results buffer.
Parameters:
None
Return Value:
int16: The last ADC conversion result.
Side Effects:
Converts the ADC counts to the 2’s complement form.
int16 ADC_SAR_Seq_GetResult16(uint16 chan)
Description:
Returns the conversion result for channel “chan”.
Parameters:
uint16 chan: The ADC channel in which to return the result. The first channel is 0 and the
last channel is the total number of channels – 1.
Return Value:
int16: Returns converted data as a signed 16-bit integer
Side Effects:
Converts the ADC counts to the 2’s complement form.
Page 12 of 23
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
void ADC_SAR_Seq_SetOffset(int32 offset)
Description:
Sets the ADC_SAR_Seq offset, which is used by ADC_SAR_Seq_CountsTo_Volts(),
ADC_SAR_Seq_CountsTo_mVolts(), and ADC_SAR_Seq_CountsTo_uVolts(), to
subtract the offset from the given reading before calculating the voltage conversion.
Parameters:
int32 offset: This value is measured when the inputs are shorted or connected to the
same input voltage.
Return Value:
None
Side Effects:
Affects ADC_SAR_Seq_CountsTo_Volts(), ADC_SAR_Seq_CountsTo_mVolts(), and
ADC_SAR_Seq_CountsTo_uVolts() by subtracting the given offset.
void ADC_SAR_Seq_SetScaledGain(int32 adcGain)
Description:
Sets the ADC_SAR_Seq gain in counts per 10 volts for the voltage conversion functions
that follow. This value is set by default by the reference and input range settings. It should
only be used to further calibrate the ADC_SAR_Seq with a known input or if the
ADC_SAR_Seq is using an external reference. To calibrate the gain, supply close to
reference voltage to ADC inputs and measure it by multimeter. Calculate the gain coefficient
using following formula.
adcGain 
counts 10
Vmeasured
Where the counts is returned from ADC_SAR_Seq_GetResult16() value, Vmeasued –
measured by multimeter voltage in volts.
Parameters:
int32 adcGain: ADC_SAR_Seq gain in counts per 10 volts
Return Value:
None
Side Effects:
Affects ADC_SAR_Seq_CountsTo_Volts(), ADC_SAR_Seq_CountsTo_mVolts(),
ADC_SAR_Seq_CountsTo_uVolts() by supplying the correct conversion between ADC
counts and the applied input voltage.
float32 ADC_SAR_Seq_CountsTo_Volts(int16 adcCounts)
Description:
Converts the ADC_SAR_Seq output to volts as a floating-point number. For example, if the
ADC_SAR_Seq measured 0.534 volts, the return value would be 0.534. The calculation of
voltage depends on the value of the voltage reference. When the Vref is based on Vdda, the
value used for Vdda is set for the project in the System tab of the Design Wide Resources
(DWR).
Parameters:
int16 adcCounts: Result from the ADC_SAR_Seq conversion
Return Value:
float32: Result in volts
Side Effects:
None
Document Number: 001-96232 Rev. *C
Page 13 of 23
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
PSoC® Creator™ Component Datasheet
int32 ADC_SAR_Seq_CountsTo_mVolts(int16 adcCounts)
Description:
Converts the ADC_SAR_Seq output to millivolts as a 32-bit integer. For example, if the
ADC_SAR_Seq measured 0.534 volts, the return value would be 534. The calculation of
voltage depends on the value of the voltage reference. When the Vref is based on Vdda, the
value used for Vdda is set for the project in the System tab of the Design Wide Resources
(DWR).
Parameters:
Int32 adcCounts: Result from the ADC_SAR_Seq conversion
Return Value:
int32: Result in mV
Side Effects:
None
int32 ADC_SAR_Seq_CountsTo_uVolts(int16 adcCounts)
Description:
Converts the ADC_SAR_Seq output to microvolts as a 32-bit integer. For example, if the
ADC_SAR_Seq measured 0.534 volts, the return value would be 534000. The calculation of
voltage depends on the value of the voltage reference. When the Vref is based on Vdda, the
value used for Vdda is set for the project in the System tab of the Design Wide Resources
(DWR).
Parameters:
int16 adcCounts: Result from the ADC conversion
Return Value:
int32: Result in µV
Side Effects:
None
void ADC_SAR_Seq_Sleep(void)
Description:
This is the preferred routine to prepare the component for sleep. The
ADC_SAR_Seq_Sleep() routine saves the current component state. Then it calls the
ADC_SAR_Seq_Stop() function and calls ADC_SAR_Seq_SaveConfig() to save the
hardware configuration.
Call the ADC_SAR_Seq_Sleep() function before calling the CyPmSleep() or the
CyPmHibernate() function. See the PSoC Creator System Reference Guide for more
information about power-management functions.
Parameters:
None
Return Value:
None
Side Effects:
None
Page 14 of 23
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
void ADC_SAR_Seq_Wakeup(void)
Description:
This is the preferred routine to restore the component to the state when
ADC_SAR_Seq_Sleep() was called. The ADC_SAR_Seq_Wakeup() function calls the
ADC_SAR_Seq_RestoreConfig() function to restore the configuration. If the component was
enabled before the ADC_SAR_Seq_Sleep() function was called, the
ADC_SAR_Seq_Wakeup() function also re-enables the component.
Parameters:
None
Return Value:
None
Side Effects:
Calling the ADC_SAR_Seq_Wakeup() function without first calling the ADC_Sleep() or
ADC_SAR_Seq_SaveConfig() function can produce unexpected behavior.
void ADC_SAR_Seq_Init(void)
Description:
Initializes or restores the component according to the customizer Configure dialog
settings. It is not necessary to call ADC_SAR_Seq_Init() because the
ADC_SAR_Seq_Start() routine calls this function and is the preferred method to
begin component operation.
Parameters:
None
Return Value: None
Side Effects:
All registers will be set to values according to the customizer Configure dialog.
void ADC_SAR_Seq_Enable(void)
Description:
Activates the hardware and begins component operation. It is not necessary to call
ADC_SAR_Seq_Enable() because the ADC_SAR_Seq_Start() routine calls this function,
which is the preferred method to begin component operation. It is not recommended to call
this API a second time without stopping the component first.
Parameters:
None
Return Value: None
Side Effects:
None
Document Number: 001-96232 Rev. *C
Page 15 of 23
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
PSoC® Creator™ Component Datasheet
void ADC_SAR_Seq_SaveConfig(void)
Description:
This function saves the component configuration and nonretention registers. It also saves
the current component parameter values, as defined in the Configure dialog or as modified
by the appropriate APIs. This function is called by the ADC_SAR_Seq_Sleep() function.
Parameters:
None
Return Value:
None
Side Effects:
All ADC_SAR_Seq configuration registers are retained. This function does not have an
implementation and is meant for future use. It is shown here so that the APIs are consistent
across components.
void ADC_SAR_Seq_RestoreConfig(void)
Description:
This function restores the component configuration and nonretention registers. It also
restores the component parameter values to what they were before calling the
ADC_SAR_Seq_Sleep() function.
Parameters:
None
Return Value:
None
Side Effects:
Calling this function without first calling the ADC_SAR_Seq_Sleep() or
ADC_SAR_Seq_SaveConfig() function can produce unexpected behavior. This function
does not have an implementation and is meant for future use. It is provided here so that the
APIs are consistent across components.
Global Variables
Variable
ADC_SAR_Seq_initVar
Description
This variable indicates whether the ADC has been initialized. The variable is
initialized to 0 and set to 1 the first time ADC_SAR_Seq _Start() is called. This
allows the component to restart without reinitialization after the first call to the
ADC_SAR_Seq _Start() routine.
If reinitialization of the component is required, then the ADC_SAR_Seq _Init()
function can be called before the ADC_SAR_Seq _Start() or ADC_SAR_Seq
_Enable() functions.
ADC_SAR_Seq_finalArray
This array contains valid conversion results for all channels each time after EOC
pulse has been generated and EOC status is set.
Note When using the values from this array directly (not using
ADC_SAR_Seq_GetResult16() API function), the fact should be taken into account,
that channels are scanned in a reverse order, so the conversion result for the last
channel will be placed at ADC_SAR_finalArray[0].
Do not use this array directly in any of Differential modes because the
ADC_SAR_offset is not taken into account. Use ADC_SAR_Seq_GetResult16(),
where it is handled. If used directly, you must manually handle the ADC_SAR_offset.
Page 16 of 23
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
Macro Callbacks
Macro callbacks allow users to execute code from the API files that are automatically generated
by PSoC Creator. Refer to the PSoC Creator Help and Component Author Guide for the more
details.
In order to add code to the macro callback present in the component’s generated source files,
perform the following:



Define a macro to signal the presence of a callback (in cyapicallbacks.h). This will
“uncomment” the function call from the component’s source code.
Write the function declaration (in cyapicallbacks.h). This will make this function visible by
all the project files.
Write the function implementation (in any user file).
Callback Function [2]
Associated Macro
ADC_SAR_Seq_ISR_InterruptCall ADC_SAR_Seq_ISR_INTERR
back
UPT_CALLBACK
Description
Used in the ADC_SAR_Seq_ISR() interrupt
handler to perform additional applicationspecific actions.
MISRA Compliance
This section describes the MISRA-C:2004 compliance and deviations for the component. There
are two types of deviations:


project deviations – deviations that are applicable for all PSoC Creator components
specific deviations – deviations that are applicable only for this component
This section provides information on component-specific deviations. Project deviations are
described in the MISRA Compliance section of the System Reference Guide along with
information on the MISRA compliance verification environment.
The ADC_SAR_Seq component does not have any specific deviations.
This component has the following embedded components: ADC_SAR, DMA, interrupt, clock,
Hardware AMUX. Refer to the corresponding component datasheets for information on their
MISRA compliance and specific deviations.
2
The callback function name is formed by component function name optionally appended by short explanation
and “Callback” suffix.
Document Number: 001-96232 Rev. *C
Page 17 of 23
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
PSoC® Creator™ Component Datasheet
API Memory Usage
The component memory usage varies significantly depending on the compiler, device, number of
APIs used and component configuration. This table gives the memory usage for all APIs
available in the default component configuration.
The measurements were done with the associated compiler configured in release mode with
optimization set for size. For a specific design, analyze the map file generated by the compiler to
determine the memory usage.
PSoC 5LP (GCC)
Configuration
Flash Bytes
SRAM Bytes
1486
32
Default
Interrupt Service Routine
The ADC_SAR_Seq contains a blank interrupt service routine in the file ADC_SAR_Seq_INT.c
file, where “ADC_SAR_Seq” is the instance name. You can place custom code in the designated
areas to perform whatever function is required at the end of a conversion. A copy of the blank
interrupt service routine is shown below. Place custom code between the “/* `#START
MAIN_SEQ_ADC_ISR` */” and “/* `#END` */” comments. This ensures that the code will
be preserved when a project is regenerated.
CY_ISR( ADC_SAR_Seq_ISR )
{
#ifdef ADC_SAR_Seq_ISR_INTERRUPT_CALLBACK
ADC_SAR_Seq_ISR_InterruptCallback();
#endif /* ADC_SAR_Seq_ISR_INTERRUPT_CALLBACK */
/************************************************************************
* Custom Code
* - add user ISR code between the following #START and #END tags
*************************************************************************/
/* `#START MAIN_SEQ_ADC_ISR` */
/* `#END`
*/
}
A second designated area is available to place variable definitions and constant definitions.
/* `#START SEQ_ADC_SYS_VAR `
/* `#END`
*/
*/
Note You may use an alternative Interrupt service routine, located in your main.c file. In this case
use the following template:
Implement interrupt service routine in main.c:
CY_ISR( ADC_SAR_Seq_ISR_LOC )
Page 18 of 23
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
{
/* Place your code here */
}
Enable ADC interrupt and set interrupt handler to local routine:
ADC_SAR_Seq_IRQ_StartEx(ADC_SAR_Seq_ISR_LOC);
Refer to Macro Callbacks section for details how to use callback from ISR.
Refer to the Interrupt component datasheet for more information.
Functional Description
This block diagram shows how input analog signals from the hardware AMUX are sampled and
converted by the ADC SAR component. The first DMA channel moves the results one at a time
from the SAR ADC to the temporary RAM buffer. When a complete set of data for all channels is
collected in the temporary RAM buffer, the contents of the temporary RAM buffer are transferred
to the results (SRAM) buffer in one transfer. Using a temporary buffer allows all data to be
collected so that the results buffer are updated once per scan, so that you have the necessary
time to do one scan sequence to move the last results.
Converting one sample in free running sample mode takes 12+6 clock cycles, or 12+4 clock
cycles if Reference is Internal Vref (not bypassed), where 12 is a resolution in bits
(RESOLUTIONbits), 6 (or 4) is a sample width and auto-zeroing (SAMPLEwidth).
The conversion time of the each sample is more than four cycles when hardware trigger sample
mode is used (SOChw). One cycle more for whole sampling is used for the soc edge detect logic
by sequencer (SOCedge).
Document Number: 001-96232 Rev. *C
Page 19 of 23
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
The total number of clock required for sampling a selected number of channels could be
calculated by the following formula:
SAR_Seqclk=SOCedge+(RESOLUTIONbits+SAMPLEwidth + SOChw) * Channels + DMAbus_clk
The DMA operates at the same frequency as the CPU, which is the bus clock frequency. If the
ideal conditions are met, the number of bus clock cycles required for a data transfer from the
SAR to the RAM is equal to N+7 and from the RAM to the RAM is equal to 2N+6 where N is a
number of bursts. When the latest conversion is complete the DMA transfers last result from the
SAR to the RAM buffer and whole results from temporary RAM buffer to the results RAM buffer:
DMAbus_clk= 1+7 + 2*Channels+6
Refer to AN84810 for details on how to calculate the exact number of bus clock cycles required
for a DMA transaction under non-ideal conditions.
Refer to the ADC_SAR component datasheet for more information.
Registers
Status Register
ADC_SAR_SEQ_STATUS_REG
Bits
7
6
5
4
Value

3
2
1
0
Unused
EOC
EOC – End of Conversion. This register is set when one cycle of conversion for all
channels is complete.
Resources
The ADC_SAR_Seq uses SAR ADC component, which in turn is placed on a fixed-block SAR in
the silicon.
Resource Type
Configuration
Default
Page 20 of 23
Datapath
Cells
Macrocells
Status
Cells
Control/
Counter7
Cells
DMA
Channels
Interrupts
-
43
3
2
2
1
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
DC and AC Electrical Characteristics
These values indicate expected performance and are based on initial characterization data.
Unless otherwise specified, operating conditions are:

Fclk = 1-18 MHz
Note The desired sample rate is guaranteed only if bus clock frequency value is at least
twice as large as the component clock frequency.


Input range = ±VREF
Bypass capacitor of 10 µF
See the appropriate section of the ADC SAR component datasheet for more details.
Component Errata
This section lists known problems with the component.
Cypress
ID
213738
Component
Version
2.0
Problem
Workaround
If the ADC_SAR_Seq component is
configured in “Hardware trigger” sample
mode, it can be halted if the first “soc”
signal rising edge appears during _Start()
function execution.
If you are facing this problem, the first soc
rising edge should be provided after the
_Start() function execution.
For example, if you are using a clock
component (named “Clock_soc”)
connected to the soc input of the
ADC_SAR_Seq component, apply the
following workaround:
1. Open Clock tab in the DesignWide Resources (cydwr) file.
2. Remove "Start on Reset" for
Clock_soc.
3. In the main.c file, add
Clock_soc_Start() API after
ADC_SAR_Seq_Start().
Document Number: 001-96232 Rev. *C
Page 21 of 23
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
PSoC® Creator™ Component Datasheet
Component Changes
This section lists the major changes in the component from the previous version.
Version
2.0.c
Description of Changes
Datasheet update.
Reason for Changes / Impact
Updated the Functional Description section with
details on how to calculate the number of clocks
required for sampling.
Added Interrupt Service Routine section.
2.0.b
Datasheet update.
Added Macro Callbacks section.
2.0.a
Updated ADC_SAR_Seq_Start() and
ADC_SAR_Seq_Enable() descriptions.
Added a note that these APIs should not be called a
second time without first stopping the component.
Added Component Errata section.
Document a potential issue and workaround if the
component configured in “Hardware trigger” sample
mode.
2.0
The maximum sampling rate when operating with 1 Msps rate is not guaranteed by the silicon when
VDDA reference was reduced from 1 Msps to
used without a bypass capacitor. Refer to the VRef
500 Ksps.
Select parameter for more information.
Changed the conversion time from 18 to 16
cycles for Internal Vref Reference.
Limited configurations which violate DC/AC
Specifications.
Limited usage of the XTAL clock source. Higher
than 15 MHz XTAL must be divided by 2 or
greater.
Updated version of the embedded ADC_SAR
component to version 3.0.
Out of date component may contain defects or
incompatibilities.
Corrected channels scanning sequence
Incorrect results of last scanned channels
Corrected synchronization for high frequency
clock
Warning of static timing analyze for high frequency
clock
Edited datasheet to remove Component Errata
section.
This section does not apply to this version of the
component.
Datasheet edits
Updated Features section to show inputs restriction.
Updated MISRA Compliance section to remove
MISRA deviations.
Updated parameters description for
ADC_SAR_Seq_GetResult16 API.
Updated Resources section.
Updated API Memory Usage section.
Updated Functional Description section.
Updated Reference section.
1.10.a
Edited datasheet to add Component Errata
section.
Page 22 of 23
Document that the component was changed, but
there is no impact to designs.
Document Number: 001-96232 Rev. *C
PSoC® Creator™ Component Datasheet
Version
1.10
Sequencing Successive Approximation ADC (ADC_SAR_Seq)
Description of Changes
Updated the gain calibration to have better
resolution.
Added new ADC_SAR_Seq_SetScaledGain()
API which sets the gain coefficient with more
than 12-bit resolution.
1.0
Reason for Changes / Impact
New API added according to changes in the ADC
SAR component (gain coefficient
(ADC_countsPerVolt) had 10-bits resolution in Vssa
to Vdda input range.) This issue affected
ADC_SAR_Seq_CountsTo_Volts(), ADC_SAR_Seq
_CountsTo_mVolts(), and ADC_SAR_Seq
_CountsTo_uVolts() API.
First component release
© Cypress Semiconductor Corporation, 2015. The information contained herein is subject to change without notice. Cypress Semiconductor Corporation assumes no responsibility for the use of
any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any license under patent or other rights. Cypress products are not warranted nor intended to be used
for medical, life support, life saving, critical control, or safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for
use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress products in lifesupport systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
PSoC® is a registered trademark, and PSoC Creator™ and Programmable System-on-Chip™ are trademarks of Cypress Semiconductor Corp. All other trademarks or registered trademarks
referenced herein are property of the respective corporations.
Any Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide patent protection (United States and
foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create
derivative works of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in
conjunction with a Cypress integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source Code except as
specified above is prohibited without the express written permission of Cypress.
Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described herein.
Cypress does not assume any liability arising out of the application or use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in lifesupport systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support systems application
implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
Use may be limited by and subject to the applicable Cypress software license agreement.
Document Number: 001-96232 Rev. *C
Page 23 of 23