-
Notifications
You must be signed in to change notification settings - Fork 36
reference-designs/eval-ad7606x: Add untracked wiki pages #383
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
vicentiu2
wants to merge
6
commits into
main
Choose a base branch
from
wiki_migration/eval-ad7606x_extra_pages
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
cb89a98
reference-designs/eval-ad7606x: Add untracked wiki-migration pages
vicentiu2 08cb009
Replace stub index.rst with template
vicentiu2 4713360
Fix build: remove leaked wiki-migration source files, fix index.rst
vicentiu2 920eed0
Fix :doc: refs to wiki-migration paths and RST errors
vicentiu2 47a028d
Fix remaining build errors (includes, tables, toctree)
vicentiu2 f794b39
Fix build: index.rst blank line before section heading
vicentiu2 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| AD7606 - No-OS Driver | ||
| ===================== | ||
|
|
||
| Supported Devices | ||
| ----------------- | ||
|
|
||
| - :adi:`AD7605-4` | ||
| - :adi:`AD7606` | ||
| - :adi:`AD7606-6` | ||
| - :adi:`AD7606-4` | ||
| - :adi:`AD7606B` | ||
| - :adi:`AD7606C-18` | ||
|
|
||
| Reference Circuits | ||
| ------------------ | ||
|
|
||
| - :adi:`CN0148` | ||
|
|
||
| Evaluation Boards | ||
| ----------------- | ||
|
|
||
| - :adi:`EVAL-AD7605-4` | ||
| - :adi:`EVAL-AD7606EDZ` | ||
| - :adi:`EVAL-AD7606-4EDZ` | ||
| - :adi:`EVAL-AD7606-6EDZ` | ||
| - :adi:`EVAL-AD7606BFMCZ` | ||
|
|
||
| Overview | ||
| -------- | ||
|
|
||
| The :adi:`AD7606` is a 8-/6-/4-Channel DAS with 16-Bit, Bipolar Input, Simultaneous Sampling ADC. Each part contains analog input clamp protection, a second-order antialiasing filter, a track-and-hold amplifier, a 16-bit charge redistribution successive approximation analog-to-digital converter (ADC), a flexible digital filter, a 2.5 V reference and reference buffer, and high speed serial and parallel interfaces. The :adi:`AD7606` operate from a single 5 V supply and can accommodate ±10 V and ±5 V true bipolar input signals while sampling at throughput rates up to 200 kSPS for all channels. The input clamp protection circuitry can tolerate voltages up to ±16.5 V. The AD7606 has 1 MΩ analog input impedance regardless of sampling frequency. The single supply operation, on-chip filtering, and high input impedance eliminate the need for driver op amps and external bipolar supplies. | ||
|
|
||
| The :adi:`AD7606C` is a directly pin replacement (software and hardware) for both AD7608 and AD7609, with higher input impedance, throughput rate and extended temperature range with additional features such as 16/18-bit sample size, system gain/offset/phase calibration, sensor disconnect detection, lower Vdrive operation, diagnostics, additional oversampling ratios and per channel analog input range selection with bipolar differential, bipolar single-ended and unipolar single-ended options. | ||
|
|
||
| Downloads | ||
| --------- | ||
|
|
||
| .. admonition:: Download | ||
| :class: download | ||
|
|
||
|
|
||
| - :git-no-OS:`Implementation of AD7606 Driver. <drivers/adc/ad7606/ad7606.c>` | ||
| - :git-no-OS:`Header file of AD7606 Driver. <drivers/adc/ad7606/ad7606.h>` | ||
|
|
||
316 changes: 316 additions & 0 deletions
316
docs/solutions/reference-designs/eval-ad7606x/ad7606_mbed_iio_application.rst
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,316 @@ | ||
| AD7606 IIO Application | ||
| ====================== | ||
|
|
||
| Introduction | ||
| ------------ | ||
|
|
||
| This page gives an overview of using the ARM platforms supported (default is | ||
| Mbed) firmware application with Analog Devices AD7606 Evaluation board(s) and | ||
| SDP-K1 controller board. This example code leverages the ADI developed IIO | ||
| (Industrial Input Output) ecosystem to evaluate the AD7606 family devices by | ||
| providing a device debug and data capture support. | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/section>resources/tools-software/product-support-software/iio_support_introduction#introduction&showfooter=nofooter | ||
| :alt: section>resources/tools-software/product-support-software/iio_support_introduction#Introduction&showfooter=nofooter | ||
|
|
||
| -------------- | ||
|
|
||
| Useful links | ||
| ------------ | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/section>resources/tools-software/product-support-software/useful_links#useful_link&showfooter=nofooter | ||
| :alt: section>resources/tools-software/product-support-software/useful_links#Useful Link&showfooter=nofooter | ||
|
|
||
| - :git-no-OS:`AD7606 No-OS drivers <drivers/adc/ad7606>` | ||
|
Check failure on line 24 in docs/solutions/reference-designs/eval-ad7606x/ad7606_mbed_iio_application.rst
|
||
| - :adi:`AD7606B <en/products/ad7606b.html>` AD7606C :adi:`AD7605-4 <en/products/ad7605-4.html>` :adi:`AD7606-4 <en/products/ad7606-4.html>` :adi:`AD7606-6 <en/products/ad7606-6.html>` :adi:`AD7606-8 <en/products/ad7606.html>` :adi:`AD7608 <en/products/ad7608.html>` :adi:`AD7609 <en/products/ad7609.html>` | ||
|
|
||
| -------------- | ||
|
|
||
| Hardware Connections | ||
| -------------------- | ||
|
|
||
| SDP-K1: | ||
| ~~~~~~~ | ||
|
|
||
| - Connect the VIO_ADJUST jumper on the SDP-K1 board to 3.3V position to drive | ||
| SDP-K1 GPIOs at 3.3V | ||
|
|
||
| EVAL-AD7606B-FMCZ: | ||
| ~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| - Make below jumper settings on the board. Refer :adi:`EVAL-AD7606B-FMCZ User Manual <en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-AD7606B-FMCZ.html#eb-overview>` for more details. | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606b_jumper_settings.jpg | ||
| :align: center | ||
| :width: 450 | ||
|
|
||
| Arduino Connections: | ||
| ~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| - | ||
|
|
||
| |image1| | ||
|
|
||
| The AD7606 device is configured in "Serial Software" mode in the firmware. | ||
| AD7606 uses SPI communication for device register access and data capture. | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/section>resources/tools-software/product-support-software/hardware_connections_uart#uart_connections&showfooter=nofooter | ||
| :alt: section>resources/tools-software/product-support-software/hardware_connections_uart#UART Connections&showfooter=nofooter | ||
|
|
||
| -------------- | ||
|
|
||
| Software Downloads | ||
| ------------------ | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/section>resources/tools-software/product-support-software/iio_support_software_downloads#software_downloads&showfooter=nofooter | ||
| :alt: section>resources/tools-software/product-support-software/iio_support_software_downloads#Software Downloads&showfooter=nofooter | ||
|
|
||
| -------------- | ||
|
|
||
| Evaluating AD7606 Using IIO Ecosystem | ||
| ------------------------------------- | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/section>resources/tools-software/product-support-software/note_hardware_connections#note_in_hardware_connections&showfooter=nofooter | ||
| :alt: section>resources/tools-software/product-support-software/note_hardware_connections#Note in Hardware Connections&showfooter=nofooter | ||
|
|
||
| Running IIO Oscilloscope (Client) | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| Open the IIO Oscilloscope application from start menu and configure the serial | ||
| (UART) settings as shown below. Click on refresh button and AD7606 device should | ||
| pop-up in IIO devices list. Click 'Connect' and select the AD7606 device from | ||
| the drop down menu list of 'Device Selection'. | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_iio_oscilloscope_connection.gif | ||
| :align: center | ||
|
|
||
| Configure/Access Device Attributes (Parameters) | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| The IIO Oscilloscope allows user to access and configure different device | ||
| parameters, called as 'Device Attributes". There are 2 types of attributes: | ||
|
|
||
| - Device Attributes (Global): Access/Configure common device parameters e.g. oversampling rate, operating mode | ||
| - Channel Attributes (Specific to channels): Access/Configure channel specific | ||
| device parameters e.g. channel range, offset, calibration, open circuit | ||
| detection, etc. | ||
|
|
||
| How to read and write attribute: | ||
|
|
||
| - To 'Read' an attribute, simply select the attribute from a list or press 'Read' button on left side. | ||
| - To 'Write' an attribute, write a attribute value in the 'value field' and | ||
| press 'Write' button. The value to be written corresponds to expected | ||
| bit-field for that parameter, specified in the datasheet. For example, below | ||
| figure shows how to write a "Oversampling" value. | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_iio_oscilloscope_attribute_rw.gif | ||
| :align: center | ||
|
|
||
| Using DMM Tab to Read DC Voltage on Input Channels | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| DMM tab can be used read the instantaneous voltage applied on analog input | ||
| channels. Simply select the device and channels to read and press start button. | ||
|
|
||
| *\*Note: The voltage is just instantaneous, so it is not possible to get RMS AC voltage or averaged DC voltage. Also, when using DMM tab, it is not encouraged to use Data Capture or Debug tab as this could impact data capturing.* | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_iio_oscilloscope_dmm_tab.gif | ||
| :align: center | ||
|
|
||
| Data Capture from IIO Device | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| To capture the data from AD7606 IIO device, simply select the device and | ||
| channels to read/capture data. The data is plotted as "ADC Raw Value" Vs "Number | ||
| of Samples" and is just used for Visualization. The data is read as is from | ||
| device without any processing. If user wants to process the data, it must be | ||
| done externally by capturing data from the Serial link on controller board. | ||
|
|
||
| *\*Note: The DMM or Debug tab should not be accessed when capturing data as this would impact data capturing.* | ||
|
|
||
| More info here: `Data Capture Using Iio App <https://wiki.analog.com/resources/tools-software/product-support-software/data-capture-using-iio-app>`_ | ||
|
|
||
| .. important:: | ||
|
|
||
| The continuous time domain data capture can work correctly at ODR/Sampling | ||
| Rate defined in the firmware code (32KSPS) and also at 0 Oversampling Rate. | ||
| For plotting frequency domain response max 4096 samples can be selected due | ||
| to limited buffer size in the firmware. These limitations are due to the | ||
| firmware architecture and design choices and does not limit the actual device | ||
| specifications provided in device datasheet | ||
|
|
||
| Time Domain: | ||
|
|
||
| |image2| | ||
|
|
||
| Frequency Domain: | ||
|
|
||
| |image3| | ||
|
|
||
| -------------- | ||
|
|
||
| Calibrating AD7606B/C Devices | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| ADC Gain Calibration: | ||
| ^^^^^^^^^^^^^^^^^^^^^ | ||
|
|
||
| ADC gain calibration can be done in 3 easy steps as mentioned below. The gain | ||
| calibration needs to be done for selected gain filter register as specified in | ||
| the datasheet (refer 'System Gain Calibration' section from the AD7606B/C | ||
| datasheet). The gain calibration can be done for each channel depending upon the | ||
| filter resistor placed in series with each channel analog input. | ||
|
|
||
| **Reference: File: iio_ad7606.c, Function: get_chn_calibrate_adc_gain()** | ||
|
|
||
| |image4| |image5| | ||
|
|
||
| ADC Offset Calibration: | ||
| ^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
|
||
| ADC offset calibration should only be done when ADC input is 0V. The purpose is | ||
| to reduce any offset error from the input when analog input is at 0V level. The | ||
| ADC offset calibration can be done for each input channel. | ||
|
|
||
| To perform ADC offset calibration, select the 'calibrate_adc_offset' attribute. | ||
| It should automatically perform the calibration. Also, if 'Read' button is | ||
| pressed, the calibration should happen one more time. | ||
|
|
||
| **Reference: File: iio_ad7606.c, Function: get_chn_calibrate_adc_offset()** | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_offset_calibration.jpg | ||
| :align: center | ||
| :width: 600 | ||
|
|
||
| -------------- | ||
|
|
||
| Open Circuit Detection on AD7606B Device | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| AD7606B device provides an open circuit detection feature for detecting the open | ||
| circuit on each analog input channel of ADC. | ||
|
|
||
| There are 2 modes to detect open circuit on analog inputs (Refer AD7606B | ||
| datasheet for more details): | ||
|
|
||
| - Manual Mode | ||
| - Auto Mode | ||
|
|
||
| Manual Mode Open Circuit Detect: | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
|
||
| The manual open circuit detection needs 'Rpd' to be placed at analog input as | ||
| shown in figure below. The firmware is written to perform the open circuit | ||
| detection @50Kohm of Rpd value. The common mode change threshold has been | ||
| defined as 15 ADC count in the firmware at above specified configurations (as | ||
| specified in the datasheet). | ||
|
|
||
| **Reference: File: iio_ad7606.c, Function: get_chn_open_circuit_detect_manual()** | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_manual_open_circuit.jpg | ||
| :align: center | ||
|
|
||
| Auto Mode Open Circuit Detect: | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
|
||
| The auto open circuit detection on each individual ADC channel can be done by | ||
| performing 3 easy steps mentioned in below screenshot. | ||
|
|
||
| **Reference: File: iio_ad7606.c, Function: get_chn_open_circuit_detect_auto()** | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_auto_open_circuit.jpg | ||
| :align: center | ||
|
|
||
| -------------- | ||
|
|
||
| Diagnostic Multiplexer on AD7606B/C Devices | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| Using diagnostic multiplexer on AD7606B/C devices, the internal analog inputs | ||
| can be sampled to provide a diagnostic voltages and parameters on IIO client | ||
| application such as reference voltage (vref), DLO voltage (ALDO/DLDO), | ||
| temperature and drive voltage (vdrive). | ||
|
|
||
| **\*Note: The diagnostic mux control must operate when input range is +/-10V** | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_diagnostic_mux.jpg | ||
| :align: center | ||
| :width: 600 | ||
|
|
||
| -------------- | ||
|
|
||
| Python Environment and Scripts | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| Data capture can be achieved with python based IIO clients, using 'pyadi-iio' | ||
| library. A possible option using ADI's pyadi-iio library in python has been | ||
| demonstrated in the forthcoming sections. The python scripts are provided along | ||
| with firmware package. | ||
|
|
||
| .. image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/section>resources/tools-software/product-support-software/iio_support_python_application#python_application&showfooter=nofooter | ||
| :alt: section>resources/tools-software/product-support-software/iio_support_python_application#Python Application&showfooter=nofooter | ||
|
|
||
| -------------- | ||
|
|
||
| Modifying Firmware | ||
| ------------------ | ||
|
|
||
| The below block diagram shows the AD7606 IIO firmware layer. | ||
|
|
||
| |image6| | ||
|
|
||
| app_config.h | ||
| ~~~~~~~~~~~~ | ||
|
|
||
| This file can be used to: | ||
|
|
||
| - Select the 'Active Device' to evaluate by changing '#define DEV_AD7606B' macro. Default active device is AD7606B. | ||
| - Configure the pin mapping of AD7606 w.r.t Arduino Header on Controller Board. | ||
|
|
||
| ad7606_user_config.c | ||
| ~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| This file defines the user configurations for the AD7606, such as SPI parameters | ||
| (frequency, mode, etc) and other init parameters used by No-OS drivers to | ||
| initialize AD7606 device (e.g. required GPIOs, software/hardware mode, etc). | ||
| These are the parameters loaded into device when device is powered-up or | ||
| power-cycled. | ||
|
|
||
| iio_ad7606.c | ||
| ~~~~~~~~~~~~ | ||
|
|
||
| This file defines getter/setter functions for all the device and channel | ||
| specific attributes (related to AD7606 devices) to read/write the device | ||
| parameters. The majority of device specific functionality is present in this | ||
| module. | ||
|
|
||
| iio_ad7606_data_capture.c | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| This file defines the data capture implementation of AD7606 for visualizing adc | ||
| raw data on IIO oscilloscope. | ||
|
|
||
| No-OS Drivers for AD7606 | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| The no-os drivers provide the high level abstracted layer for digital interface | ||
| of AD7606 devices. The complete digital interface (to access memory map and | ||
| perform data read) is done in integration with platform drivers. | ||
|
|
||
| The functionality related with no-os drivers is covered in below 2 files: | ||
|
|
||
| - ad7606.c | ||
| - ad7606.h | ||
|
|
||
| .. tip:: | ||
|
|
||
| It is hoped that the most common functions of the AD7606 family are coded, but it's likely that some special functionality is not implemented. Feel free to consult Analog Devices :adi:`Engineer-Zone <engineerzone>` for feature requests, feedback, bug-reports etc. | ||
|
|
||
| .. |image1| image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_connection_diagram.jpg | ||
| .. |image2| image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_iio_oscilloscope_data_capture.gif | ||
| .. |image3| image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_iio_oscilloscope_data_capture_freq_domain.gif | ||
| .. |image4| image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_gain_calibration_ckt.jpg | ||
| :width: 300 | ||
| .. |image5| image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_gain_calibration.jpg | ||
| .. |image6| image:: https://wiki.analog.com/_media/resources/tools-software/product-support-software/ad7606_iio_firmware_layer.jpg | ||
| :width: 600 | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Delete this page.