diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/_images/ad4130_hardware_connections.png b/_images/ad4130_hardware_connections.png new file mode 100644 index 00000000..6b5a4ee6 Binary files /dev/null and b/_images/ad4130_hardware_connections.png differ diff --git a/_images/ad4130_sensor_demo_console.png b/_images/ad4130_sensor_demo_console.png new file mode 100644 index 00000000..d957d4d3 Binary files /dev/null and b/_images/ad4130_sensor_demo_console.png differ diff --git a/_images/ad7124_3wire_rtd_calibration_menu.png b/_images/ad7124_3wire_rtd_calibration_menu.png new file mode 100644 index 00000000..a681096c Binary files /dev/null and b/_images/ad7124_3wire_rtd_calibration_menu.png differ diff --git a/_images/ad7124_calibration_menu.png b/_images/ad7124_calibration_menu.png new file mode 100644 index 00000000..dc054117 Binary files /dev/null and b/_images/ad7124_calibration_menu.png differ diff --git a/_images/ad7124_cjc_configs.png b/_images/ad7124_cjc_configs.png new file mode 100644 index 00000000..ebbae310 Binary files /dev/null and b/_images/ad7124_cjc_configs.png differ diff --git a/_images/ad7124_hardware_connections.png b/_images/ad7124_hardware_connections.png new file mode 100644 index 00000000..d388eb7c Binary files /dev/null and b/_images/ad7124_hardware_connections.png differ diff --git a/_images/ad7124_interface.png b/_images/ad7124_interface.png new file mode 100644 index 00000000..0744efc0 Binary files /dev/null and b/_images/ad7124_interface.png differ diff --git a/_images/ad7124_multiple_2_wire_rtd_configs.png b/_images/ad7124_multiple_2_wire_rtd_configs.png new file mode 100644 index 00000000..5cd8e7bd Binary files /dev/null and b/_images/ad7124_multiple_2_wire_rtd_configs.png differ diff --git a/_images/ad7124_multiple_3_wire_rtd_configs.png b/_images/ad7124_multiple_3_wire_rtd_configs.png new file mode 100644 index 00000000..133c7398 Binary files /dev/null and b/_images/ad7124_multiple_3_wire_rtd_configs.png differ diff --git a/_images/ad7124_multiple_4_wire_rtd_configs.png b/_images/ad7124_multiple_4_wire_rtd_configs.png new file mode 100644 index 00000000..140ab9ad Binary files /dev/null and b/_images/ad7124_multiple_4_wire_rtd_configs.png differ diff --git a/_images/ad7124_multiple_ntc10k_configs.png b/_images/ad7124_multiple_ntc10k_configs.png new file mode 100644 index 00000000..50b6fc58 Binary files /dev/null and b/_images/ad7124_multiple_ntc10k_configs.png differ diff --git a/_images/ad7124_multiple_tc_configs.png b/_images/ad7124_multiple_tc_configs.png new file mode 100644 index 00000000..20eb2551 Binary files /dev/null and b/_images/ad7124_multiple_tc_configs.png differ diff --git a/_images/ad7124_temperature_measure_main_menu.png b/_images/ad7124_temperature_measure_main_menu.png new file mode 100644 index 00000000..abb5eedb Binary files /dev/null and b/_images/ad7124_temperature_measure_main_menu.png differ diff --git a/_images/ad7606_auto_open_circuit.png b/_images/ad7606_auto_open_circuit.png new file mode 100644 index 00000000..e1d8b470 Binary files /dev/null and b/_images/ad7606_auto_open_circuit.png differ diff --git a/_images/ad7606_diagnostic_mux.png b/_images/ad7606_diagnostic_mux.png new file mode 100644 index 00000000..316b765f Binary files /dev/null and b/_images/ad7606_diagnostic_mux.png differ diff --git a/_images/ad7606_gain_calibration.png b/_images/ad7606_gain_calibration.png new file mode 100644 index 00000000..3422b1c5 Binary files /dev/null and b/_images/ad7606_gain_calibration.png differ diff --git a/_images/ad7606_hardware_connections.png b/_images/ad7606_hardware_connections.png new file mode 100644 index 00000000..bbdf1999 Binary files /dev/null and b/_images/ad7606_hardware_connections.png differ diff --git a/_images/ad7606_manual_open_circuit.png b/_images/ad7606_manual_open_circuit.png new file mode 100644 index 00000000..1caf708c Binary files /dev/null and b/_images/ad7606_manual_open_circuit.png differ diff --git a/_images/ad7606_offset_calibration.png b/_images/ad7606_offset_calibration.png new file mode 100644 index 00000000..6355f6a2 Binary files /dev/null and b/_images/ad7606_offset_calibration.png differ diff --git a/_images/ad7689_hardware_connections.png b/_images/ad7689_hardware_connections.png new file mode 100644 index 00000000..bcd28490 Binary files /dev/null and b/_images/ad7689_hardware_connections.png differ diff --git a/_images/ad77681_hardware_connections1.png b/_images/ad77681_hardware_connections1.png new file mode 100644 index 00000000..ebef96c4 Binary files /dev/null and b/_images/ad77681_hardware_connections1.png differ diff --git a/_images/ad77681_hardware_connections2.png b/_images/ad77681_hardware_connections2.png new file mode 100644 index 00000000..da39c592 Binary files /dev/null and b/_images/ad77681_hardware_connections2.png differ diff --git a/_images/app_interface.png b/_images/app_interface.png new file mode 100644 index 00000000..6eb6c55d Binary files /dev/null and b/_images/app_interface.png differ diff --git a/_images/bypassing_lk6_link_on_legacy_board.png b/_images/bypassing_lk6_link_on_legacy_board.png new file mode 100644 index 00000000..99b42e77 Binary files /dev/null and b/_images/bypassing_lk6_link_on_legacy_board.png differ diff --git a/_images/console_app_teraterm_settings.png b/_images/console_app_teraterm_settings.png new file mode 100644 index 00000000..b64036a6 Binary files /dev/null and b/_images/console_app_teraterm_settings.png differ diff --git a/_images/environmental_variables.png b/_images/environmental_variables.png new file mode 100644 index 00000000..79353414 Binary files /dev/null and b/_images/environmental_variables.png differ diff --git a/_images/flexible_iio_ecosystem.png b/_images/flexible_iio_ecosystem.png new file mode 100644 index 00000000..7bc8ddeb Binary files /dev/null and b/_images/flexible_iio_ecosystem.png differ diff --git a/_images/iio_data_capture_in_firmware.png b/_images/iio_data_capture_in_firmware.png new file mode 100644 index 00000000..270d4537 Binary files /dev/null and b/_images/iio_data_capture_in_firmware.png differ diff --git a/_images/iio_osc_connect_window.png b/_images/iio_osc_connect_window.png new file mode 100644 index 00000000..5450243a Binary files /dev/null and b/_images/iio_osc_connect_window.png differ diff --git a/_images/iio_osc_data_save.png b/_images/iio_osc_data_save.png new file mode 100644 index 00000000..d36b2a72 Binary files /dev/null and b/_images/iio_osc_data_save.png differ diff --git a/_images/iio_osc_dmm_tab.png b/_images/iio_osc_dmm_tab.png new file mode 100644 index 00000000..beb7b14f Binary files /dev/null and b/_images/iio_osc_dmm_tab.png differ diff --git a/_images/iio_osc_freq_domain_plot.png b/_images/iio_osc_freq_domain_plot.png new file mode 100644 index 00000000..b4f8151d Binary files /dev/null and b/_images/iio_osc_freq_domain_plot.png differ diff --git a/_images/iio_osc_high_frequency_graph.png b/_images/iio_osc_high_frequency_graph.png new file mode 100644 index 00000000..72df7693 Binary files /dev/null and b/_images/iio_osc_high_frequency_graph.png differ diff --git a/_images/iio_osc_select_chn_samples.png b/_images/iio_osc_select_chn_samples.png new file mode 100644 index 00000000..6a550557 Binary files /dev/null and b/_images/iio_osc_select_chn_samples.png differ diff --git a/_images/iio_osc_sine_wave_capture.png b/_images/iio_osc_sine_wave_capture.png new file mode 100644 index 00000000..66c4ae66 Binary files /dev/null and b/_images/iio_osc_sine_wave_capture.png differ diff --git a/_images/iio_osc_tabs.png b/_images/iio_osc_tabs.png new file mode 100644 index 00000000..781d8723 Binary files /dev/null and b/_images/iio_osc_tabs.png differ diff --git a/_images/iio_osc_time_domain_plot.png b/_images/iio_osc_time_domain_plot.png new file mode 100644 index 00000000..eb13b39c Binary files /dev/null and b/_images/iio_osc_time_domain_plot.png differ diff --git a/_images/iio_osc_trapezoidal_wave_capture.png b/_images/iio_osc_trapezoidal_wave_capture.png new file mode 100644 index 00000000..582f57e5 Binary files /dev/null and b/_images/iio_osc_trapezoidal_wave_capture.png differ diff --git a/_images/mbed_build.png b/_images/mbed_build.png new file mode 100644 index 00000000..64af62c6 Binary files /dev/null and b/_images/mbed_build.png differ diff --git a/_images/mbed_keil_studio_project_clone.png b/_images/mbed_keil_studio_project_clone.png new file mode 100644 index 00000000..16da3c3c Binary files /dev/null and b/_images/mbed_keil_studio_project_clone.png differ diff --git a/_images/mbedignore_changes.png b/_images/mbedignore_changes.png new file mode 100644 index 00000000..3325501b Binary files /dev/null and b/_images/mbedignore_changes.png differ diff --git a/_images/serial_ports_view.png b/_images/serial_ports_view.png new file mode 100644 index 00000000..8a6c1786 Binary files /dev/null and b/_images/serial_ports_view.png differ diff --git a/_images/stm32_auto_generated_files.png b/_images/stm32_auto_generated_files.png new file mode 100644 index 00000000..62c998a8 Binary files /dev/null and b/_images/stm32_auto_generated_files.png differ diff --git a/_images/stm32_compiler_flag.png b/_images/stm32_compiler_flag.png new file mode 100644 index 00000000..513746bb Binary files /dev/null and b/_images/stm32_compiler_flag.png differ diff --git a/_images/stm32_exclude_files_option.png b/_images/stm32_exclude_files_option.png new file mode 100644 index 00000000..7453a5d6 Binary files /dev/null and b/_images/stm32_exclude_files_option.png differ diff --git a/_images/stm32_generate_code.png b/_images/stm32_generate_code.png new file mode 100644 index 00000000..adfa10c7 Binary files /dev/null and b/_images/stm32_generate_code.png differ diff --git a/_images/stm32_project_directory.png b/_images/stm32_project_directory.png new file mode 100644 index 00000000..10a6795d Binary files /dev/null and b/_images/stm32_project_directory.png differ diff --git a/_images/stm32_run_option.png b/_images/stm32_run_option.png new file mode 100644 index 00000000..544b50f4 Binary files /dev/null and b/_images/stm32_run_option.png differ diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 00000000..3c39dd01 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,27 @@ +Precision-converters-firmware +============================= + +Analog Devices Inc. Precision Converters Firmware Applications + +This repository contains embedded firmware applications for Analog Devices +Precision Converters. The firmware applications are developed to interface with +Precision Converters (ADCs/DACs) in order to configure/access device parameters +and capture device data over a serial communication link. These applications are +primarily targeted for the SDP-k1 hardware platform, running Mbed OS, however +they can target other platforms as well. `See Understanding No-OS and Platform Drivers `_ + + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + /source/build/project_build.rst + /source/code_style.rst + /source/contributing.rst + /source/projects/index.rst + +======= +Support +======= + +Feel free to ask questions in the `EngineerZone `_ diff --git a/_sources/source/build/project_build.rst.txt b/_sources/source/build/project_build.rst.txt new file mode 100644 index 00000000..1891890f --- /dev/null +++ b/_sources/source/build/project_build.rst.txt @@ -0,0 +1,168 @@ +=========== +Build Guide +=========== + +.. collapse:: Build Prerequisites + :open: + + Prior to building a firmware project, it is required to set up an environment so + that the build process may find the necessary tools (compiler, linker, SDK etc.). + Use the following steps to prepare your environment for building firmware projects + for respective platform. + + .. collapse:: Windows + + .. collapse:: Mbed + + .. collapse:: For Web/Online Build + + * Visit `Arm Keil website `_ to create an user account for accessing the web based Keil Studio IDE. + + * Open `Keil Studio Web IDE `_ with registered user account + + .. collapse:: For Make Build + + * Clone Precision Converters Firmware repository with the --recursive flag (not needed if building with web IDE for Mbed platform): + + .. code-block:: bash + + git clone --recursive https://github.com/analogdevicesinc/precision-converters-firmware + + * If however you've already cloned the repository without the --recursive flag, you may initialize all the submodules in an existing cloned repo with: + + .. code-block:: bash + + git submodule update --recursive --init + + * Install `Make `_ in the root of 'C' drive without any spaces in the installation path. The path must be **C:\\GnuWin32\\…**. Add this path into the system environmental path variable (as shown in below screenshot). + + * Install `Git `_ and add a path of **C:\\Program Files\\Git\\usr\\bin\\** directory into system environmental path variable (please verify your git installation path is correct). + + * Install Mbed CLI 1 as per guide `here `_. + + * Install `GNU Arm Embedded compiler `_ (for the development, 9-2019-q4-major version is used) and add a path of GNU Arm Embedded Toolchain bin directory into the system environmental path variable (as shown in below screenshot). + + * Configure the compiler location with Mbed CLI. This can be carried out by running the **mbed config -G GCC_ARM_PATH ** in Command Prompt. For example you can run **mbed config -G GCC_ARM_PATH "C:\\Program Files (x86)\\GNU Tools ARM Embedded\\9 2019-q4-major\\bin"** in command prompt. It will set mentioned compiler path to all the Mbed Projects. + + .. image:: /source/build/environmental_variables.png + :width: 400 + + + .. collapse:: STM32 + + .. collapse:: For STM32 IDE based Build + + * Install `STM32CubeIDE `_ + + * Install `STM32CubeMX `_ + + * Install `Git `_ and add a path of **C:\\Program Files\\Git\\usr\\bin\\** directory into system environmental path variable (please verify your git installation path is correct). + + * Install `Make `_ in the root of 'C' drive without any spaces in the installation path. The path must be **C:\\GnuWin32\\…**. Add this path into the system environmental path variable (as shown in below screenshot). + + * Install `GNU Arm Embedded compiler `_ (for the development, 9-2019-q4-major version is used) and add a path of GNU Arm Embedded Toolchain bin directory into the system environmental path variable (as shown in below screenshot). + + .. image:: /source/build/environmental_variables.png + :width: 400 + + +.. collapse:: Building a project + :open: + + Once the build enviornment is setup, follow the guide below to build your project + and generate executable file (.bin/.hex) + + .. collapse:: Windows + + + .. collapse:: Mbed + + .. collapse:: Build Using Web/Online IDE + + * Clone the `Precision Converters Firmware repository `_ into Keil Studio using "File->clone…" menu. + + .. image:: /source/build/mbed_keil_studio_project_clone.png + :width: 600 + + * Once the project repository is imported, wait until all library dependencies are imported as shown in below screenshot. Now, open the '.medignore' file present in the root directory of repository. Add comment syntax (two forward slashes) in front of the project name which you want to build. This will ignore all other projects and build only the comment syntax selected project. + + .. image:: /source/build/mbedignore_changes.png + :width: 600 + + * Select the target device (default used for development is SDP-K1) and click on 'Clean build' option to build the project. After a successful build a binary will be downloaded to your computer- store this on your drive. Drag and drop this binary to the USB drive hosted by your controller board to flash the MCU. + + .. image:: /source/build/mbed_build.png + :width: 400 + + .. note:: + + If you intend to build different project, then modify the .medignore file in the root directory as + mentioned in step2 and clean build project as mentioned in step3 + + + .. collapse:: Build Using Make + + * Open Git bash and change current directory to project directory (eg. **precision-converters-firmware/projects/ad4130_iio** directory) which you want to build. + + * Type **make** on the git bash command prompt to build a project. + + * After successful build, binary file will be created into the **Project_Name/build** directory. + + * If you want to clean build, type **make reset** on git bash command which deletes all generated build files for the given project. + + .. note:: + + Default TARGET_BOARD is SDP_K1 and COMPILER is GCC_ARM. Current Make based build only support GCC_ARM Compiler. + + * By default project is built for "SDP_K1" Board and "GCC_ARM" Compiler. If you want to build for other Mbed Board, For example If you want to build the project for "DISCO_F769NI" Board then run **make TARGET_BOARD=DISCO_F769NI** command in git bash command prompt. If you want to clean build, run **make reset TARGET_BOARD=DISCO_F769NI** command to delete the generated build files for the given project. + + + .. collapse:: STM32 + + .. collapse:: Build Using STM32 IDE + + * Open the respective project directory by navigating into the "precision_converters_firmware/projects/" folder. + + * In the "STM32" folder present within the project directory, double click and open the .ioc file present within. + + .. image:: /source/build/stm32_project_directory.png + :width: 600 + + * Click on the "Generate Code" option seen on the top right corner + + .. image:: /source/build/stm32_generate_code.png + :width: 600 + + * Upon successful generation of drivers for the selected MCU, the autogenerated files would be seen in the same directory where the .ioc file was present. Double click and open the ".project" file seen in the list of files + + .. image:: /source/build/stm32_auto_generated_files.png + :width: 600 + + * After the project is loaded to the STM32CubeIDE, unfold the adxxxx_iio project seen in the project explorer, right click the "app" folder, select "Settings" under the "C/C++ Build" section on the left pane and un-check the "Exclude resources from build" checkbox. This would ensure that the project specific files are included by the build system + + .. image:: /source/build/stm32_exclude_files_option.png + :width: 600 + + * In order to choose STM32 platform in the firmware, select the "ACTIVE_PLATFORM" as "STM32_PLATFORM" in the app_config.h from the respective project. + + * Add compiler flags "-u _printf_float" to the project settings. + + .. image:: /source/build/stm32_compiler_flag.png + :width: 600 + + * Program by clicking on the "Run adxxxx_iio" option seen or by performing a copy->paste option of the .hex file seen in the STM32/Debug folder + + .. image:: /source/build/stm32_run_option.png + :width: 600 + + + +.. collapse:: Running a project + :open: + + Once the firmware build is successful and binary file is generated, copy the + generated binary into USB drive hosted by your MCU board (e.g. USB drive hosted + by SDP-K1 board on windows). This will flash the binary file into MCU present + on the controller board. Programming might vary based on the tools used for building + a project. The 'Project Build' section above talks about this exception at the end + of all build steps. diff --git a/_sources/source/code_style.rst.txt b/_sources/source/code_style.rst.txt new file mode 100644 index 00000000..2de13d02 --- /dev/null +++ b/_sources/source/code_style.rst.txt @@ -0,0 +1,48 @@ +Code Styles +----------- + +To apply style guidelines, `astyle `_ is used. + +For the source code in the repository, the following configuration should be used +through astyle_config file: + +.. code-block:: bash + + --style=linux + --indent=force-tab=8 + --max-code-length=80 + --suffix=none + +**Run manually:** + +To use it, copy the script above to a file named e.g. 'astyle_config'. Then, to +apply the style to the source file example.cpp, call 'astyle' with the following +command: + +.. code-block:: bash + + astyle --options=astyle_config example.cpp + +The file example.cpp will be rewritten to match the style rules. + +**Run from script (Linux):** + +A shell script that automates the code style check is available at: ``_ + +Run the script from the root of the repository, for example: + +.. code-block:: bash + + ./ci/astyle.sh + +All the changed files in the last commit from the current branch will be checked +and rewritten. The differences will be displayed after code style is applied. + +**Run script with parameter:** + +Optionally, the commit range can be passed as parameter to the script, applying +code style on all changed files within the commits. + +.. code-block:: bash + + ./ci/astyle.sh diff --git a/_sources/source/contributing.rst.txt b/_sources/source/contributing.rst.txt new file mode 100644 index 00000000..a22d793a --- /dev/null +++ b/_sources/source/contributing.rst.txt @@ -0,0 +1,35 @@ +Contributing +------------ + +When contributing to Precision Converters Firmware please consider the following checklist: + + * Copyright header has been added to source and header files + + * Artistic Style (astyle) has been run to lint new code + + * Add EEPROM validation code + + * Add all context attributes (e.g. fw_version, hw_carrier, hw_mezzanine, hw_name, hw_mezzanine_status) + + * IIO attributes in the firmware match the corresponding Linux driver attributes + + * Create a readme.md in the project directory explaining how to use the project + + * Validate EEPROM detection and context attributes creation using IIO clients (e.g. ACE, IIO Oscilloscope) + + * Capture and verify ADC data using an IIO client + + * Test on the target platform with USE_SDRAM and NO_SDRAM where applicable + + * Test on the target platform with physical and virtual serial ports where applicable + + * Test using the STM32 HAL where applicable + + * Validate attributes, calibration, temperature sensing, etc using a client + + * Update corresponding ADI Wiki pages + + * Request links to those pages on the product page + + * Open a pull request on Github + \ No newline at end of file diff --git a/_sources/source/hardware/comm_interface.rst.txt b/_sources/source/hardware/comm_interface.rst.txt new file mode 100644 index 00000000..2712644f --- /dev/null +++ b/_sources/source/hardware/comm_interface.rst.txt @@ -0,0 +1,43 @@ +======================= +Communication Interface +======================= + +.. note:: + + For data transmission to IIO clients, IIO firmware applications uses *Virtual Serial* + Or *UART* as primary communication links. Firmware by default uses the Virtual Serial + interface for higher speed data transmission as SDP-K1 MCU board and Mbed firmware supports + both Virtual Serial and UART interface. If you target a different MCU board that does not + support Virtual Serial, just set UART as communication link in the firmware (app_config.h file). + +SDP-K1 is powered through USB connection from the computer. SDP-K1 MCU board +acts as a serial device when connected to PC, which creates a serial ports to connect to IIO +client application running on PC. The serial port assigned to a device can be seen +through the device manager for windows-based OS as shown below: + +.. image:: /source/hardware/serial_ports_view.png + :width: 350 + +.. note:: + + The serial port naming is used differently on different operating systems. + For example, Linux uses terms such as dev/ttyUSB* and Mac uses terms such as dev/tty.USB*. + Please check serial port naming for your selected OS. + +**Identifying Virtual Serial Port (Windows-OS):** + +To identify if serial port is virtual, right click on the port name and select 'Properties'. +Select 'Events' from menu option and check for below highlighted VIDs/PIDs and +firmware name which is currently running on MCU. + +.. image:: /source/hardware/identifying_virtual_serial_port.png + :width: 350 + +SDP-K1 can support high speed Virtual Serial USB interface, so by default Virtual Serial +is configured as default interface in the Mbed firmware. The interface can be set to +Physical (UART) serial port by defining macro **USE_PHY_COM_PORT** in the app_config.h file. + +.. code-block:: C + + /* Enable the UART/VirtualCOM port connection (default VCOM) */ + //#define USE_PHY_COM_PORT // Uncomment to select UART diff --git a/_sources/source/iio_osc/iio_osc.rst.txt b/_sources/source/iio_osc/iio_osc.rst.txt new file mode 100644 index 00000000..48d61631 --- /dev/null +++ b/_sources/source/iio_osc/iio_osc.rst.txt @@ -0,0 +1,92 @@ +Using IIO Oscilloscope +---------------------- + +============ +Installation +============ + +Refer this page to install IIO oscilloscope for Windows or Linux OS: `IIO Oscilloscope (Client) `_ + +================ +Running on Linux +================ + +Refer this page: ``_ + +================== +Running on Windows +================== + +Open the IIO Oscilloscope application from start menu and configure the serial (UART) +settings as shown below. Click on refresh button and device should pop-up +in the IIO devices list. + + .. image:: /source/iio_osc/iio_osc_connect_window.png + :width: 300 + +Click 'Connect' and it should by default open the data ‘Capture’ window. You can +drag aside or close this window to see the main ‘Debug and DMM’ tab window. + + .. image:: /source/iio_osc/iio_osc_tabs.png + :width: 500 + +=============================================== +Configure/Access Device Attributes (Parameters) +=============================================== + +The IIO Oscilloscope allows user to access and configure different device parameters, +called as 'Attributes“. There are 2 types of attributes: + +* Device Attributes (Global): Access/Configure common device parameters. +* Channel Attributes (Specific to channels): Access/Configure channel specific device parameters. + +================================================== +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, do not access/use the Data + capture or Debug tab as this could impact data capturing. All uses same + communication bus to access the data which could result into access/busy conflicts + during data capture. + +.. image:: /source/iio_osc/iio_osc_dmm_tab.png + :width: 500 + +============================ +Data Capture from IIO Device +============================ + +To capture the data from 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. All uses same communication bus to access the data which + could result into access/busy conflicts during data capture. + +*Time Domain plot:* + + .. image:: /source/iio_osc/iio_osc_time_domain_plot.png + :width: 800 + +*Frequency Domain plot:* + + .. image:: /source/iio_osc/iio_osc_freq_domain_plot.png + :width: 800 + +.. note:: + + Select number of samples and channels according to sampling rate of your + device. For very slow ODRs, the data capturing would be too slow and + IIO oscilloscope might become unresponsive waiting for data to be received + from IIO device. diff --git a/_sources/source/projects/ad4130_iio/ad4130_iio.rst.txt b/_sources/source/projects/ad4130_iio/ad4130_iio.rst.txt new file mode 100644 index 00000000..9cfa034c --- /dev/null +++ b/_sources/source/projects/ad4130_iio/ad4130_iio.rst.txt @@ -0,0 +1,243 @@ +AD4130 IIO Application +---------------------- + +================== +Supported Hardware +================== + +**Supported Devices:** + +* `AD4130-8 `_ + +**Supported Evaluation Boards:** + +* `EVAL-AD4130-8WARDZ `_ + +**Supported Carrier Boards:** + +* `SDP-K1 With Mbed `_ + +============ +Introduction +============ + +This guide gives an overview of using the IIO firmware application with Analog Devices +AD4130 Evaluation board and SDP-K1 (or other compatible) MCU controller board, +leveraging Mbed-OS as a primary software platform. This firmware application +leverages the ADI developed IIO (Industrial Input Output) ecosystem to evaluate +the AD4130 (IIO) device by providing device configuration and data capture support. + + .. image:: /source/tinyiiod/app_interface.png + :width: 350 + +The interface used for communicating with PC based IIO clients is either Virtual Serial Or UART. +IIO Firmware leverages the ADI created no-os and platform driver software layers +to communicates with IIO device. + +.. SDP-K1 Mbed Section + +.. include:: /source/tinyiiod/sdp_k1_mbed.rst + +.. Useful links Section + +.. include:: /source/useful_links.rst + +==================== +Hardware Connections +==================== + + .. image:: /source/projects/ad4130_iio/ad4130_hardware_connections.png + :width: 600 + +=============== +Jumper Settings +=============== + +**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-AD4130 (Rev D):** + +.. note:: + + Below jumper settings of AD4130 EVB are specific to sensor demo modes supported in the firmware. Change the + jumper settings according to your requirements/demo configurations. + ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|Jumper | User Default Config | Thermistor | RTD | Thermocouple | ECG | Power Test | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK1, LK2, LK3 | Short | Short | Short | Short | Short | Short | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK4 | A | A | Open | Open | Open | A | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK5 | Open | Open | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK6 | Short | Short | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK7 | A | A | A | A | A | A | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK8, LK9, LK10, LK11 | Open | Open | Open | Open | Open | Short | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK12 | Open | Open | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK14 | Open | Open | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK15, LK16 | A | A | A | A | A | A | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK17, LK18, LK19, LK20 | A | A | A | A | A | A | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK21 | Open | Open | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK22 | Open | Open | Open | Short | Short | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK23, LK24 | Open | Open | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK25 | Open | Open | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK26 | Short | Short | Short | Short | Short | Short | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK27 | B | B | B | B | B | B | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK28 | B | B | B | B | B | B | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK29 | Short | Short | Short | Short | Short | Short | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK30, LK31, LK32 | Open | Open | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK35 | Open | Open | Short | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK36 | Open | Open | Short | Short | Short | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK37 | Open | Short | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|LK45 | Open | Open | Open | Open | Open | Open | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|J4 | Open | NA | NA | NA | NA | NA | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|J5 | Open | NA | NA | NA | NA | NA | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|AVDD SW | 3.3v POS | 3.3v POS | 3.3v POS | 3.3v POS | NA | 3.3v POS | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|IOVDD SW | 3.3v POS | 3.3v POS | 3.3v POS | 3.3v POS | NA | 3.3v POS | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|REFIN+/- SW | REFIN1+/- | REFIN1+/- | REFIN1+/- | REFIN1+/- | NA | REFIN1+/- | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|T_AVDD | A | A | A | A | NA | A | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ +|T_IOVDD | A | A | A | A | NA | A | ++-----------------------+-----------------------+----------------+------------+----------------+----------+-----------------+ + +.. Communication Interface section: + +.. include:: /source/hardware/comm_interface.rst + + +.. Project Build Section: + +.. include:: /source/build/project_build.rst + + +.. IIO Ecosystem Section: + +.. include:: /source/tinyiiod/iio_ecosystem.rst + + +======================== +AD4130 Sensor Demo Modes +======================== + +AD4130 IIO firmware provides support for interfacing different sensors to analog +inputs and perform the measurement on them. Below sensor demo modes are supported in the firmware. + +* User Default Config (All channels test) +* 2-wire/3-wire/4-wire RTD (Default is PT100) +* Thermistor (Default is 10K NTC) +* Thermocouple (Default is T type TC and PT1000 RTD as CJC) +* Load Cell (4-wire bridge) +* Noise Test (AIN0-AIN1 shorted) +* ECG +* Power Test (ADC internal channels voltage/current measurement) + +.. note:: + + The demo mode configurations can be changed from respective user_config + header files and some sensor specific parameters can be updated from + ad4130_temperature_sensor.cpp file. + +=================== +Demo Mode Selection +=================== + +The sensor mode selection is done from “app_config.h” file using “ACTIVE_DEMO_MODE_CONFIG” +macro. The selection is done at compilation time, that means only one sensor demo +mode is active at a time. Whenever demo mode is changed from app_config.h file, +the code must be compiled again to generate a new binary file for that. + +============================ +Demo Mode User Configuration +============================ + +Firmware maintains the unique user configuration file for each sensor demo mode +as per below table. The configurations can be updated by using .c and .h user config files. + ++-----------------------------+---------------------------------+ +|Demo Mode | User Config Files | ++-----------------------------+---------------------------------+ +| 2-wire/3-wire/4-wire RTD | ad4130_rtd_config.c/.h | ++-----------------------------+---------------------------------+ +| Thermistor | ad4130_thermistor_config.c/.h | ++-----------------------------+---------------------------------+ +| Thermocouple | ad4130_thermocouple_config.c/.h | ++-----------------------------+---------------------------------+ +| Load Cell | ad4130_loadcell_config.c/.h | ++-----------------------------+---------------------------------+ +| Noise Test | ad4130_noise_test_config.c/.h | ++-----------------------------+---------------------------------+ +| ECG | ad4130_ecg_config.c/.h | ++-----------------------------+----------+----------+-----------+ +| Power Test | ad4130_power_test_config.c/.h | ++-----------------------------+---------------------------------+ + +================== +Sensor Measurement +================== + +Sensor measurement for RTD, Thermistor, Thermocouple, Noise Test, ECG, Power Test +and User Default Config can be done using the IIO oscilloscope GUI client application +or by executing python scripts from the ‘scripts’ folder. Temperature result for RTD, +TC and Thermistor would be in degree Celsius. The result for other configs would in voltage/current. + +Refer to this guide here to setup IIO enviornment for sensor measurements if not already done: +:doc:`Setting-up IIO Ecosystem ` + +Sensor measurement for Load Cell can be done by executing the python script available +in the project “scripts” folder. IIO oscilloscope can only support measurement for voltage, +current and temperature quantities and therefore python code is developed to support +measurement for other sensor types. + +.. code-block:: bash + + $ python ad4130_sensor_measurement.py + +.. image:: /source/projects/ad4130_iio/ad4130_sensor_demo_console.png + :width: 500 + +=========================== +Sensor Channels Calibration +=========================== + +It is possible to calibrate the device channels which are connected to external +sensors. The sensors calibration (gain and offset) is done by executing the python +script “ad4130_calibration.py”. + + +.. IIO Firmware Structure + +.. include:: /source/tinyiiod/iio_firmware_structure.rst + +======= +Support +======= + +Feel free to ask questions in the `EngineerZone `_ diff --git a/_sources/source/projects/ad4130_iio/index.rst.txt b/_sources/source/projects/ad4130_iio/index.rst.txt new file mode 100644 index 00000000..c66e0aa0 --- /dev/null +++ b/_sources/source/projects/ad4130_iio/index.rst.txt @@ -0,0 +1,8 @@ +AD4130 IIO Firmware Application +=============================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + /source/projects/ad4130_iio/ad4130_iio.rst diff --git a/_sources/source/projects/ad7124_temperature-measure/ad7124_temperature-measure.rst.txt b/_sources/source/projects/ad7124_temperature-measure/ad7124_temperature-measure.rst.txt new file mode 100644 index 00000000..e0337f67 --- /dev/null +++ b/_sources/source/projects/ad7124_temperature-measure/ad7124_temperature-measure.rst.txt @@ -0,0 +1,227 @@ +AD7124 Temperature Measure Firmware Application +----------------------------------------------- + +================== +Supported Hardware +================== + +**Supported Devices:** + +* `AD7124-8 `_ + +* `AD7124-4 `_ + +**Supported Evaluation Boards:** + +* `EVAL-AD7124-8 `_ + +* `EVAL-AD7124-4 `_ + +**Supported Carrier Boards:** + +* `SDP-K1 With Mbed `_ + +============ +Introduction +============ + +This guide gives an overview of using the temperature measurement console firmware +application with Analog Devices AD7124 Evaluation board and SDP-K1 (or other compatible) +MCU controller board, leveraging Mbed-OS as a primary software platform. +The firmware application provides an user-interactive menu options for user to select +and configure the multiple temperature sensors at different instances, such as +2/3/4-wire RTDs, NTC Thermistors and Thermocouples. + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_interface.png + :width: 600 + +The interface used for communicating with PC based console tools (e.g. Teraterm) is UART. +Firmware leverages the ADI created no-os and platform driver software layers +to communicates with ADC device. + +.. SDP-K1 Mbed Section + +.. include:: /source/tinyiiod/sdp_k1_mbed.rst + +.. Useful links Section + +.. include:: /source/useful_links.rst + +==================== +Hardware Connections +==================== + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_hardware_connections.png + :width: 800 + +=============== +Jumper Settings +=============== + +**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-AD7124:** + +Refer user manual of required evaluation board. + +======================= +Communication Interface +======================= + +SDP-K1 is powered through USB connection from the computer. SDP-K1 MCU board acts +as a serial device when connected to PC, which creates a serial ports to connect +to console based tool running on PC. The serial port assigned to a device can +be seen through the device manager for windows-based OS as shown below. Use UART +(physical) port for PC communication. + + .. image:: /source/hardware/serial_ports_view.png + :width: 400 + + +.. Project Build Section: + +.. include:: /source/build/project_build.rst + +============== +Using Firmware +============== + +Configure your serial terminal ( Tera Term) for below settings: + + .. image:: /source/console/console_app_teraterm_settings.png + :width: 600 + +The AD7124 temperature measurement example main menu looks like below (with Tera Term): + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_temperature_measure_main_menu.png + :width: 600 + +Firmware allows user to perform the measurement for single or multiple (more than one) +temperature sensors of same type. Below sensors are supported: + +* Single or Multiple 2/3/4-wire RTDs (default is PT100) + +* Single Or Multiple Thermocouple (default is T-type) + +* Single Or Multiple Thermistors (default is 10K NTC) + +User must ensure all sensors are connected to AD7124 evaluation board as per +configurations specific in the software and on this wiki page (see subsequent +sections). If user intend to change these configurations in the software, the +hardware connections must be modified as per new configurations. The details +about altering the software modules for modifying the configurations are given +in 'Modifying Firmware' section. + + .. image:: /source/projects/ad7124_temperature-measure/bypassing_lk6_link_on_legacy_board.png + :width: 600 + +.. note:: + + In order to use analog inputs AIN4 and AIN5 on Legacy AD7124 Eval board + (with SDP-120 interface only) in any of the demo mode, make sure to route the + sensor connections directly through LK6 link, instead of physical screw-terminal + connector. Make sure LK6 link is removed for the same purpose. + +======================================== +Multiple RTD (2/3/4-wire Configurations) +======================================== + +Reference: https://www.analog.com/en/design-center/reference-designs/circuits-from-the-lab/CN0383.html + +**Multiple 2-wire RTD configurations:** + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_multiple_2_wire_rtd_configs.png + :width: 800 + +**Multiple 3-wire RTD configurations:** + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_multiple_3_wire_rtd_configs.png + :width: 800 + +**Multiple 4-wire RTD configurations:** + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_multiple_4_wire_rtd_configs.png + :width: 800 + +==================================== +Multiple Thermocouple Configurations +==================================== + +Reference: https://www.analog.com/en/design-center/reference-designs/circuits-from-the-lab/CN0384.html + +**Thermocouple (Hot Junction) configurations for TC measurement:** + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_multiple_tc_configs.png + :width: 800 + +**Cold Junction Compensation (CJC) configurations for TC measurement:** + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_cjc_configs.png + :width: 800 + +====================================== +Multiple NTC Thermistor Configurations +====================================== + +Reference: https://www.analog.com/en/design-center/reference-designs/circuits-from-the-lab/cn0545.html + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_multiple_ntc10k_configs.png + :width: 800 + +======================= +Calibrating 3-wire RTDs +======================= + +Firmware provides an option for user to perform calibrated measurement on 3-wire +RTD sensors. There are two types of calibration options available in the firmware. +User must modify sensor hardware connections according to configuration defined +in the software. Based on selected calibration type, the sensors are first calibrated +and then 3-wire RTD measurement is performed on them. For more information on the +calibration scheme, refer the `design note `_ +on RTD measurement. + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_3wire_rtd_calibration_menu.png + :width: 800 + +.. note:: + + Calibration is allowed to perform only on Multiple RTD sensors and not on a single RTD sensor. + +================================================= +Calibrating ADC (Internal and System Calibration) +================================================= + +Firmware allows user to perform ADC calibration on the current sensor configuration +(demo mode) selected through console menu. ADC calibration helps to remove any offset +Or gain error present on the input channels. The updated device coefficients (gain and offset) +post ADC calibration are used/applied during the sensor measurement. Therefore, +once calibration is complete, user must go to the previous demo mode which was +selected before ADC calibration and then perform the measurement on selected sensors. +The calibration coefficients (gain and offset) are applied only on the analog input +channels which were enabled prior to calibration. Also after calibration if any +new demo mode is selected apart from the one which was enabled during calibration, +the calibration coefficients are reset and doesn't applied on input channels. In +this case, user must perform the calibration again. + +Internal ADC calibration is straightforward but system calibration needs user +inputs (typically after applying full-scale/zero-scale) voltages on selected +analog inputs. + + .. image:: /source/projects/ad7124_temperature-measure/ad7124_calibration_menu.png + :width: 800 + + +================== +Firmware Structure +================== + + .. image:: /source/tinyiiod/firmware_architecture.png + :width: 600 + +======= +Support +======= + +Feel free to ask questions in the `EngineerZone `_ diff --git a/_sources/source/projects/ad7124_temperature-measure/index.rst.txt b/_sources/source/projects/ad7124_temperature-measure/index.rst.txt new file mode 100644 index 00000000..92f38e29 --- /dev/null +++ b/_sources/source/projects/ad7124_temperature-measure/index.rst.txt @@ -0,0 +1,8 @@ +AD7124 Temperature Measure Firmware Application +=============================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + /source/projects/ad7124_temperature-measure/ad7124_temperature-measure.rst diff --git a/_sources/source/projects/ad738x_iio/ad738x_iio.rst.txt b/_sources/source/projects/ad738x_iio/ad738x_iio.rst.txt new file mode 100644 index 00000000..2c5932a7 --- /dev/null +++ b/_sources/source/projects/ad738x_iio/ad738x_iio.rst.txt @@ -0,0 +1,91 @@ +AD738x IIO Application +---------------------- + +================== +Supported Hardware +================== + +**Supported Devices:** + +* `AD7380 `_ + +**Supported Evaluation Boards:** + +* `EVAL-AD738xFMCZ `_ + +**Supported Carrier Boards:** + +* `SDP-K1 With Mbed `_ + +============ +Introduction +============ + +This guide gives an overview of using the IIO firmware application with Analog Devices +AD738x Evaluation board and SDP-K1 (or other compatible) MCU controller board, +leveraging Mbed-OS as a primary software platform. This firmware application +leverages the ADI developed IIO (Industrial Input Output) ecosystem to evaluate +the AD738x (IIO) device by providing device configuration and data capture support. + + .. image:: /source/tinyiiod/app_interface.png + :width: 350 + +The interface used for communicating with PC based IIO clients is either Virtual Serial Or UART. +IIO Firmware leverages the ADI created no-os and platform driver software layers +to communicates with IIO device. + +.. SDP-K1 Mbed Section + +.. include:: /source/tinyiiod/sdp_k1_mbed.rst + +.. Useful links Section + +.. include:: /source/useful_links.rst + +==================== +Hardware Connections +==================== + +Required: SDP-K1 (or alternative Mbed enabled controller board), EVAL-AD738x board, +9V adapter and USB cable. + +Connect the EVAL-AD7380 board to SDP-K1 board (or any other Mbed enabled controller +board) using jumper wires. Connect SDP-K1 board to the PC using the USB cable. +AD738x FMC EVB is powered through external 9-12V DC adapter. + +=============== +Jumper Settings +=============== + +**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-AD738xFMCZ:** + +Use default board settings. + +.. Communication Interface section: + +.. include:: /source/hardware/comm_interface.rst + + +.. Project Build Section: + +.. include:: /source/build/project_build.rst + + +.. IIO Ecosystem Section: + +.. include:: /source/tinyiiod/iio_ecosystem.rst + + +.. IIO Firmware Structure + +.. include:: /source/tinyiiod/iio_firmware_structure.rst + +======= +Support +======= + +Feel free to ask questions in the `EngineerZone `_ diff --git a/_sources/source/projects/ad738x_iio/index.rst.txt b/_sources/source/projects/ad738x_iio/index.rst.txt new file mode 100644 index 00000000..038a5881 --- /dev/null +++ b/_sources/source/projects/ad738x_iio/index.rst.txt @@ -0,0 +1,8 @@ +AD738x IIO Firmware Application +=============================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + /source/projects/ad738x_iio/ad738x_iio.rst diff --git a/_sources/source/projects/ad7606_iio/ad7606_iio.rst.txt b/_sources/source/projects/ad7606_iio/ad7606_iio.rst.txt new file mode 100644 index 00000000..a358ab3c --- /dev/null +++ b/_sources/source/projects/ad7606_iio/ad7606_iio.rst.txt @@ -0,0 +1,220 @@ +AD7606 IIO Application +---------------------- + +================== +Supported Hardware +================== + +**Supported Devices:** + +* `AD7606B `_ + +* `AD7606C-16 `_ + +* `AD7606C-18 `_ + +* `AD7605-4 `_ + +* `AD7606-4 `_ + +* `AD7606-6 `_ + +* `AD7606 `_ + +* `AD7608 `_ + +* `AD7609 `_ + +**Supported Evaluation Boards:** + +* `EVAL-AD7606B-FMCZ `_ + +* `EVAL-AD7606CFMCZ `_ + +* `EVAL-AD7605-4 `_ + +* `EVAL-AD7606-4 `_ + +* `EVAL-AD7606-6 `_ + +* `EVAL-AD7606 `_ + +* `EVAL-AD7608 `_ + +* `EVAL-AD7609 `_ + +**Supported Carrier Boards:** + +* `SDP-K1 With Mbed `_ + +============ +Introduction +============ + +This guide gives an overview of using the IIO firmware application with Analog Devices +AD7606 Evaluation boards and SDP-K1 (or other compatible) MCU controller board, +leveraging Mbed-OS as a primary software platform. This firmware application +leverages the ADI developed IIO (Industrial Input Output) ecosystem to evaluate +the AD7606 (IIO) device by providing device configuration and data capture support. + + .. image:: /source/tinyiiod/app_interface.png + :width: 350 + +The interface used for communicating with PC based IIO clients is either Virtual Serial Or UART. +IIO Firmware leverages the ADI created no-os and platform driver software layers +to communicates with IIO device. + +.. SDP-K1 Mbed Section + +.. include:: /source/tinyiiod/sdp_k1_mbed.rst + +.. Useful links Section + +.. include:: /source/useful_links.rst + +==================== +Hardware Connections +==================== + + .. image:: /source/projects/ad7606_iio/ad7606_hardware_connections.png + :width: 800 + +=============== +Jumper Settings +=============== + +**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 AD7606B FMC board. +For other boards, refer respective user manual for more details. + ++-----------------------+----------------+---------------------------------------------+ +|Jumper | Position | Purpose | ++-----------------------+----------------+---------------------------------------------+ +|JP1 | A | Ignored in software mode | ++-----------------------+----------------+---------------------------------------------+ +|JP2 | B | The unregulated external supply to the | +| | | on-board LDOs is taken from the P4 | +| | | terminal block connector (9V screw terminal)| ++-----------------------+----------------+---------------------------------------------+ +|JP3 | A | The AD7606B is supplied with 3.3V VDRIVE | +| | | from the ADP7118 | ++-----------------------+----------------+---------------------------------------------+ +|JP4 | A | Ignored in software mode. | ++-----------------------+----------------+---------------------------------------------+ +|JP5 | A | Serial interface is selected. | ++-----------------------+----------------+---------------------------------------------+ +|JP6 | B | Internal reference is enabled and selected. | +| | | R1 must be unpopulated. | ++-----------------------+----------------+---------------------------------------------+ +|OS Switches (S1) | Default (Open) | Open by default. The OS pins are controlled | +| | | and set in the firmware as logic high. | ++-----------------------+----------------+---------------------------------------------+ + +.. Communication Interface section: + +.. include:: /source/hardware/comm_interface.rst + + +.. Project Build Section: + +.. include:: /source/build/project_build.rst + + +.. IIO Ecosystem Section: + +.. include:: /source/tinyiiod/iio_ecosystem.rst + + +Calibrating AD7606B/C Devices +============================= + +**ADC Gain Calibration:** + +ADC gain calibration can be done in 3 easy steps as mentioned in below diagram. +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. + +*References: Source file: iio_ad7606.c, Function: get_chn_calibrate_adc_gain()* + + .. image:: /source/projects/ad7606_iio/ad7606_gain_calibration.png + :width: 1000 + +**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. + +*References: Source file: iio_ad7606.c, Function: get_chn_calibrate_adc_offset()* + + .. image:: /source/projects/ad7606_iio/ad7606_offset_calibration.png + :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). + +*References: Source file: iio_ad7606.c, Function: get_chn_open_circuit_detect_manual()* + + .. image:: /source/projects/ad7606_iio/ad7606_manual_open_circuit.png + :width: 1000 + +**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. + +*References: Source file: iio_ad7606.c, Function: get_chn_open_circuit_detect_auto()* + + .. image:: /source/projects/ad7606_iio/ad7606_auto_open_circuit.png + :width: 1000 + + +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:: /source/projects/ad7606_iio/ad7606_diagnostic_mux.png + :width: 1000 + + +.. IIO Firmware Structure + +.. include:: /source/tinyiiod/iio_firmware_structure.rst + +======= +Support +======= + +Feel free to ask questions in the `EngineerZone `_ diff --git a/_sources/source/projects/ad7606_iio/index.rst.txt b/_sources/source/projects/ad7606_iio/index.rst.txt new file mode 100644 index 00000000..b8fd4ee2 --- /dev/null +++ b/_sources/source/projects/ad7606_iio/index.rst.txt @@ -0,0 +1,8 @@ +AD7606 IIO Firmware Application +=============================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + /source/projects/ad7606_iio/ad7606_iio.rst diff --git a/_sources/source/projects/ad7689_iio/ad7689_iio.rst.txt b/_sources/source/projects/ad7689_iio/ad7689_iio.rst.txt new file mode 100644 index 00000000..e4c06ce3 --- /dev/null +++ b/_sources/source/projects/ad7689_iio/ad7689_iio.rst.txt @@ -0,0 +1,99 @@ +AD7689 IIO Application +---------------------- + +================== +Supported Hardware +================== + +**Supported Devices:** + +* `AD7689 `_ + +* `AD7682 `_ + +* `AD7699 `_ + +* `AD7949 `_ + +**Supported Evaluation Boards:** + +* `EVAL-AD7689 `_ + +* `EVAL-AD7682 `_ + +* `EVAL-AD7699 `_ + +* `EVAL-AD7949 `_ + +**Supported Carrier Boards:** + +* `SDP-K1 With Mbed `_ + +============ +Introduction +============ + +This guide gives an overview of using the IIO firmware application with Analog Devices +AD7689 Evaluation board and SDP-K1 (or other compatible) MCU controller board, +leveraging Mbed-OS as a primary software platform. This firmware application +leverages the ADI developed IIO (Industrial Input Output) ecosystem to evaluate +the AD7689 (IIO) device by providing device configuration and data capture support. + + .. image:: /source/tinyiiod/app_interface.png + :width: 350 + +The interface used for communicating with PC based IIO clients is either Virtual Serial Or UART. +IIO Firmware leverages the ADI created no-os and platform driver software layers +to communicates with IIO device. + +.. SDP-K1 Mbed Section + +.. include:: /source/tinyiiod/sdp_k1_mbed.rst + +.. Useful links Section + +.. include:: /source/useful_links.rst + +==================== +Hardware Connections +==================== + + .. image:: /source/projects/ad7689_iio/ad7689_hardware_connections.png + :width: 800 + +=============== +Jumper Settings +=============== + +**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-AD7689:** + +Use default board settings. + +.. Communication Interface section: + +.. include:: /source/hardware/comm_interface.rst + + +.. Project Build Section: + +.. include:: /source/build/project_build.rst + + +.. IIO Ecosystem Section: + +.. include:: /source/tinyiiod/iio_ecosystem.rst + + +.. IIO Firmware Structure + +.. include:: /source/tinyiiod/iio_firmware_structure.rst + +======= +Support +======= + +Feel free to ask questions in the `EngineerZone `_ diff --git a/_sources/source/projects/ad7689_iio/index.rst.txt b/_sources/source/projects/ad7689_iio/index.rst.txt new file mode 100644 index 00000000..229462fb --- /dev/null +++ b/_sources/source/projects/ad7689_iio/index.rst.txt @@ -0,0 +1,8 @@ +AD7689 IIO Firmware Application +=============================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + /source/projects/ad7689_iio/ad7689_iio.rst diff --git a/_sources/source/projects/ad77681_iio/ad77681_iio.rst.txt b/_sources/source/projects/ad77681_iio/ad77681_iio.rst.txt new file mode 100644 index 00000000..7265e9a7 --- /dev/null +++ b/_sources/source/projects/ad77681_iio/ad77681_iio.rst.txt @@ -0,0 +1,90 @@ +AD7768-1 IIO Application +------------------------ + +================== +Supported Hardware +================== + +**Supported Devices:** + +* `AD7768-1 `_ + +**Supported Evaluation Boards:** + +* `EVAL-CN0540-ARDZ `_ + +**Supported Carrier Boards:** + +* `SDP-K1 With Mbed `_ + +============ +Introduction +============ + +This guide gives an overview of using the IIO firmware application with Analog Devices +AD7768-1 Evaluation board and SDP-K1 (or other compatible) MCU controller board, +leveraging Mbed-OS as a primary software platform. This firmware application +leverages the ADI developed IIO (Industrial Input Output) ecosystem to evaluate +the AD7768-1 (IIO) device by providing device configuration and data capture support. + + .. image:: /source/tinyiiod/app_interface.png + :width: 350 + +The interface used for communicating with PC based IIO clients is either Virtual Serial Or UART. +IIO Firmware leverages the ADI created no-os and platform driver software layers +to communicates with IIO device. + +.. SDP-K1 Mbed Section + +.. include:: /source/tinyiiod/sdp_k1_mbed.rst + +.. Useful links Section + +.. include:: /source/useful_links.rst + +==================== +Hardware Connections +==================== + + .. image:: /source/projects/ad77681_iio/ad77681_hardware_connections1.png + :width: 600 + + .. image:: /source/projects/ad77681_iio/ad77681_hardware_connections2.png + :width: 700 + +=============== +Jumper Settings +=============== + +**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-CN0540-ARDZ:** + +Use default board settings. + +.. Communication Interface section: + +.. include:: /source/hardware/comm_interface.rst + + +.. Project Build Section: + +.. include:: /source/build/project_build.rst + + +.. IIO Ecosystem Section: + +.. include:: /source/tinyiiod/iio_ecosystem.rst + + +.. IIO Firmware Structure + +.. include:: /source/tinyiiod/iio_firmware_structure.rst + +======= +Support +======= + +Feel free to ask questions in the `EngineerZone `_ diff --git a/_sources/source/projects/ad77681_iio/index.rst.txt b/_sources/source/projects/ad77681_iio/index.rst.txt new file mode 100644 index 00000000..89c95e19 --- /dev/null +++ b/_sources/source/projects/ad77681_iio/index.rst.txt @@ -0,0 +1,8 @@ +AD7768-1 IIO Firmware Application +================================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + /source/projects/ad77681_iio/ad77681_iio.rst diff --git a/_sources/source/projects/index.rst.txt b/_sources/source/projects/index.rst.txt new file mode 100644 index 00000000..4f850c8c --- /dev/null +++ b/_sources/source/projects/index.rst.txt @@ -0,0 +1,13 @@ +Firmware Applications +===================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + /source/projects/ad4130_iio/index.rst + /source/projects/ad7689_iio/index.rst + /source/projects/ad7606_iio/index.rst + /source/projects/ad77681_iio/index.rst + /source/projects/ad738x_iio/index.rst + /source/projects/ad7124_temperature-measure/index.rst diff --git a/_sources/source/python/python.rst.txt b/_sources/source/python/python.rst.txt new file mode 100644 index 00000000..7d0d94a7 --- /dev/null +++ b/_sources/source/python/python.rst.txt @@ -0,0 +1,18 @@ +============ +Using Python +============ + +============ +Installation +============ + +* Install python into your local machine. + +* Install the “pyadi-iio” python package by executing command “python -m pip install pyadi-iio”. Detailed guide on installing it is available in `Python Interfaces for ADI Hardware `_ + +====================== +Running Python Scripts +====================== + +The device specific examples scripts can be run from pyadi-iio repo once the installation is successful. +Example scripts can be found here: ``_ diff --git a/_sources/source/tinyiiod/data_capture.rst.txt b/_sources/source/tinyiiod/data_capture.rst.txt new file mode 100644 index 00000000..882a05fd --- /dev/null +++ b/_sources/source/tinyiiod/data_capture.rst.txt @@ -0,0 +1,163 @@ +================================ +IIO Data Capture and Limitations +================================ + +============ +Introduction +============ + +This page focuses on the IIO firmware part of 'Data Capturing. The "AD7606 IIO Application" +is used as a reference for this discussion. + +IIO clients can be used to capture and visualize the continuous analog or +discrete signals from any ADC device using a IIO firmware application developed +for that particular device. This allows user to monitor a real-time data. Using +this firmware, a user can perform device calibration, change the gain, voltage +range, data rate, etc. (based on device used) and observe the effects that different +configurations have on the data displayed on IIO client. IIO clients +also allows users to save the data, which can further be used to process and analyze it. + +The diagram below shows the continuous capture of signals on an AD7606 ADC, which +is an 8-channel DAS. A 1Khz signal is applied on inputs of all 8 analog channels. +The max data capturing rate in firmware is ~30 to 40 KSPS. The data is transmitted +from firmware application using Virtual Serial or UART serial link. + +.. image:: /source/iio_osc/iio_osc_sine_wave_capture.png + :width: 800 + +.. image:: /source/iio_osc/iio_osc_trapezoidal_wave_capture.png + :width: 800 + +The channels for which data is to be captured can be selected from the GUI window, +along with the number of samples to display on screen in a single data read query. +As shown below, all 8 channels are selected for data capture and the number of +requested samples is set at 400 (default). This means, IIO oscilloscope requests +400 samples per channel, so in this case total 3200 samples. The channels are +stored as shown below: + +.. image:: /source/iio_osc/iio_osc_select_chn_samples.png + :width: 800 + +================================================= +Limitations of Data Capture Using IIO Application +================================================= + +There are 3 major factors which can potentially impact the data capturing: + +* Sampling/Capturing Rate of ADC + +* Data Transmission Rate (serial link) of MCU + +* Buffer size limitations in the firmware (MCU RAM size) + +**ADC Data Sampling/Capturing Rate:** + +The data capturing or sampling rate defines the maximum rate/speed at which data +can be sampled and captured from the ADC using the IIO firmware application. For +ADC's, typical time to capture single ADC sample is defined as: + +Time to capture single sample: ADC acquisition time + ADC sampling time + ADC data read time over digital interface + +For AD7606, this time is typically 28usec for all 8-channels (obtained in IIO firmware). +AD7606 captures all 8-channels in single conversion cycle. When calculating the +sample rate per second, it is obtained as ~284 KSPS for all 8 channels +(28usec / 8 = 3.5usec. Sample rate/second = 1/3.5usec = 284 KSPS). This gives +sample rate per channel as ~35KSPS. + +Data capturing rate is also limited because of an additional overhead in the MCU firmware +such as interrupt context switching time, SPI (digital interface) clock frequency, MCU clock speed, etc. + +35Khz therefore can be considered as the sampling frequency. As per 'Nyquist–Shannon sampling theorem', +the sampling frequency should theoretically be greater than twice the analog input +frequency for faithful reproduction of the signal after conversion. However, in +practice sampling frequency should be high enough to capture multiple slices/samples +in given period, so that the input signal is replicated smoothly. + +Due to this limitations, IIO firmware can sample input frequencies which are very +less than max possible data rate. In case of AD7606, it is possible to sample the +signals with frequencies of 4Khz and less when no oversampling is present. At OSR > 0, +the data rate drops down and so higher frequency signals can't be reproduced correctly. +Below plot is captured with 17Khz analog input on channel 1 and it can be seen that +the signal is not a pure sine wave. + +.. image:: /source/iio_osc/iio_osc_high_frequency_graph.png + :width: 800 + + +**Data Transmission Rate (serial link) of MCU:** + +This is the rate or speed at which data can be transmitted to IIO client +over the serial link (e.g. UART or Virtual serial). The data transmission link +must be fast enough the transmit the buffered data from firmware for continuous capture. +The IIO clients requests data in aperiodic manner, meaning that new data +capture request is sent immediately when data from previous request is received. + +Capturing Rate < Transmission Rate: + +If data capturing rate is lower than transmission rate, the IIO client can wait for +certain period of time before sufficient samples are captured in the buffer. If +time to capture these samples is higher than IIO client timeout period, the +IIO client aborts the request and attempt new capture request. Therefore user must +always ensure that the timeout factor of IIO clients is large enough to handle +slower sampling rates (ODRs) of ADCs. + +Main factor that determines the IIO oscilloscope timeout is 'sampling_frequency' attribute. +If this attribute is not defined, the timeout period for IIO oscilloscope during +data capture is set to 2sec default, however, if this attribute is defined, the +time is calculated as: number of requested samples * (1 / sampling_frequency). +For example, if sampling frequency is set as 400SPS, the timeout period is: + +timeout = 400 (requested samples) * (1 / 10000 SPS) + 1sec = 1.4 sec + +Capturing Rate > Transmission Rate: + +If data capturing rate is too high compared to the transmission rate, the data +acquisition into a buffer happens faster. So data buffer might fill faster compared +to emptying operation. This might lead to a discontinuity on data visualization +on IIO oscilloscope side as data visualization is limited by data transmission +rate in this case (with slower serial communication link). If communication link +is faster and matches to capturing/sampling rate, the visualization of data would +be more continuous. Having a large data buffer in the firmware can minimize this +issue to large extend but it can't completely solve the problem. + + +**Buffer size limitations in the firmware:** + +Size of data buffer on the firmware is always restricted due to MCU memory size. +The requested number of samples from IIO client application therefore must always +be less than the total size of data buffer. If requested samples are more than +the size of data buffer, IIO firmware returns negative error code to IIO client +which then terminates the data capture request. + +Buffer size can be increased to larger value by making use of interna/external +RAMs. For example, SDP-K1 MCU board has 16Mbytes of onboard SDRAM, which allows +larger data buffer size in the firmware. By enabling SDRAM in the SDP-K1 targetted +Mbed firmware (app_config.h file), the data buffer size can be increased to 16Mbytes. + +.. code-block:: C + + /* Enable/Disable the use of SDRAM for ADC data capture buffer */ + //#define USE_SDRAM // Uncomment to use SDRAM for data buffer + +IIO firmware maintains the circular data buffer with dedicated read and write indices. +Below diagram illustrates the use of circular buffer in the firmware. + +.. image:: /source/tinyiiod/iio_data_capture_in_firmware.png + :width: 600 + +==================== +Saving Captured Data +==================== + +The data on IIO oscilloscope can be saved for further processing and analysis. The +data is saved using a .csv format. The data can be captured for each selected +channel during save option and only requested number of samples can be saved. So +if 400 samples are requested, the data for only 400 samples would get saved into +.csv file. The data is raw adc data and no extra processing is performed it while +saving or capturing. + +.. image:: /source/iio_osc/iio_osc_data_save.png + :width: 600 + +The data saving feature is also available with other IIO client applications such as +python and ACE. diff --git a/_sources/source/tinyiiod/iio_ecosystem.rst.txt b/_sources/source/tinyiiod/iio_ecosystem.rst.txt new file mode 100644 index 00000000..00dc6253 --- /dev/null +++ b/_sources/source/tinyiiod/iio_ecosystem.rst.txt @@ -0,0 +1,51 @@ +======================= +Using the IIO Ecosystem +======================= + +IIO (Industrial Input/Output) is a flexible ecosystem that allows various +client tools to communicate with IIO device to configure the device, capture device +data, generate waveforms, access registers, etc. Below diagram demonstrates the +high level architecture of IIO ecosystem. + +``_ + + .. image:: /source/tinyiiod/flexible_iio_ecosystem.png + :width: 600 + +========== +IIO Tools: +========== + +:doc:`IIO Oscilloscope ` +ADI IIO Oscilloscope is a cross platform GUI application, which demonstrates how +to interface different evaluation boards within an IIO ecosystem. It supports +raw data capture, FFT analysis, DMM measurement, device configuration and register +read/write. + +:doc:`pyadi-iio: Python interfaces ` +Analog Devices python interfaces for hardware with Industrial I/O drivers. It +provides python based scripts for raw data capture, device configuration +and register read/write. + +`ACE `_ +ADI's "Analysis, Control, Evaluation" (ACE) is a desktop software application +which allows the evaluation and control of multiple evaluation systems. + +`Precision Converters MATLAB Toolbox `_ +Toolbox created by ADI to be used with MATLAB and Simulink with ADI Precision products. + +`IIO Command Line ` +Command line interface for accessing IIO device parameters. + +.. note:: + + These are the general evaluation and prototyping tools for Precision Converters + but not all converters are supported. In some cases these tools provide generic + IIO support (e.g. ACE, IIO Oscilloscope) and can provide basic functionality + with any IIO based system. In other cases if a part is not currently supported, + it is possible to add support for converters that you need due to the open + source nature of the tools. + +:doc:`IIO Data Capture and Limitations ` +This page talks more about mechanism used for data capture in the firmware IIO +applications and what are the data capture limitations. diff --git a/_sources/source/tinyiiod/iio_firmware_structure.rst.txt b/_sources/source/tinyiiod/iio_firmware_structure.rst.txt new file mode 100644 index 00000000..a24e82df --- /dev/null +++ b/_sources/source/tinyiiod/iio_firmware_structure.rst.txt @@ -0,0 +1,9 @@ +====================== +IIO Firmware Structure +====================== + +Below diagram illustrates the architecture of Precision Converters IIO +firmware applications. + +.. image:: /source/tinyiiod/firmware_architecture.png + :width: 500 diff --git a/_sources/source/tinyiiod/sdp_k1_mbed.rst.txt b/_sources/source/tinyiiod/sdp_k1_mbed.rst.txt new file mode 100644 index 00000000..5c7e2126 --- /dev/null +++ b/_sources/source/tinyiiod/sdp_k1_mbed.rst.txt @@ -0,0 +1,7 @@ +.. note:: + + This code has been developed and tested on the SDP-K1 Controller Board with + Arduino headers. However, the same code can be used with minimal modifications + on any Mbed enabled board which has Arduino Header support on it. To find out + all supported Mbed boards, refer this link: ``_ + \ No newline at end of file diff --git a/_sources/source/tinyiiod/useful_links.rst.txt b/_sources/source/tinyiiod/useful_links.rst.txt new file mode 100644 index 00000000..011be60f --- /dev/null +++ b/_sources/source/tinyiiod/useful_links.rst.txt @@ -0,0 +1,23 @@ +============ +Useful Links +============ + +* `no-OS: Software drivers for systems without OS `_ + +* `pyadi-iio: Analog Devices python interfaces for hardware with Industrial I/O drivers `_ + +* `Precision Converters MATLAB Toolbox `_ + +* `IIO Oscilloscope `_ + +* `Analysis | Control | Evaluation (ACE) Software - evaluation and control of multiple evaluation systems `_ + +* `Keil Studio Web IDE/Compiler `_ + +* `SDP-K1 on Mbed `_ + +.. note:: + + These are the general evaluation and prototyping tools for Precision Converters + and not every single part supports all of them. Please refer to a project specific + documentation to find out the supported toolsets for a given part. diff --git a/_sources/source/useful_links.rst.txt b/_sources/source/useful_links.rst.txt new file mode 100644 index 00000000..de36c5ee --- /dev/null +++ b/_sources/source/useful_links.rst.txt @@ -0,0 +1,18 @@ +============ +Useful Links +============ + +* `no-OS: Software drivers for systems without OS `_ + +* `Keil Studio Web IDE/Compiler `_ + +* `SDP-K1 on Mbed `_ + +* `Linux Drivers `_ + +* `HDL Source Code `_ + +.. note:: + + Linux and HDL are not used in emebdded IIO firmware projects but + they may be of interest if you require Linux and/or FPGA support. diff --git a/_static/adi_logo.png b/_static/adi_logo.png new file mode 100644 index 00000000..179fb303 Binary files /dev/null and b/_static/adi_logo.png differ diff --git a/_static/background_b01.png b/_static/background_b01.png new file mode 100644 index 00000000..353f26dd Binary files /dev/null and b/_static/background_b01.png differ diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..c8079f4b --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 210px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/bizstyle.css b/_static/bizstyle.css new file mode 100644 index 00000000..48b4208f --- /dev/null +++ b/_static/bizstyle.css @@ -0,0 +1,512 @@ +/* + * bizstyle.css_t + * ~~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- business style theme. + * + * :copyright: Copyright 2007-2023 by Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; + font-size: 14px; + letter-spacing: -0.01em; + line-height: 150%; + text-align: center; + background-color: white; + background-image: url(background_b01.png); + color: black; + padding: 0; + border-right: 1px solid #336699; + border-left: 1px solid #336699; + + margin: 0px 40px 0px 40px; +} + +div.document { + background-color: white; + text-align: left; + background-repeat: repeat-x; + + -moz-box-shadow: 2px 2px 5px #000; + -webkit-box-shadow: 2px 2px 5px #000; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 240px; + border-left: 1px solid #ccc; +} + +div.body { + margin: 0; + padding: 0.5em 20px 20px 20px; +} +div.bodywrapper { + margin: 0 0 0 calc(210px + 30px); +} + +div.related { + font-size: 1em; + + -moz-box-shadow: 2px 2px 5px #000; + -webkit-box-shadow: 2px 2px 5px #000; +} + +div.related ul { + background-color: #336699; + height: 100%; + overflow: hidden; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; +} + +div.related ul li { + color: white; + margin: 0; + padding: 0; + height: 2em; + float: left; +} + +div.related ul li.right { + float: right; + margin-right: 5px; +} + +div.related ul li a { + margin: 0; + padding: 0 5px 0 5px; + line-height: 1.75em; + color: #fff; +} + +div.related ul li a:hover { + color: #fff; + text-decoration: underline; +} + +div.sphinxsidebarwrapper { + padding: 0; +} + +div.sphinxsidebar { + padding: 0.5em 12px 12px 12px; + width: 210px; + font-size: 1em; + text-align: left; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin: 1em 0 0.5em 0; + font-size: 1em; + padding: 0.1em 0 0.1em 0.5em; + color: white; + border: 1px solid #336699; + background-color: #336699; +} + +div.sphinxsidebar h3 a { + color: white; +} + +div.sphinxsidebar ul { + padding-left: 1.5em; + margin-top: 7px; + padding: 0; + line-height: 130%; +} + +div.sphinxsidebar ul ul { + margin-left: 20px; +} + +div.sphinxsidebar input { + border: 1px solid #336699; +} + +div.footer { + background-color: white; + color: #336699; + padding: 3px 8px 3px 0; + clear: both; + font-size: 0.8em; + text-align: right; + border-bottom: 1px solid #336699; + + -moz-box-shadow: 2px 2px 5px #000; + -webkit-box-shadow: 2px 2px 5px #000; +} + +div.footer a { + color: #336699; + text-decoration: underline; +} + +/* -- body styles ----------------------------------------------------------- */ + +p { + margin: 0.8em 0 0.5em 0; +} + +a { + color: #336699; + text-decoration: none; +} + +a:hover { + color: #336699; + text-decoration: underline; +} + +a:visited { + color: #551a8b; +} + +div.body a { + text-decoration: underline; +} + +h1, h2, h3 { + color: #336699; +} + +h1 { + margin: 0; + padding: 0.7em 0 0.3em 0; + font-size: 1.5em; +} + +h2 { + margin: 1.3em 0 0.2em 0; + font-size: 1.35em; + padding-bottom: .5em; + border-bottom: 1px solid #336699; +} + +h3 { + margin: 1em 0 -0.3em 0; + font-size: 1.2em; + padding-bottom: .3em; + border-bottom: 1px solid #CCCCCC; +} + +div.body h1 a, div.body h2 a, div.body h3 a, +div.body h4 a, div.body h5 a, div.body h6 a { + color: black!important; +} + +h1 a.anchor, h2 a.anchor, h3 a.anchor, +h4 a.anchor, h5 a.anchor, h6 a.anchor { + display: none; + margin: 0 0 0 0.3em; + padding: 0 0.2em 0 0.2em; + color: #aaa!important; +} + +h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, +h5:hover a.anchor, h6:hover a.anchor { + display: inline; +} + +h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, +h5 a.anchor:hover, h6 a.anchor:hover { + color: #777; + background-color: #eee; +} + +a.headerlink { + color: #c60f0f!important; + font-size: 1em; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none!important; +} + +a.headerlink:hover { + background-color: #ccc; + color: white!important; +} + +cite, code, tt { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.01em; +} + +code { + background-color: #F2F2F2; + border-bottom: 1px solid #ddd; + color: #333; +} + +code.descname, code.descclassname, code.xref { + border: 0; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +a code { + border: 0; + color: #CA7900; +} + +a code:hover { + color: #2491CF; +} + +pre { + background-color: transparent !important; + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border-right: 5px solid #ccc; + border-left: 5px solid #ccc; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 2px 7px; + border: 1px solid #ccc; +} + +nav.contents, +aside.topic, +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + +div.admonition { + font-size: 0.9em; + margin: 1em 0 1em 0; + border: 3px solid #cccccc; + background-color: #f7f7f7; + padding: 0; +} + +div.admonition p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} + +div.admonition li p { + margin-left: 0; +} + +div.admonition pre, div.warning pre { + margin: 0; +} + +div.highlight { + margin: 0.4em 1em; +} + +div.admonition p.admonition-title { + margin: 0; + padding: 0.1em 0 0.1em 0.5em; + color: white; + border-bottom: 3px solid #cccccc; + font-weight: bold; + background-color: #165e83; +} + +div.danger { border: 3px solid #f0908d; background-color: #f0cfa0; } +div.error { border: 3px solid #f0908d; background-color: #ede4cd; } +div.warning { border: 3px solid #f8b862; background-color: #f0cfa0; } +div.caution { border: 3px solid #f8b862; background-color: #ede4cd; } +div.attention { border: 3px solid #f8b862; background-color: #f3f3f3; } +div.important { border: 3px solid #f0cfa0; background-color: #ede4cd; } +div.note { border: 3px solid #f0cfa0; background-color: #f3f3f3; } +div.hint { border: 3px solid #bed2c3; background-color: #f3f3f3; } +div.tip { border: 3px solid #bed2c3; background-color: #f3f3f3; } + +div.danger p.admonition-title, div.error p.admonition-title { + background-color: #b7282e; + border-bottom: 3px solid #f0908d; +} + +div.caution p.admonition-title, +div.warning p.admonition-title, +div.attention p.admonition-title { + background-color: #f19072; + border-bottom: 3px solid #f8b862; +} + +div.note p.admonition-title, div.important p.admonition-title { + background-color: #f8b862; + border-bottom: 3px solid #f0cfa0; +} + +div.hint p.admonition-title, div.tip p.admonition-title { + background-color: #7ebea5; + border-bottom: 3px solid #bed2c3; +} + +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + +div.versioninfo { + margin: 1em 0 0 0; + border: 1px solid #ccc; + background-color: #DDEAF0; + padding: 8px; + line-height: 1.3em; + font-size: 0.9em; +} + +.viewcode-back { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +p.versionchanged span.versionmodified { + font-size: 0.9em; + margin-right: 0.2em; + padding: 0.1em; + background-color: #DCE6A0; +} + +dl.field-list > dt { + color: white; + background-color: #82A0BE; +} + +dl.field-list > dd { + background-color: #f7f7f7; +} + +/* -- table styles ---------------------------------------------------------- */ + +table.docutils { + margin: 1em 0; + padding: 0; + border: 1px solid white; + background-color: #f7f7f7; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 1px solid white; + border-bottom: 1px solid white; +} + +table.docutils td p { + margin-top: 0; + margin-bottom: 0.3em; +} + +table.field-list td, table.field-list th { + border: 0 !important; + word-break: break-word; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + color: white; + text-align: left; + padding-right: 5px; + background-color: #82A0BE; +} + +div.literal-block-wrapper div.code-block-caption { + background-color: #EEE; + border-style: solid; + border-color: #CCC; + border-width: 1px 5px; +} + +/* WIDE DESKTOP STYLE */ +@media only screen and (min-width: 1176px) { +body { + margin: 0 40px 0 40px; +} +} + +/* TABLET STYLE */ +@media only screen and (min-width: 768px) and (max-width: 991px) { +body { + margin: 0 40px 0 40px; +} +} + +/* MOBILE LAYOUT (PORTRAIT/320px) */ +@media only screen and (max-width: 767px) { +body { + margin: 0; +} +div.bodywrapper { + margin: 0; + width: 100%; + border: none; +} +div.sphinxsidebar { + display: none; +} +} + +/* MOBILE LAYOUT (LANDSCAPE/480px) */ +@media only screen and (min-width: 480px) and (max-width: 767px) { +body { + margin: 0 20px 0 20px; +} +} + +/* RETINA OVERRIDES */ +@media +only screen and (-webkit-min-device-pixel-ratio: 2), +only screen and (min-device-pixel-ratio: 2) { +} + +/* -- end ------------------------------------------------------------------- */ \ No newline at end of file diff --git a/_static/bizstyle.js b/_static/bizstyle.js new file mode 100644 index 00000000..dee7db87 --- /dev/null +++ b/_static/bizstyle.js @@ -0,0 +1,30 @@ +// +// bizstyle.js +// ~~~~~~~~~~~ +// +// Sphinx javascript -- for bizstyle theme. +// +// This theme was created by referring to 'sphinxdoc' +// +// :copyright: Copyright 2007-2023 by Sphinx team, see AUTHORS. +// :license: BSD, see LICENSE for details. +// +const initialiseBizStyle = () => { + if (navigator.userAgent.indexOf("iPhone") > 0 || navigator.userAgent.indexOf("Android") > 0) { + document.querySelector("li.nav-item-0 a").innerText = "Top" + } + const truncator = item => {if (item.textContent.length > 20) { + item.title = item.innerText + item.innerText = item.innerText.substr(0, 17) + "..." + } + } + document.querySelectorAll("div.related:first ul li:not(.right) a").slice(1).forEach(truncator); + document.querySelectorAll("div.related:last ul li:not(.right) a").slice(1).forEach(truncator); +} + +window.addEventListener("resize", + () => (document.querySelector("li.nav-item-0 a").innerText = (window.innerWidth <= 776) ? "Top" : "precision-converters-firmware documentation") +) + +if (document.readyState !== "loading") initialiseBizStyle() +else document.addEventListener("DOMContentLoaded", initialiseBizStyle) \ No newline at end of file diff --git a/_static/css3-mediaqueries.js b/_static/css3-mediaqueries.js new file mode 100644 index 00000000..59735f59 --- /dev/null +++ b/_static/css3-mediaqueries.js @@ -0,0 +1 @@ +if(typeof Object.create!=="function"){Object.create=function(e){function t(){}t.prototype=e;return new t}}var ua={toString:function(){return navigator.userAgent},test:function(e){return this.toString().toLowerCase().indexOf(e.toLowerCase())>-1}};ua.version=(ua.toString().toLowerCase().match(/[\s\S]+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1];ua.webkit=ua.test("webkit");ua.gecko=ua.test("gecko")&&!ua.webkit;ua.opera=ua.test("opera");ua.ie=ua.test("msie")&&!ua.opera;ua.ie6=ua.ie&&document.compatMode&&typeof document.documentElement.style.maxHeight==="undefined";ua.ie7=ua.ie&&document.documentElement&&typeof document.documentElement.style.maxHeight!=="undefined"&&typeof XDomainRequest==="undefined";ua.ie8=ua.ie&&typeof XDomainRequest!=="undefined";var domReady=function(){var e=[];var t=function(){if(!arguments.callee.done){arguments.callee.done=true;for(var t=0;t=200&&r.status<300||r.status===304||navigator.userAgent.indexOf("Safari")>-1&&typeof r.status==="undefined"){t(r.responseText)}else{n()}document.documentElement.style.cursor="";r=null}};r.send("")};var l=function(t){t=t.replace(e.REDUNDANT_COMPONENTS,"");t=t.replace(e.REDUNDANT_WHITESPACE,"$1");t=t.replace(e.WHITESPACE_IN_PARENTHESES,"($1)");t=t.replace(e.MORE_WHITESPACE," ");t=t.replace(e.FINAL_SEMICOLONS,"}");return t};var c={stylesheet:function(t){var n={};var r=[],i=[],s=[],o=[];var u=t.cssHelperText;var a=t.getAttribute("media");if(a){var f=a.toLowerCase().split(",")}else{var f=["all"]}for(var l=0;l-1&&a.href&&a.href.length!==0&&!a.disabled){r[r.length]=a}}if(r.length>0){var c=0;var d=function(){c++;if(c===r.length){i()}};var v=function(t){var n=t.href;f(n,function(r){r=l(r).replace(e.RELATIVE_URLS,"url("+n.substring(0,n.lastIndexOf("/"))+"/$1)");t.cssHelperText=r;d()},d)};for(u=0;u0){r.setAttribute("media",t.join(","))}document.getElementsByTagName("head")[0].appendChild(r);if(r.styleSheet){r.styleSheet.cssText=e}else{r.appendChild(document.createTextNode(e))}r.addedWithCssHelper=true;if(typeof n==="undefined"||n===true){cssHelper.parsed(function(t){var n=p(r,e);for(var i in n){if(n.hasOwnProperty(i)){g(i,n[i])}}a("newStyleParsed",r)})}else{r.parsingDisallowed=true}return r},removeStyle:function(e){return e.parentNode.removeChild(e)},parsed:function(e){if(n){s(e)}else{if(typeof t!=="undefined"){if(typeof e==="function"){e(t)}}else{s(e);d()}}},stylesheets:function(e){cssHelper.parsed(function(t){e(m.stylesheets||y("stylesheets"))})},mediaQueryLists:function(e){cssHelper.parsed(function(t){e(m.mediaQueryLists||y("mediaQueryLists"))})},rules:function(e){cssHelper.parsed(function(t){e(m.rules||y("rules"))})},selectors:function(e){cssHelper.parsed(function(t){e(m.selectors||y("selectors"))})},declarations:function(e){cssHelper.parsed(function(t){e(m.declarations||y("declarations"))})},properties:function(e){cssHelper.parsed(function(t){e(m.properties||y("properties"))})},broadcast:a,addListener:function(e,t){if(typeof t==="function"){if(!u[e]){u[e]={listeners:[]}}u[e].listeners[u[e].listeners.length]=t}},removeListener:function(e,t){if(typeof t==="function"&&u[e]){var n=u[e].listeners;for(var r=0;r=a||s&&l0}}else if("device-height"===e.substring(r-13,r)){c=screen.height;if(t!==null){if(u==="length"){return i&&c>=a||s&&c0}}else if("width"===e.substring(r-5,r)){l=document.documentElement.clientWidth||document.body.clientWidth;if(t!==null){if(u==="length"){return i&&l>=a||s&&l0}}else if("height"===e.substring(r-6,r)){c=document.documentElement.clientHeight||document.body.clientHeight;if(t!==null){if(u==="length"){return i&&c>=a||s&&c0}}else if("device-aspect-ratio"===e.substring(r-19,r)){return u==="aspect-ratio"&&screen.width*a[1]===screen.height*a[0]}else if("color-index"===e.substring(r-11,r)){var h=Math.pow(2,screen.colorDepth);if(t!==null){if(u==="absolute"){return i&&h>=a||s&&h0}}else if("color"===e.substring(r-5,r)){var p=screen.colorDepth;if(t!==null){if(u==="absolute"){return i&&p>=a||s&&p0}}else if("resolution"===e.substring(r-10,r)){var d;if(f==="dpcm"){d=o("1cm")}else{d=o("1in")}if(t!==null){if(u==="resolution"){return i&&d>=a||s&&d0}}else{return false}};var a=function(e){var t=e.getValid();var n=e.getExpressions();var r=n.length;if(r>0){for(var i=0;i0){u=false;for(var f=0;f0){l[c++]=","}l[c++]=h}}if(l.length>0){r[r.length]=cssHelper.addStyle("@media "+l.join("")+"{"+e.getCssText()+"}",t,false)}};var l=function(e,t){for(var n=0;n0}}var o=[],u=[];for(var f in i){if(i.hasOwnProperty(f)){o[o.length]=f;if(i[f]){u[u.length]=f}if(f==="all"){n=true}}}if(u.length>0){r[r.length]=cssHelper.addStyle(e.getCssText(),u,false)}var c=e.getMediaQueryLists();if(n){l(c)}else{l(c,o)}};var h=function(e){for(var t=0;td||Math.abs(s-t)>d){e=n;t=s;clearTimeout(r);r=setTimeout(function(){if(!i()){p()}else{cssHelper.broadcast("cssMediaQueriesTested")}},500)}};window.onresize=function(){var e=window.onresize||function(){};return function(){e();s()}}()};var m=document.documentElement;m.style.marginLeft="-32767px";setTimeout(function(){m.style.marginLeft=""},5e3);return function(){if(!i()){cssHelper.addListener("newStyleParsed",function(e){c(e.cssHelperParsed.stylesheet)});cssHelper.addListener("cssMediaQueriesTested",function(){if(ua.ie){m.style.width="1px"}setTimeout(function(){m.style.width="";m.style.marginLeft=""},0);cssHelper.removeListener("cssMediaQueriesTested",arguments.callee)});s();p()}else{m.style.marginLeft=""}v()}}());try{document.execCommand("BackgroundImageCache",false,true)}catch(e){} diff --git a/_static/css3-mediaqueries_src.js b/_static/css3-mediaqueries_src.js new file mode 100644 index 00000000..78786202 --- /dev/null +++ b/_static/css3-mediaqueries_src.js @@ -0,0 +1,1104 @@ +/* +css3-mediaqueries.js - CSS Helper and CSS3 Media Queries Enabler + +author: Wouter van der Graaf +version: 1.0 (20110330) +license: MIT +website: http://code.google.com/p/css3-mediaqueries-js/ + +W3C spec: http://www.w3.org/TR/css3-mediaqueries/ + +Note: use of embedded