® PSoC Creator™ Component Datasheet Sequencing Successive Approximation ADC (ADC_SAR_Seq) 1.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 The actual maximum number of input channels depends on the number of routable analog GPIOs that are 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-84973 Rev. ** March 4, 2013 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. You see it if you 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. Page 2 of 20 Document Number: 001-84973 Rev. ** Sequencing Successive Approximation ADC (ADC_SAR_Seq) ® PSoC Creator™ Component Datasheet 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. Synchronize this signal to the ADC_SAR_Seq clock. If you set the Sample Mode parameter to Free-running or Software trigger this I/O is hidden. 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. eos – Output A rising edge on the end of sampling (eos) 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. Page 3 of 20 Document Number: 001-84973 Rev. ** 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 these parameters. The option shown in bold is the default. Modes Resolution 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 Conversion Rate This parameter sets the ADC conversion rate. The conversion time is the inverse of the conversion rate. Enter the conversion rate in samples per second. Converting one sample takes 18 component clock cycles. Page 4 of 20 Document Number: 001-84973 Rev. ** Sequencing Successive Approximation ADC (ADC_SAR_Seq) ® PSoC Creator™ Component Datasheet Clock Frequency This text box is a read-only (always grayed out) area 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. 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 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 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. 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 Page 5 of 20 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. Document Number: 001-84973 Rev. ** Sequencing Successive Approximation ADC (ADC_SAR_Seq) InputRange ® PSoC Creator™ Component Datasheet Description 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. 0.0 ± 1.024V (Differential) This mode is configured for differential inputs. When using the internal reference (1.024 V), the input range is –Input ± 1.024 V. –Input ± Vref 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. Reference Description Internal Vref Uses the internal reference. The maximum sampling rate allowed with this option is 100,000 sps. Use the Internal Vref, bypassed option for higher rates. Internal Vref, bypassed Uses the internal reference; you must place a bypass capacitor on pin P0[2]* for SAR1 or on pin P0[4]* for SAR0. External Vref 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 20 Document Number: 001-84973 Rev. ** Sequencing Successive Approximation ADC (ADC_SAR_Seq) ® PSoC Creator™ Component Datasheet 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 V DDA voltage. 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”. 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 Returns a nonzero value if conversion is complete _IsEndConversion() ADC_SAR_Seq _GetAdcResult() Page 7 of 20 Returns a signed 16-bit conversion result available in the ADC SAR Data Register not the result buffer Document Number: 001-84973 Rev. ** ® Sequencing Successive Approximation ADC (ADC_SAR_Seq) PSoC Creator™ Component Datasheet Function Description 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 _SetGain() Sets the ADC_SAR_Seq gain in counts per volt 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 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_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 8 of 20 Document Number: 001-84973 Rev. ** Sequencing Successive Approximation ADC (ADC_SAR_Seq) ® PSoC Creator™ Component Datasheet 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. 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 Page 9 of 20 Document Number: 001-84973 Rev. ** ® Sequencing Successive Approximation ADC (ADC_SAR_Seq) PSoC Creator™ Component Datasheet 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 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. Description 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_Seq_StopConvert(), 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 20 Document Number: 001-84973 Rev. ** Sequencing Successive Approximation ADC (ADC_SAR_Seq) ® PSoC Creator™ Component Datasheet 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 Page 11 of 20 Document Number: 001-84973 Rev. ** ® Sequencing Successive Approximation ADC (ADC_SAR_Seq) PSoC Creator™ Component Datasheet uint8 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: uint8: 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: int8: The LSB of the last ADC conversion. 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: None 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 20 Document Number: 001-84973 Rev. ** Sequencing Successive Approximation ADC (ADC_SAR_Seq) ® PSoC Creator™ Component Datasheet 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_SetGain(int32 adcGain) Description: Sets the ADC_SAR_Seq gain in counts per volt 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. Parameters: int32 adcGain: ADC_SAR_Seq gain in counts per volt Return Value: None Side Effects: Affects ADC_CountsTo_Volts(), ADC_CountsTo_mVolts(), ADC_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 Page 13 of 20 Document Number: 001-84973 Rev. ** 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 16-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: int16 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 20 Document Number: 001-84973 Rev. ** Sequencing Successive Approximation ADC (ADC_SAR_Seq) ® PSoC Creator™ Component Datasheet 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. The higher power is set automatically depending on clock speed. The ADC_SAR_Seq _SetPower() API description contains the relation of the power from the clock rate. 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. Parameters: None Return Value: None Side Effects: Page 15 of 20 None Document Number: 001-84973 Rev. ** 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. 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 has these specific deviations: Page 16 of 20 Document Number: 001-84973 Rev. ** Sequencing Successive Approximation ADC (ADC_SAR_Seq) MISRA-C: 2004 Rule Rule Class (Required/ Advisory) Rule Description The value of an expression of integer type shall not be implicitly converted to a different underlying type if: 10.1 R ® PSoC Creator™ Component Datasheet Description of Deviation(s) The DMA component provides general integer type definitions. a) it is not a conversion to a wider integer type of the same signedness, or b) the expression is complex, or c) the expression is not constant and is a function argument, or d) the expression is not constant and is a return expression. 13.2 A Tests of a value against zero should be made explicit, unless the operand is effectively Boolean. 17.4 R Array indexing is the only allowed form of pointer arithmetic. The DMA component gives general integer type definitions, which are ORed together to provide correct function argument. The DMA structure access uses pointer arithmetic with array indexing. This component has the following embedded components: ADC_SAR, DMA, interrupt, Hardware AMUX. Refer to the corresponding component datasheets for information on their MISRA compliance and specific deviations. Page 17 of 20 Document Number: 001-84973 Rev. ** ® Sequencing Successive Approximation ADC (ADC_SAR_Seq) PSoC Creator™ Component Datasheet 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 burst. 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. Registers Status Register ADC_SAR_SEQ_STATUS_REG Bits Value 7 6 5 4 Unused 3 2 1 0 EOC EOC – End of Conversion. This register is set when one cycle of conversion for all channels is complete. Page 18 of 20 Document Number: 001-84973 Rev. ** ® Sequencing Successive Approximation ADC (ADC_SAR_Seq) PSoC Creator™ Component Datasheet 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 Datapath Cells Macrocells Status Cells - 45 1 Default Control/ Counter7 Cells 2 DMA Channels Interrupts 2 1 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 Default Flash SRAM Bytes Bytes 1410 37 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. Page 19 of 20 Document Number: 001-84973 Rev. ** 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 1.0 Description of Changes Reason for Changes / Impact First component release © Cypress Semiconductor Corporation, 2013. 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. Page 20 of 20 Document Number: 001-84973 Rev. **