From 6354d9c36a1dc177dff987f30daf78d4968dbca6 Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Fri, 27 Mar 2026 16:55:42 +0200 Subject: [PATCH 1/6] reference-designs/eval-ad5758: Add wiki-migration pages Co-Authored-By: Claude Opus 4.6 --- .../reference-designs/eval-ad5758/ad5758.rst | 278 +++++++++++++++++ .../eval-ad5758/ad5758_adp1031.rst | 60 ++++ .../reference-designs/eval-ad5758/index.rst | 10 + .../demo/reference-designs/ad5758_adp1031.rst | 60 ++++ .../resources/eval/user-guides/ad5758.rst | 280 ++++++++++++++++++ .../linux-drivers/iio-dac/ad5758.rst | 198 +++++++++++++ .../tools-software/uc-drivers/ad5758.rst | 278 +++++++++++++++++ 7 files changed, 1164 insertions(+) create mode 100644 docs/solutions/reference-designs/eval-ad5758/ad5758.rst create mode 100644 docs/solutions/reference-designs/eval-ad5758/ad5758_adp1031.rst create mode 100644 docs/solutions/reference-designs/eval-ad5758/index.rst create mode 100644 docs/wiki-migration/resources/demo/reference-designs/ad5758_adp1031.rst create mode 100644 docs/wiki-migration/resources/eval/user-guides/ad5758.rst create mode 100644 docs/wiki-migration/resources/tools-software/linux-drivers/iio-dac/ad5758.rst create mode 100644 docs/wiki-migration/resources/tools-software/uc-drivers/ad5758.rst diff --git a/docs/solutions/reference-designs/eval-ad5758/ad5758.rst b/docs/solutions/reference-designs/eval-ad5758/ad5758.rst new file mode 100644 index 00000000000..772c4f0a012 --- /dev/null +++ b/docs/solutions/reference-designs/eval-ad5758/ad5758.rst @@ -0,0 +1,278 @@ +AD5758 - No-OS Driver +===================== + +Supported Devices +----------------- + +- :adi:`AD5758` + +Evaluation Boards +----------------- + +- :adi:`EVAL-AD5758` + +Overview +-------- + +The :adi:`AD5758` is a single-channel, voltage and current output digital-to-analog converter (DAC) that operates with a power supply range from −33 V minimum on AVSS to +33 V maximum on AVDD1 with a maximum operating voltage between the two rails of 60 V. On-chip DPC minimizes package power dissipation, which is achieved by regulating the supply voltage (VDPC+) to the VIOUT output driver circuitry from 5 V to 27 V using a buck dc-to-dc converter, optimized for minimum on-chip power dissipa-tion. The CHART pin enables a HART signal to be coupled onto the current output. + +The device uses a versatile 4-wire serial peripheral interface (SPI) that operates at clock rates of up to 50 MHz and is compatible with standard SPI, QSPI™, MICROWIRE™, DSP, and microcontroller interface standards. The interface also features an optional SPI cyclic redundancy check (CRC) and a watchdog timer. The :adi:`AD5758` offers improved diagnostic features from its predecessors, such as output current monitoring and an integrated 12-bit diagnostic ADC. Additional robustness is provided by the inclusion of a fault protection switch on VIOUT, +VSENSE, and −VSENSE pins. + +Applications +~~~~~~~~~~~~ + +- Process control +- Actuator control +- PLC and DCS applications +- HART network connectivity + +HDL Design Description +---------------------- + +In the :doc:`ADI Reference Designs HDL User Guide ` can be found an in-depth presentation and instructions about the HDL design in general. + +In order to build the HDL design the user has to go through the following steps: + +- Confirm that you have the right tools (the reference design requires Vivado 2018.3) +- Clone the HDL GitHub repository (the project is located at :git-hdl:`projects/ad5758_sdz`) +- Build the project (see :doc:`/wiki-migration/resources/fpga/docs/build`) + +Software Setup +-------------- + +In order to perform the software setup the user has to go through the following +steps: + +- Confirm that you have the right tools (the reference design requires XSDK) +- Clone the No-OS GitHub repository (the project is located at :git-no-OS:`ad5758-sdz` ) +- Follow the instructions provided by :doc:`software_setup `. + +Driver Description +------------------ + +Functions Declarations +~~~~~~~~~~~~~~~~~~~~~~ + ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| Function | Description | ++===============================================================================================================================+==============================================================================+ +| ``static uint8_t ad5758_compute_crc8(uint8_t *data, uint8_t data_size)`` | Compute CRC8 checksum. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``static int32_t ad5758_spi_reg_read(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t *reg_data);`` | Read from device. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``static int32_t ad5758_spi_reg_write(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t reg_data);`` | Write to device. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``static int32_t ad5758_spi_write_mask(struct ad5758_dev *dev, uint8_t reg_addr, uint32_t mask, uint16_t data);`` | SPI write to device using a mask. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_crc(struct ad5758_dev *dev, uint8_t crc_en);`` | Enable/disable SPI CRC function. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_wait_for_refresh_cycle(struct ad5758_dev *dev);`` | Busy wait until CAL_MEM_UNREFRESHED bit in the DIGITAL_DIAG_RESULTS clears. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_soft_reset(struct ad5758_dev *dev);`` | Initiate a software reset. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_calib_mem_refresh(struct ad5758_dev *dev);`` | Initiate a calibration memory refresh to the shadow registers. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_dc_dc_conv_mode(struct ad5758_dev *dev, enum ad5758_dc_dc_mode mode);`` | Configure the dc-to-dc controller mode. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_dc_dc_ilimit(struct ad5758_dev *dev, enum ad5758_dc_dc_ilimt ilimit);`` | Set the dc-to-dc converter current limit. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_fault_prot_switch_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT Fault Protection Switch. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_internal_buffers_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable Enable Internal Buffers. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_out_range(struct ad5758_dev *dev, enum ad5758_output_range range);`` | Select Output Range. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_slew_rate_config(struct ad5758_dev *dev, enum ad5758_slew_rate_clk clk, uint8_t enable);`` | Configure the slew rate by setting the clock and enable/disable the control. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_dac_input_write(struct ad5758_dev *dev, uint16_t code);`` | Write DAC data to the input register. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_dac_output_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_clear_dig_diag_flag(struct ad5758_dev *dev, enum ad5758_dig_diag_flags flag);`` | Clear the error flags for the on-chip digital diagnostic features. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_clkout_config(struct ad5758_dev *dev, enum ad5758_clkout_config config, enum ad5758_clkout_freq freq);`` | Configure CLKOUT by setting the frequency and enabling/disabling the option. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_select_adc_ip(struct ad5758_dev *dev, enum ad5758_adc_ip adc_ip_sel);`` | Select which node to multiplex to the ADC. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_select_adc_depth(struct ad5758_dev *dev, uint8_t num_of_channels);`` | Set depth of the sequencer. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_adc_channel_input(struct ad5758_dev *dev, uint8_t channel, enum ad5758_adc_ip adc_ip_sel);`` | Load the desired channel into the sequencer with the adc input. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_adc_mode(struct ad5758_dev *dev, enum ad5758_adc_mode adc_mode, uint8_t enable);`` | Configure the ADC into one of four modes of operation. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_init(struct ad5758_dev **device, struct ad5758_init_param init_param);`` | Set up the device from power-on or reset condition with the correct. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + +Types Declarations +~~~~~~~~~~~~~~~~~~ + +.. code-block:: c + +:: + + enum ad5758_dc_dc_mode { + DC_DC_POWER_OFF, + DPC_CURRENT_MODE, + DPC_VOLTAGE_MODE, + PPC_CURRENT_MODE, + }; + +:: + + enum ad5758_dig_diag_flags { + DIAG_SPI_CRC_ERR, + DIAG_SLIPBIT_ERR, + DIAG_SCLK_COUNT_ERR, + DIAG_INVALID_SPI_ACCESS_ERR = 4, + DIAG_CAL_MEM_CRC_ERR, + DIAG_INVERSE_DAC_CHECK_ERR, + DIAG_DAC_LATCH_MON_ERR = 8, + DIAG_THREE_WI_RC_ERR, + DIAG_WDT_ERR = 11, + DIAG_ERR_3WI, + DIAG_RESET_OCCURRED, + }; + +:: + + enum ad5758_clkout_config { + CLKOUT_DISABLE, + CLKOUT_ENABLE, + }; + +:: + + enum ad5758_clkout_freq { + CLKOUT_FREQ_416_KHZ, + CLKOUT_FREQ_435_KHZ, + CLKOUT_FREQ_454_KHZ, + CLKOUT_FREQ_476_KHZ, + CLKOUT_FREQ_500_KHZ, + CLKOUT_FREQ_526_KHZ, + CLKOUT_FREQ_555_KHZ, + CLKOUT_FREQ_588_KHZ, + }; + +:: + + enum ad5758_slew_rate_clk { + SR_CLOCK_240_KHZ, + SR_CLOCK_200_KHZ, + SR_CLOCK_150_KHZ, + SR_CLOCK_128_KHZ, + SR_CLOCK_64_KHZ, + SR_CLOCK_32_KHZ, + SR_CLOCK_16_KHZ, + SR_CLOCK_8_KHZ, + SR_CLOCK_4_KHZ, + SR_CLOCK_2_KHZ, + SR_CLOCK_1_KHZ, + SR_CLOCK_512_HZ, + SR_CLOCK_256_HZ, + SR_CLOCK_128_HZ, + SR_CLOCK_64_HZ, + SR_CLOCK_16_HZ, + }; + +:: + + enum ad5758_dc_dc_ilimt { + ILIMIT_150_mA, + ILIMIT_200_mA, + ILIMIT_250_mA, + ILIMIT_300_mA, + ILIMIT_350_mA, + ILIMIT_400_mA, + }; + +:: + + enum ad5758_output_range { + RANGE_0V_5V, + RANGE_0V_10V, + RANGE_M5V_5V, + RANGE_M10V_10V, + RANGE_0mA_20mA = 8, + RANGE_0mA_24mA, + RANGE_4mA_24mA, + RANGE_M20mA_20mA, + RANGE_M24mA_24mA, + RANGE_M1mA_22mA, + }; + +:: + + enum ad5758_adc_ip { + ADC_IP_MAIN_DIE_TEMP, + ADC_IP_DCDC_DIE_TEMP, + ADC_IP_REFIN = 3, + ADC_IP_REF2, + ADC_IP_VSENSE = 13, + ADC_IP_MVSENSE, + ADC_IP_INT_AVCC = 20, + ADC_IP_REGOUT, + ADC_IP_VLOGIC, + ADC_IP_INT_CURR_MON_VOUT, + ADC_IP_REFGND, + ADC_IP_AGND, + ADC_IP_DGND, + ADC_IP_VDPC, + ADC_IP_AVDD2, + ADC_IP_AVSS, + ADC_IP_DCDC_DIE_NODE, + ADC_IP_REFOUT, + }; + +:: + + enum ad5758_adc_mode { + ADC_MODE_KEY_SEQ = 2, + ADC_MODE_AUTO_SEQ, + ADC_MODE_SINGLE_CONV, + ADC_MODE_SINGLE_KEY_CONV, + }; + +:: + + struct ad5758_dev { + /* SPI */ + struct spi_desc *spi_desc; + /* GPIO */ + struct gpio_desc *reset_n; + struct gpio_desc *ldac_n; + /* Device Settings */ + uint8_t crc_en; + enum ad5758_dc_dc_mode dc_dc_mode; + }; + +:: + + struct ad5758_init_param { + /* SPI */ + struct spi_init_param spi_init; + /* GPIO */ + struct gpio_init_param reset_n; + struct gpio_init_param ldac_n; + /* Device Settings */ + uint8_t crc_en; + enum ad5758_dc_dc_mode dc_dc_mode; + enum ad5758_clkout_config clkout_config; + enum ad5758_clkout_freq clkout_freq; + enum ad5758_dc_dc_ilimt dc_dc_ilimt; + enum ad5758_output_range output_range; + enum ad5758_slew_rate_clk slew_rate_clk; + }; + +Reference Design +---------------- + +Downloads +--------- + +.. admonition:: Download + :class: download + + + - :git-hdl:`HDL Reference Design. ` + - :git-no-OS:`No-OS Reference Design. ` + diff --git a/docs/solutions/reference-designs/eval-ad5758/ad5758_adp1031.rst b/docs/solutions/reference-designs/eval-ad5758/ad5758_adp1031.rst new file mode 100644 index 00000000000..26bbd54dd49 --- /dev/null +++ b/docs/solutions/reference-designs/eval-ad5758/ad5758_adp1031.rst @@ -0,0 +1,60 @@ +AD5758 + ADP1031 Eight Channel Analog Output Module - Demonstration Platform +============================================================================ + +.. image:: https://wiki.analog.com/_media/resources/demo/reference-designs/demo-ad5758-ao8z/demo-ad5758-ao87angle-web.gif + +The DEMO-AD5758-AO8Z Board demonstrates a system-level concept where the :adi:`AD5758` and the :adi:`ADP1031` are used together to implement a compact, eight-channel, channel-to-channel isolated, analog output (AO) module. The module is designed to dissipate less than 2W worst-case power dissipation over a wide range of operating condition. + +.. warning:: + + + **High Voltage Capability** + + + | Take appropriate care when using this demo board at high voltages. Do not rely on the PCB for safety functions as it has not been hipot tested\ :sup:`1`\ nor has it been certified for safety. + | :sup:`1`\ *Also known as high potential or dielectric withstanding voltage tested.* + +.. note:: + + The purpose of this board is to demonstrate how a system-level approach allows a compact low power solution to be developed. For bench and performance evaluation, please use the :adi:`EVAL-AD5758` and the :adi:`ADP1031CP-EVALZ` evaluation kits. + +Table of Contents +================= + +- :doc:`Introduction ` +- :doc:`System Specifications ` + + - :doc:`Absolute Max Ratings ` + - :doc:`Performance Specifications ` + + - :doc:`Input Voltage ` + - :doc:`Voltage Output Mode ` + - :doc:`Current Output Mode ` + - :doc:`Power Dissipation ` + +- :doc:`Hardware Details ` + + - :doc:`Hardware Description ` + - :doc:`Schematics ` + - :doc:`Layout ` + - :doc:`Bill of Materials ` + +- :doc:`Software Details ` + + - :doc:`Firmware Installation ` + - :doc:`GUI installation ` + - :doc:`Source Code ` + +- :doc:`Using the Demo Board ` + + - :doc:`Connecting the Board ` + - :doc:`DPC ON vs. DPC OFF Demonstration ` + +- :doc:`Legal terms and conditions ` + +-------------- + +Navigation +========== + +:doc:`Next (Introduction) ` diff --git a/docs/solutions/reference-designs/eval-ad5758/index.rst b/docs/solutions/reference-designs/eval-ad5758/index.rst new file mode 100644 index 00000000000..e40232fbcbd --- /dev/null +++ b/docs/solutions/reference-designs/eval-ad5758/index.rst @@ -0,0 +1,10 @@ +AD5758 SDZ +========== + +.. toctree:: + :hidden: + + ad5758 + ad5758 + ad5758 + ad5758_adp1031 diff --git a/docs/wiki-migration/resources/demo/reference-designs/ad5758_adp1031.rst b/docs/wiki-migration/resources/demo/reference-designs/ad5758_adp1031.rst new file mode 100644 index 00000000000..26bbd54dd49 --- /dev/null +++ b/docs/wiki-migration/resources/demo/reference-designs/ad5758_adp1031.rst @@ -0,0 +1,60 @@ +AD5758 + ADP1031 Eight Channel Analog Output Module - Demonstration Platform +============================================================================ + +.. image:: https://wiki.analog.com/_media/resources/demo/reference-designs/demo-ad5758-ao8z/demo-ad5758-ao87angle-web.gif + +The DEMO-AD5758-AO8Z Board demonstrates a system-level concept where the :adi:`AD5758` and the :adi:`ADP1031` are used together to implement a compact, eight-channel, channel-to-channel isolated, analog output (AO) module. The module is designed to dissipate less than 2W worst-case power dissipation over a wide range of operating condition. + +.. warning:: + + + **High Voltage Capability** + + + | Take appropriate care when using this demo board at high voltages. Do not rely on the PCB for safety functions as it has not been hipot tested\ :sup:`1`\ nor has it been certified for safety. + | :sup:`1`\ *Also known as high potential or dielectric withstanding voltage tested.* + +.. note:: + + The purpose of this board is to demonstrate how a system-level approach allows a compact low power solution to be developed. For bench and performance evaluation, please use the :adi:`EVAL-AD5758` and the :adi:`ADP1031CP-EVALZ` evaluation kits. + +Table of Contents +================= + +- :doc:`Introduction ` +- :doc:`System Specifications ` + + - :doc:`Absolute Max Ratings ` + - :doc:`Performance Specifications ` + + - :doc:`Input Voltage ` + - :doc:`Voltage Output Mode ` + - :doc:`Current Output Mode ` + - :doc:`Power Dissipation ` + +- :doc:`Hardware Details ` + + - :doc:`Hardware Description ` + - :doc:`Schematics ` + - :doc:`Layout ` + - :doc:`Bill of Materials ` + +- :doc:`Software Details ` + + - :doc:`Firmware Installation ` + - :doc:`GUI installation ` + - :doc:`Source Code ` + +- :doc:`Using the Demo Board ` + + - :doc:`Connecting the Board ` + - :doc:`DPC ON vs. DPC OFF Demonstration ` + +- :doc:`Legal terms and conditions ` + +-------------- + +Navigation +========== + +:doc:`Next (Introduction) ` diff --git a/docs/wiki-migration/resources/eval/user-guides/ad5758.rst b/docs/wiki-migration/resources/eval/user-guides/ad5758.rst new file mode 100644 index 00000000000..22014a9db0f --- /dev/null +++ b/docs/wiki-migration/resources/eval/user-guides/ad5758.rst @@ -0,0 +1,280 @@ +AD5758 - Reference Design +========================= + +Supported Devices +----------------- + +- :adi:`AD5758` + +Evaluation Boards +----------------- + +- :adi:`EVAL-AD5758` + +Supported FPGA carrier board +---------------------------- + +- `Zedboard `_ + +Overview +-------- + +The :adi:`AD5758` is a single-channel, voltage and current output digital-to-analog converter (DAC) that operates with a power supply range from −33 V minimum on AVSS to +33 V maximum on AVDD1 with a maximum operating voltage between the two rails of 60 V. On-chip DPC minimizes package power dissipation, which is achieved by regulating the supply voltage (VDPC+) to the VIOUT output driver circuitry from 5 V to 27 V using a buck dc-to-dc converter, optimized for minimum on-chip power dissipation. The CHART pin enables a HART signal to be coupled onto the current output. + +The device uses a versatile 4-wire serial peripheral interface (SPI) that operates at clock rates of up to 50 MHz and is compatible with standard SPI, QSPI™, MICROWIRE™, DSP, and micro-controller interface standards. The interface also features an optional SPI cyclic redundancy check (CRC) and a watchdog timer. The :adi:`AD5758` offers improved diagnostic features from its predecessors, such as output current monitoring and an integrated 12-bit diagnostic ADC. Additional robustness is provided by the inclusion of a fault protection switch on VIOUT, +VSENSE, and −VSENSE pins. + +Applications: + +- Process control +- Actuator control +- PLC and DCS applications +- HART network connectivity + +HDL reference design +-------------------- + +The HDL project is only needed if the used carrier board is an FPGA board. The +project uses a Zedboard and its hardware interfaces. There isn't any custom +logic in the programmable side of the Zynq 7000 SoC. To clone or download the +HDL repository, go the Download section of this wiki page. + +To find more information about how to create and build the project please visit the :doc:`HDL build guide `. + +To find more information about how to create the application project in Xilinx SDK please visit the following page: :doc:`/wiki-migration/resources/fpga/xilinx/software_setup` + +Driver Description +------------------ + +Functions Declarations +~~~~~~~~~~~~~~~~~~~~~~ + ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| Function | Description | ++===============================================================================================================================+==============================================================================+ +| ``static uint8_t ad5758_compute_crc8(uint8_t *data, uint8_t data_size)`` | Compute CRC8 checksum. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``static int32_t ad5758_spi_reg_read(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t *reg_data);`` | Read from device. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``static int32_t ad5758_spi_reg_write(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t reg_data);`` | Write to device. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``static int32_t ad5758_spi_write_mask(struct ad5758_dev *dev, uint8_t reg_addr, uint32_t mask, uint16_t data);`` | SPI write to device using a mask. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_crc(struct ad5758_dev *dev, uint8_t crc_en);`` | Enable/disable SPI CRC function. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_wait_for_refresh_cycle(struct ad5758_dev *dev);`` | Busy wait until CAL_MEM_UNREFRESHED bit in the DIGITAL_DIAG_RESULTS clears. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_soft_reset(struct ad5758_dev *dev);`` | Initiate a software reset. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_calib_mem_refresh(struct ad5758_dev *dev);`` | Initiate a calibration memory refresh to the shadow registers. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_dc_dc_conv_mode(struct ad5758_dev *dev, enum ad5758_dc_dc_mode mode);`` | Configure the dc-to-dc controller mode. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_dc_dc_ilimit(struct ad5758_dev *dev, enum ad5758_dc_dc_ilimt ilimit);`` | Set the dc-to-dc converter current limit. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_fault_prot_switch_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT Fault Protection Switch. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_internal_buffers_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable Enable Internal Buffers. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_out_range(struct ad5758_dev *dev, enum ad5758_output_range range);`` | Select Output Range. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_slew_rate_config(struct ad5758_dev *dev, enum ad5758_slew_rate_clk clk, uint8_t enable);`` | Configure the slew rate by setting the clock and enable/disable the control. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_dac_input_write(struct ad5758_dev *dev, uint16_t code);`` | Write DAC data to the input register. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_dac_output_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_clear_dig_diag_flag(struct ad5758_dev *dev, enum ad5758_dig_diag_flags flag);`` | Clear the error flags for the on-chip digital diagnostic features. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_clkout_config(struct ad5758_dev *dev, enum ad5758_clkout_config config, enum ad5758_clkout_freq freq);`` | Configure CLKOUT by setting the frequency and enabling/disabling the option. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_select_adc_ip(struct ad5758_dev *dev, enum ad5758_adc_ip adc_ip_sel);`` | Select which node to multiplex to the ADC. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_select_adc_depth(struct ad5758_dev *dev, uint8_t num_of_channels);`` | Set depth of the sequencer. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_adc_channel_input(struct ad5758_dev *dev, uint8_t channel, enum ad5758_adc_ip adc_ip_sel);`` | Load the desired channel into the sequencer with the adc input. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_adc_mode(struct ad5758_dev *dev, enum ad5758_adc_mode adc_mode, uint8_t enable);`` | Configure the ADC into one of four modes of operation. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_init(struct ad5758_dev **device, struct ad5758_init_param init_param);`` | Set up the device from power-on or reset condition with the correct. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + +Types Declarations +~~~~~~~~~~~~~~~~~~ + +.. code-block:: c + +:: + + enum ad5758_dc_dc_mode { + DC_DC_POWER_OFF, + DPC_CURRENT_MODE, + DPC_VOLTAGE_MODE, + PPC_CURRENT_MODE, + }; + +:: + + enum ad5758_dig_diag_flags { + DIAG_SPI_CRC_ERR, + DIAG_SLIPBIT_ERR, + DIAG_SCLK_COUNT_ERR, + DIAG_INVALID_SPI_ACCESS_ERR = 4, + DIAG_CAL_MEM_CRC_ERR, + DIAG_INVERSE_DAC_CHECK_ERR, + DIAG_DAC_LATCH_MON_ERR = 8, + DIAG_THREE_WI_RC_ERR, + DIAG_WDT_ERR = 11, + DIAG_ERR_3WI, + DIAG_RESET_OCCURRED, + }; + +:: + + enum ad5758_clkout_config { + CLKOUT_DISABLE, + CLKOUT_ENABLE, + }; + +:: + + enum ad5758_clkout_freq { + CLKOUT_FREQ_416_KHZ, + CLKOUT_FREQ_435_KHZ, + CLKOUT_FREQ_454_KHZ, + CLKOUT_FREQ_476_KHZ, + CLKOUT_FREQ_500_KHZ, + CLKOUT_FREQ_526_KHZ, + CLKOUT_FREQ_555_KHZ, + CLKOUT_FREQ_588_KHZ, + }; + +:: + + enum ad5758_slew_rate_clk { + SR_CLOCK_240_KHZ, + SR_CLOCK_200_KHZ, + SR_CLOCK_150_KHZ, + SR_CLOCK_128_KHZ, + SR_CLOCK_64_KHZ, + SR_CLOCK_32_KHZ, + SR_CLOCK_16_KHZ, + SR_CLOCK_8_KHZ, + SR_CLOCK_4_KHZ, + SR_CLOCK_2_KHZ, + SR_CLOCK_1_KHZ, + SR_CLOCK_512_HZ, + SR_CLOCK_256_HZ, + SR_CLOCK_128_HZ, + SR_CLOCK_64_HZ, + SR_CLOCK_16_HZ, + }; + +:: + + enum ad5758_dc_dc_ilimt { + ILIMIT_150_mA, + ILIMIT_200_mA, + ILIMIT_250_mA, + ILIMIT_300_mA, + ILIMIT_350_mA, + ILIMIT_400_mA, + }; + +:: + + enum ad5758_output_range { + RANGE_0V_5V, + RANGE_0V_10V, + RANGE_M5V_5V, + RANGE_M10V_10V, + RANGE_0mA_20mA = 8, + RANGE_0mA_24mA, + RANGE_4mA_24mA, + RANGE_M20mA_20mA, + RANGE_M24mA_24mA, + RANGE_M1mA_22mA, + }; + +:: + + enum ad5758_adc_ip { + ADC_IP_MAIN_DIE_TEMP, + ADC_IP_DCDC_DIE_TEMP, + ADC_IP_REFIN = 3, + ADC_IP_REF2, + ADC_IP_VSENSE = 13, + ADC_IP_MVSENSE, + ADC_IP_INT_AVCC = 20, + ADC_IP_REGOUT, + ADC_IP_VLOGIC, + ADC_IP_INT_CURR_MON_VOUT, + ADC_IP_REFGND, + ADC_IP_AGND, + ADC_IP_DGND, + ADC_IP_VDPC, + ADC_IP_AVDD2, + ADC_IP_AVSS, + ADC_IP_DCDC_DIE_NODE, + ADC_IP_REFOUT, + }; + +:: + + enum ad5758_adc_mode { + ADC_MODE_KEY_SEQ = 2, + ADC_MODE_AUTO_SEQ, + ADC_MODE_SINGLE_CONV, + ADC_MODE_SINGLE_KEY_CONV, + }; + +:: + + struct ad5758_dev { + /* SPI */ + struct spi_desc *spi_desc; + /* GPIO */ + struct gpio_desc *reset_n; + struct gpio_desc *ldac_n; + /* Device Settings */ + uint8_t crc_en; + enum ad5758_dc_dc_mode dc_dc_mode; + }; + +:: + + struct ad5758_init_param { + /* SPI */ + struct spi_init_param spi_init; + /* GPIO */ + struct gpio_init_param reset_n; + struct gpio_init_param ldac_n; + /* Device Settings */ + uint8_t crc_en; + enum ad5758_dc_dc_mode dc_dc_mode; + enum ad5758_clkout_config clkout_config; + enum ad5758_clkout_freq clkout_freq; + enum ad5758_dc_dc_ilimt dc_dc_ilimt; + enum ad5758_output_range output_range; + enum ad5758_slew_rate_clk slew_rate_clk; + }; + +HDL Downloads +------------- + +.. admonition:: Download + :class: download + + + - :git-hdl:`HDL Reference Design ` + + +No-OS Downloads +--------------- + +.. admonition:: Download + :class: download + + + - :git-no-OS:`No-OS Reference Design ` + - :git-no-OS:`No-OS Drivers ` + diff --git a/docs/wiki-migration/resources/tools-software/linux-drivers/iio-dac/ad5758.rst b/docs/wiki-migration/resources/tools-software/linux-drivers/iio-dac/ad5758.rst new file mode 100644 index 00000000000..ef0a6b0ed87 --- /dev/null +++ b/docs/wiki-migration/resources/tools-software/linux-drivers/iio-dac/ad5758.rst @@ -0,0 +1,198 @@ +AD5758 IIO DAC Linux Driver +=========================== + +Supported Devices +----------------- + +This driver supports the + +- :adi:`AD5758` + +Evaluation Boards +----------------- + +- :adi:`EVAL-AD5758` + +Description +----------- + +This is a Linux industrial I/O (:doc:`IIO `) subsystem driver, targeting multi-channel serial interface DACs. The industrial I/O subsystem provides a unified framework for drivers for many different types of converters and sensors using a number of different physical interfaces (i2c, spi, etc). See :doc:`IIO ` for more information. + +Source Code +=========== + +Status +------ + ++------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ +| Source | Mainlined? | ++============================================================================================================+============================================================================================================+ +| `git `_ | `Yes `_ | ++------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ + +Files +----- + ++----------+---------------------------------------------------------------------------------------------------------------------------------+ +| Function | File | ++==========+=================================================================================================================================+ +| driver | `drivers/iio/dac/ad5758.c `_ | ++----------+---------------------------------------------------------------------------------------------------------------------------------+ + +Devicetree +---------- + +Required properties for the AD5758: + +- compatible: Must be "adi,ad5758" +- reg: SPI chip select number for the device +- spi-max-frequency: Max SPI frequency to use (< 50000000) +- spi-cpha: is the only mode that is supported + +Optional properties: + +- reset-gpios : GPIO spec for the RESET pin. If specified, it will be asserted during driver probe. +- adi,dc-dc-mode: Mode of operation of the dc-to-dc converter +- adi,dc-dc-ilim: The dc-to-dc converter current limit +- adi,slew: Array of slewrate settings should contain 3 fields: +- adi,range: The output range + +:: + + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + ad5758@0 { + compatible = "adi,ad5758"; + reg = <0>; + spi-max-frequency = <1000000>; + spi-cpha; + + reset-gpios = <&gpio 22 0>; /* optional */ + + adi,dc-dc-mode = <2>; + adi,dc-dc-ilim = <200>; + adi,slew = <1 200000 12>; + adi,range = <1>; + +Driver testing +============== + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root:/> cd /sys/bus/iio/devices/ + root:/sys/bus/iio/devices> ls + iio:device0 + + root:/sys/bus/iio/devices> cd iio\:device0 + + root:/sys/bus/iio/devices/iio:device0> ls -l + -r--r--r-- 1 root root 4096 May 23 09:14 dev + -rw-r--r-- 1 root root 4096 May 23 09:14 out_voltage0_powerdown + -rw-r--r-- 1 root root 4096 May 23 09:14 out_voltage0_raw + -rw-r--r-- 1 root root 4096 May 23 09:14 out_voltage_scale + -r--r--r-- 1 root root 4096 May 23 09:14 name + drwxr-xr-x 2 root root 0 May 23 09:14 power + lrwxrwxrwx 1 root root 0 May 23 09:14 subsystem -> ../../../../../../../../bus/iio + -rw-r--r-- 1 root root 4096 May 23 09:14 uevent + + +Show device name +---------------- + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root:/sys/bus/iio/devices/iio:device0> cat name + ad5758 + + +Show scale +---------- + +**Description:** scale to be applied to in_voltage0_raw in order to obtain the measured voltage in millivolts. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root:/sys/bus/iio/devices/iio:device0> cat out_voltage_scale + 0.152587890 + + +Set channel 0 output voltage +---------------------------- + +**Description:** /sys/bus/iio/devices/deviceX/out_voltage0_raw + +Raw (unscaled, no bias etc.) output voltage for channel 0. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root:/sys/bus/iio/devices/iio:device0> echo 32767 > out_voltage0_raw + + +**U** = *out_voltage0_raw \* out_voltage_scale* = 32767 \* 0.152587890 = **4999.84 mV** + +Enable power down mode on output 0 +---------------------------------- + +/sys/bus/iio/devices/deviceX/out_voltage0_powerdown + +**Description:** Writing 1 causes output 0 to enter the power down mode. Clearing returns to normal operation. + +.. container:: box bggreen + + This specifies any shell prompt running on the target + + + :: + + root:/sys/bus/iio/devices/iio:device0> echo 1 > out_voltage0_powerdown + root:/sys/bus/iio/devices/iio:device0> cat out_voltage0_powerdown + 1 + root:/sys/bus/iio/devices/iio:device0> echo 0 > out_voltage0_powerdown + root:/sys/bus/iio/devices/iio:device0> cat out_voltage0_powerdown + 0 + + +More Information +================ + +- IIO mailing list: linux-iio@vger.kernel.org +- `IIO Linux Kernel Documentation sysfs-bus-iio-\* `_ +- `IIO Documentation `_ +- :doc:`IIO test and visualization application ` +- :doc:`libiio - IIO system library ` +- :doc:`libiio - Internals ` +- :doc:`Pointers and good books ` +- `IIO High Speed `_ +- `Software Defined Radio using the IIO framework `_ +- + +|libiio introduction| + +*Need Help?* + +- :ez:`Analog Devices Linux Device Drivers Help Forum ` +- `Ask a Question `_ + +.. |libiio introduction| image:: https://wiki.analog.com/_media/software/linux/docs/iio/youtube>p_vntewue24 diff --git a/docs/wiki-migration/resources/tools-software/uc-drivers/ad5758.rst b/docs/wiki-migration/resources/tools-software/uc-drivers/ad5758.rst new file mode 100644 index 00000000000..772c4f0a012 --- /dev/null +++ b/docs/wiki-migration/resources/tools-software/uc-drivers/ad5758.rst @@ -0,0 +1,278 @@ +AD5758 - No-OS Driver +===================== + +Supported Devices +----------------- + +- :adi:`AD5758` + +Evaluation Boards +----------------- + +- :adi:`EVAL-AD5758` + +Overview +-------- + +The :adi:`AD5758` is a single-channel, voltage and current output digital-to-analog converter (DAC) that operates with a power supply range from −33 V minimum on AVSS to +33 V maximum on AVDD1 with a maximum operating voltage between the two rails of 60 V. On-chip DPC minimizes package power dissipation, which is achieved by regulating the supply voltage (VDPC+) to the VIOUT output driver circuitry from 5 V to 27 V using a buck dc-to-dc converter, optimized for minimum on-chip power dissipa-tion. The CHART pin enables a HART signal to be coupled onto the current output. + +The device uses a versatile 4-wire serial peripheral interface (SPI) that operates at clock rates of up to 50 MHz and is compatible with standard SPI, QSPI™, MICROWIRE™, DSP, and microcontroller interface standards. The interface also features an optional SPI cyclic redundancy check (CRC) and a watchdog timer. The :adi:`AD5758` offers improved diagnostic features from its predecessors, such as output current monitoring and an integrated 12-bit diagnostic ADC. Additional robustness is provided by the inclusion of a fault protection switch on VIOUT, +VSENSE, and −VSENSE pins. + +Applications +~~~~~~~~~~~~ + +- Process control +- Actuator control +- PLC and DCS applications +- HART network connectivity + +HDL Design Description +---------------------- + +In the :doc:`ADI Reference Designs HDL User Guide ` can be found an in-depth presentation and instructions about the HDL design in general. + +In order to build the HDL design the user has to go through the following steps: + +- Confirm that you have the right tools (the reference design requires Vivado 2018.3) +- Clone the HDL GitHub repository (the project is located at :git-hdl:`projects/ad5758_sdz`) +- Build the project (see :doc:`/wiki-migration/resources/fpga/docs/build`) + +Software Setup +-------------- + +In order to perform the software setup the user has to go through the following +steps: + +- Confirm that you have the right tools (the reference design requires XSDK) +- Clone the No-OS GitHub repository (the project is located at :git-no-OS:`ad5758-sdz` ) +- Follow the instructions provided by :doc:`software_setup `. + +Driver Description +------------------ + +Functions Declarations +~~~~~~~~~~~~~~~~~~~~~~ + ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| Function | Description | ++===============================================================================================================================+==============================================================================+ +| ``static uint8_t ad5758_compute_crc8(uint8_t *data, uint8_t data_size)`` | Compute CRC8 checksum. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``static int32_t ad5758_spi_reg_read(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t *reg_data);`` | Read from device. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``static int32_t ad5758_spi_reg_write(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t reg_data);`` | Write to device. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``static int32_t ad5758_spi_write_mask(struct ad5758_dev *dev, uint8_t reg_addr, uint32_t mask, uint16_t data);`` | SPI write to device using a mask. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_crc(struct ad5758_dev *dev, uint8_t crc_en);`` | Enable/disable SPI CRC function. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_wait_for_refresh_cycle(struct ad5758_dev *dev);`` | Busy wait until CAL_MEM_UNREFRESHED bit in the DIGITAL_DIAG_RESULTS clears. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_soft_reset(struct ad5758_dev *dev);`` | Initiate a software reset. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_calib_mem_refresh(struct ad5758_dev *dev);`` | Initiate a calibration memory refresh to the shadow registers. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_dc_dc_conv_mode(struct ad5758_dev *dev, enum ad5758_dc_dc_mode mode);`` | Configure the dc-to-dc controller mode. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_dc_dc_ilimit(struct ad5758_dev *dev, enum ad5758_dc_dc_ilimt ilimit);`` | Set the dc-to-dc converter current limit. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_fault_prot_switch_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT Fault Protection Switch. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_internal_buffers_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable Enable Internal Buffers. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_out_range(struct ad5758_dev *dev, enum ad5758_output_range range);`` | Select Output Range. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_slew_rate_config(struct ad5758_dev *dev, enum ad5758_slew_rate_clk clk, uint8_t enable);`` | Configure the slew rate by setting the clock and enable/disable the control. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_dac_input_write(struct ad5758_dev *dev, uint16_t code);`` | Write DAC data to the input register. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_dac_output_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_clear_dig_diag_flag(struct ad5758_dev *dev, enum ad5758_dig_diag_flags flag);`` | Clear the error flags for the on-chip digital diagnostic features. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_clkout_config(struct ad5758_dev *dev, enum ad5758_clkout_config config, enum ad5758_clkout_freq freq);`` | Configure CLKOUT by setting the frequency and enabling/disabling the option. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_select_adc_ip(struct ad5758_dev *dev, enum ad5758_adc_ip adc_ip_sel);`` | Select which node to multiplex to the ADC. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_select_adc_depth(struct ad5758_dev *dev, uint8_t num_of_channels);`` | Set depth of the sequencer. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_adc_channel_input(struct ad5758_dev *dev, uint8_t channel, enum ad5758_adc_ip adc_ip_sel);`` | Load the desired channel into the sequencer with the adc input. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_set_adc_mode(struct ad5758_dev *dev, enum ad5758_adc_mode adc_mode, uint8_t enable);`` | Configure the ADC into one of four modes of operation. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ +| ``int32_t ad5758_init(struct ad5758_dev **device, struct ad5758_init_param init_param);`` | Set up the device from power-on or reset condition with the correct. | ++-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + +Types Declarations +~~~~~~~~~~~~~~~~~~ + +.. code-block:: c + +:: + + enum ad5758_dc_dc_mode { + DC_DC_POWER_OFF, + DPC_CURRENT_MODE, + DPC_VOLTAGE_MODE, + PPC_CURRENT_MODE, + }; + +:: + + enum ad5758_dig_diag_flags { + DIAG_SPI_CRC_ERR, + DIAG_SLIPBIT_ERR, + DIAG_SCLK_COUNT_ERR, + DIAG_INVALID_SPI_ACCESS_ERR = 4, + DIAG_CAL_MEM_CRC_ERR, + DIAG_INVERSE_DAC_CHECK_ERR, + DIAG_DAC_LATCH_MON_ERR = 8, + DIAG_THREE_WI_RC_ERR, + DIAG_WDT_ERR = 11, + DIAG_ERR_3WI, + DIAG_RESET_OCCURRED, + }; + +:: + + enum ad5758_clkout_config { + CLKOUT_DISABLE, + CLKOUT_ENABLE, + }; + +:: + + enum ad5758_clkout_freq { + CLKOUT_FREQ_416_KHZ, + CLKOUT_FREQ_435_KHZ, + CLKOUT_FREQ_454_KHZ, + CLKOUT_FREQ_476_KHZ, + CLKOUT_FREQ_500_KHZ, + CLKOUT_FREQ_526_KHZ, + CLKOUT_FREQ_555_KHZ, + CLKOUT_FREQ_588_KHZ, + }; + +:: + + enum ad5758_slew_rate_clk { + SR_CLOCK_240_KHZ, + SR_CLOCK_200_KHZ, + SR_CLOCK_150_KHZ, + SR_CLOCK_128_KHZ, + SR_CLOCK_64_KHZ, + SR_CLOCK_32_KHZ, + SR_CLOCK_16_KHZ, + SR_CLOCK_8_KHZ, + SR_CLOCK_4_KHZ, + SR_CLOCK_2_KHZ, + SR_CLOCK_1_KHZ, + SR_CLOCK_512_HZ, + SR_CLOCK_256_HZ, + SR_CLOCK_128_HZ, + SR_CLOCK_64_HZ, + SR_CLOCK_16_HZ, + }; + +:: + + enum ad5758_dc_dc_ilimt { + ILIMIT_150_mA, + ILIMIT_200_mA, + ILIMIT_250_mA, + ILIMIT_300_mA, + ILIMIT_350_mA, + ILIMIT_400_mA, + }; + +:: + + enum ad5758_output_range { + RANGE_0V_5V, + RANGE_0V_10V, + RANGE_M5V_5V, + RANGE_M10V_10V, + RANGE_0mA_20mA = 8, + RANGE_0mA_24mA, + RANGE_4mA_24mA, + RANGE_M20mA_20mA, + RANGE_M24mA_24mA, + RANGE_M1mA_22mA, + }; + +:: + + enum ad5758_adc_ip { + ADC_IP_MAIN_DIE_TEMP, + ADC_IP_DCDC_DIE_TEMP, + ADC_IP_REFIN = 3, + ADC_IP_REF2, + ADC_IP_VSENSE = 13, + ADC_IP_MVSENSE, + ADC_IP_INT_AVCC = 20, + ADC_IP_REGOUT, + ADC_IP_VLOGIC, + ADC_IP_INT_CURR_MON_VOUT, + ADC_IP_REFGND, + ADC_IP_AGND, + ADC_IP_DGND, + ADC_IP_VDPC, + ADC_IP_AVDD2, + ADC_IP_AVSS, + ADC_IP_DCDC_DIE_NODE, + ADC_IP_REFOUT, + }; + +:: + + enum ad5758_adc_mode { + ADC_MODE_KEY_SEQ = 2, + ADC_MODE_AUTO_SEQ, + ADC_MODE_SINGLE_CONV, + ADC_MODE_SINGLE_KEY_CONV, + }; + +:: + + struct ad5758_dev { + /* SPI */ + struct spi_desc *spi_desc; + /* GPIO */ + struct gpio_desc *reset_n; + struct gpio_desc *ldac_n; + /* Device Settings */ + uint8_t crc_en; + enum ad5758_dc_dc_mode dc_dc_mode; + }; + +:: + + struct ad5758_init_param { + /* SPI */ + struct spi_init_param spi_init; + /* GPIO */ + struct gpio_init_param reset_n; + struct gpio_init_param ldac_n; + /* Device Settings */ + uint8_t crc_en; + enum ad5758_dc_dc_mode dc_dc_mode; + enum ad5758_clkout_config clkout_config; + enum ad5758_clkout_freq clkout_freq; + enum ad5758_dc_dc_ilimt dc_dc_ilimt; + enum ad5758_output_range output_range; + enum ad5758_slew_rate_clk slew_rate_clk; + }; + +Reference Design +---------------- + +Downloads +--------- + +.. admonition:: Download + :class: download + + + - :git-hdl:`HDL Reference Design. ` + - :git-no-OS:`No-OS Reference Design. ` + From 591a54ea4b0d720fbc9a3ad959cc601d1b729cce Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Thu, 2 Apr 2026 13:16:52 +0300 Subject: [PATCH 2/6] Replace stub index.rst with template Co-Authored-By: Claude Opus 4.6 --- .../reference-designs/eval-ad5758/index.rst | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/docs/solutions/reference-designs/eval-ad5758/index.rst b/docs/solutions/reference-designs/eval-ad5758/index.rst index e40232fbcbd..eacfd33fc69 100644 --- a/docs/solutions/reference-designs/eval-ad5758/index.rst +++ b/docs/solutions/reference-designs/eval-ad5758/index.rst @@ -1,5 +1,24 @@ -AD5758 SDZ -========== +.. _eval_ad5758 eval: + +EVAL AD5758 +=================================================================== + +.. TODO: Add a picture of the chip/board + +Overview +------------------------------------------------------------------------------- + +.. TODO: Describe in max 10 rows the main features and applications. + +Features: + +- feature 1 +- feature 2 + +Applications: + +- application 1 +- application 2 .. toctree:: :hidden: @@ -8,3 +27,22 @@ AD5758 SDZ ad5758 ad5758 ad5758_adp1031 + +Recommendations +------------------------------------------------------------------------------- + +People who follow the flow that is outlined, have a much better experience with +things. However, like many things, documentation is never as complete as it +should be. If you have any questions, feel free to ask on our +:ref:`EngineerZone forums `, but before that, please make +sure you read our documentation thoroughly. + +Warning +------------------------------------------------------------------------------- + +.. esd-warning:: + +Help and support +------------------------------------------------------------------------------- + +Please go to :ref:`Help and Support ` page. From 13c61e9ac2c500c0676603a06f5a4d00eb0aeacf Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Tue, 7 Apr 2026 13:22:41 +0300 Subject: [PATCH 3/6] Fix build: remove leaked wiki-migration source files, fix index.rst Co-Authored-By: Claude Opus 4.6 --- .../demo/reference-designs/ad5758_adp1031.rst | 60 ---- .../resources/eval/user-guides/ad5758.rst | 280 ------------------ .../linux-drivers/iio-dac/ad5758.rst | 198 ------------- .../tools-software/uc-drivers/ad5758.rst | 278 ----------------- 4 files changed, 816 deletions(-) delete mode 100644 docs/wiki-migration/resources/demo/reference-designs/ad5758_adp1031.rst delete mode 100644 docs/wiki-migration/resources/eval/user-guides/ad5758.rst delete mode 100644 docs/wiki-migration/resources/tools-software/linux-drivers/iio-dac/ad5758.rst delete mode 100644 docs/wiki-migration/resources/tools-software/uc-drivers/ad5758.rst diff --git a/docs/wiki-migration/resources/demo/reference-designs/ad5758_adp1031.rst b/docs/wiki-migration/resources/demo/reference-designs/ad5758_adp1031.rst deleted file mode 100644 index 26bbd54dd49..00000000000 --- a/docs/wiki-migration/resources/demo/reference-designs/ad5758_adp1031.rst +++ /dev/null @@ -1,60 +0,0 @@ -AD5758 + ADP1031 Eight Channel Analog Output Module - Demonstration Platform -============================================================================ - -.. image:: https://wiki.analog.com/_media/resources/demo/reference-designs/demo-ad5758-ao8z/demo-ad5758-ao87angle-web.gif - -The DEMO-AD5758-AO8Z Board demonstrates a system-level concept where the :adi:`AD5758` and the :adi:`ADP1031` are used together to implement a compact, eight-channel, channel-to-channel isolated, analog output (AO) module. The module is designed to dissipate less than 2W worst-case power dissipation over a wide range of operating condition. - -.. warning:: - - - **High Voltage Capability** - - - | Take appropriate care when using this demo board at high voltages. Do not rely on the PCB for safety functions as it has not been hipot tested\ :sup:`1`\ nor has it been certified for safety. - | :sup:`1`\ *Also known as high potential or dielectric withstanding voltage tested.* - -.. note:: - - The purpose of this board is to demonstrate how a system-level approach allows a compact low power solution to be developed. For bench and performance evaluation, please use the :adi:`EVAL-AD5758` and the :adi:`ADP1031CP-EVALZ` evaluation kits. - -Table of Contents -================= - -- :doc:`Introduction ` -- :doc:`System Specifications ` - - - :doc:`Absolute Max Ratings ` - - :doc:`Performance Specifications ` - - - :doc:`Input Voltage ` - - :doc:`Voltage Output Mode ` - - :doc:`Current Output Mode ` - - :doc:`Power Dissipation ` - -- :doc:`Hardware Details ` - - - :doc:`Hardware Description ` - - :doc:`Schematics ` - - :doc:`Layout ` - - :doc:`Bill of Materials ` - -- :doc:`Software Details ` - - - :doc:`Firmware Installation ` - - :doc:`GUI installation ` - - :doc:`Source Code ` - -- :doc:`Using the Demo Board ` - - - :doc:`Connecting the Board ` - - :doc:`DPC ON vs. DPC OFF Demonstration ` - -- :doc:`Legal terms and conditions ` - --------------- - -Navigation -========== - -:doc:`Next (Introduction) ` diff --git a/docs/wiki-migration/resources/eval/user-guides/ad5758.rst b/docs/wiki-migration/resources/eval/user-guides/ad5758.rst deleted file mode 100644 index 22014a9db0f..00000000000 --- a/docs/wiki-migration/resources/eval/user-guides/ad5758.rst +++ /dev/null @@ -1,280 +0,0 @@ -AD5758 - Reference Design -========================= - -Supported Devices ------------------ - -- :adi:`AD5758` - -Evaluation Boards ------------------ - -- :adi:`EVAL-AD5758` - -Supported FPGA carrier board ----------------------------- - -- `Zedboard `_ - -Overview --------- - -The :adi:`AD5758` is a single-channel, voltage and current output digital-to-analog converter (DAC) that operates with a power supply range from −33 V minimum on AVSS to +33 V maximum on AVDD1 with a maximum operating voltage between the two rails of 60 V. On-chip DPC minimizes package power dissipation, which is achieved by regulating the supply voltage (VDPC+) to the VIOUT output driver circuitry from 5 V to 27 V using a buck dc-to-dc converter, optimized for minimum on-chip power dissipation. The CHART pin enables a HART signal to be coupled onto the current output. - -The device uses a versatile 4-wire serial peripheral interface (SPI) that operates at clock rates of up to 50 MHz and is compatible with standard SPI, QSPI™, MICROWIRE™, DSP, and micro-controller interface standards. The interface also features an optional SPI cyclic redundancy check (CRC) and a watchdog timer. The :adi:`AD5758` offers improved diagnostic features from its predecessors, such as output current monitoring and an integrated 12-bit diagnostic ADC. Additional robustness is provided by the inclusion of a fault protection switch on VIOUT, +VSENSE, and −VSENSE pins. - -Applications: - -- Process control -- Actuator control -- PLC and DCS applications -- HART network connectivity - -HDL reference design --------------------- - -The HDL project is only needed if the used carrier board is an FPGA board. The -project uses a Zedboard and its hardware interfaces. There isn't any custom -logic in the programmable side of the Zynq 7000 SoC. To clone or download the -HDL repository, go the Download section of this wiki page. - -To find more information about how to create and build the project please visit the :doc:`HDL build guide `. - -To find more information about how to create the application project in Xilinx SDK please visit the following page: :doc:`/wiki-migration/resources/fpga/xilinx/software_setup` - -Driver Description ------------------- - -Functions Declarations -~~~~~~~~~~~~~~~~~~~~~~ - -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| Function | Description | -+===============================================================================================================================+==============================================================================+ -| ``static uint8_t ad5758_compute_crc8(uint8_t *data, uint8_t data_size)`` | Compute CRC8 checksum. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``static int32_t ad5758_spi_reg_read(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t *reg_data);`` | Read from device. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``static int32_t ad5758_spi_reg_write(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t reg_data);`` | Write to device. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``static int32_t ad5758_spi_write_mask(struct ad5758_dev *dev, uint8_t reg_addr, uint32_t mask, uint16_t data);`` | SPI write to device using a mask. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_crc(struct ad5758_dev *dev, uint8_t crc_en);`` | Enable/disable SPI CRC function. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_wait_for_refresh_cycle(struct ad5758_dev *dev);`` | Busy wait until CAL_MEM_UNREFRESHED bit in the DIGITAL_DIAG_RESULTS clears. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_soft_reset(struct ad5758_dev *dev);`` | Initiate a software reset. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_calib_mem_refresh(struct ad5758_dev *dev);`` | Initiate a calibration memory refresh to the shadow registers. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_dc_dc_conv_mode(struct ad5758_dev *dev, enum ad5758_dc_dc_mode mode);`` | Configure the dc-to-dc controller mode. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_dc_dc_ilimit(struct ad5758_dev *dev, enum ad5758_dc_dc_ilimt ilimit);`` | Set the dc-to-dc converter current limit. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_fault_prot_switch_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT Fault Protection Switch. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_internal_buffers_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable Enable Internal Buffers. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_out_range(struct ad5758_dev *dev, enum ad5758_output_range range);`` | Select Output Range. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_slew_rate_config(struct ad5758_dev *dev, enum ad5758_slew_rate_clk clk, uint8_t enable);`` | Configure the slew rate by setting the clock and enable/disable the control. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_dac_input_write(struct ad5758_dev *dev, uint16_t code);`` | Write DAC data to the input register. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_dac_output_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_clear_dig_diag_flag(struct ad5758_dev *dev, enum ad5758_dig_diag_flags flag);`` | Clear the error flags for the on-chip digital diagnostic features. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_clkout_config(struct ad5758_dev *dev, enum ad5758_clkout_config config, enum ad5758_clkout_freq freq);`` | Configure CLKOUT by setting the frequency and enabling/disabling the option. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_select_adc_ip(struct ad5758_dev *dev, enum ad5758_adc_ip adc_ip_sel);`` | Select which node to multiplex to the ADC. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_select_adc_depth(struct ad5758_dev *dev, uint8_t num_of_channels);`` | Set depth of the sequencer. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_adc_channel_input(struct ad5758_dev *dev, uint8_t channel, enum ad5758_adc_ip adc_ip_sel);`` | Load the desired channel into the sequencer with the adc input. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_adc_mode(struct ad5758_dev *dev, enum ad5758_adc_mode adc_mode, uint8_t enable);`` | Configure the ADC into one of four modes of operation. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_init(struct ad5758_dev **device, struct ad5758_init_param init_param);`` | Set up the device from power-on or reset condition with the correct. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - -Types Declarations -~~~~~~~~~~~~~~~~~~ - -.. code-block:: c - -:: - - enum ad5758_dc_dc_mode { - DC_DC_POWER_OFF, - DPC_CURRENT_MODE, - DPC_VOLTAGE_MODE, - PPC_CURRENT_MODE, - }; - -:: - - enum ad5758_dig_diag_flags { - DIAG_SPI_CRC_ERR, - DIAG_SLIPBIT_ERR, - DIAG_SCLK_COUNT_ERR, - DIAG_INVALID_SPI_ACCESS_ERR = 4, - DIAG_CAL_MEM_CRC_ERR, - DIAG_INVERSE_DAC_CHECK_ERR, - DIAG_DAC_LATCH_MON_ERR = 8, - DIAG_THREE_WI_RC_ERR, - DIAG_WDT_ERR = 11, - DIAG_ERR_3WI, - DIAG_RESET_OCCURRED, - }; - -:: - - enum ad5758_clkout_config { - CLKOUT_DISABLE, - CLKOUT_ENABLE, - }; - -:: - - enum ad5758_clkout_freq { - CLKOUT_FREQ_416_KHZ, - CLKOUT_FREQ_435_KHZ, - CLKOUT_FREQ_454_KHZ, - CLKOUT_FREQ_476_KHZ, - CLKOUT_FREQ_500_KHZ, - CLKOUT_FREQ_526_KHZ, - CLKOUT_FREQ_555_KHZ, - CLKOUT_FREQ_588_KHZ, - }; - -:: - - enum ad5758_slew_rate_clk { - SR_CLOCK_240_KHZ, - SR_CLOCK_200_KHZ, - SR_CLOCK_150_KHZ, - SR_CLOCK_128_KHZ, - SR_CLOCK_64_KHZ, - SR_CLOCK_32_KHZ, - SR_CLOCK_16_KHZ, - SR_CLOCK_8_KHZ, - SR_CLOCK_4_KHZ, - SR_CLOCK_2_KHZ, - SR_CLOCK_1_KHZ, - SR_CLOCK_512_HZ, - SR_CLOCK_256_HZ, - SR_CLOCK_128_HZ, - SR_CLOCK_64_HZ, - SR_CLOCK_16_HZ, - }; - -:: - - enum ad5758_dc_dc_ilimt { - ILIMIT_150_mA, - ILIMIT_200_mA, - ILIMIT_250_mA, - ILIMIT_300_mA, - ILIMIT_350_mA, - ILIMIT_400_mA, - }; - -:: - - enum ad5758_output_range { - RANGE_0V_5V, - RANGE_0V_10V, - RANGE_M5V_5V, - RANGE_M10V_10V, - RANGE_0mA_20mA = 8, - RANGE_0mA_24mA, - RANGE_4mA_24mA, - RANGE_M20mA_20mA, - RANGE_M24mA_24mA, - RANGE_M1mA_22mA, - }; - -:: - - enum ad5758_adc_ip { - ADC_IP_MAIN_DIE_TEMP, - ADC_IP_DCDC_DIE_TEMP, - ADC_IP_REFIN = 3, - ADC_IP_REF2, - ADC_IP_VSENSE = 13, - ADC_IP_MVSENSE, - ADC_IP_INT_AVCC = 20, - ADC_IP_REGOUT, - ADC_IP_VLOGIC, - ADC_IP_INT_CURR_MON_VOUT, - ADC_IP_REFGND, - ADC_IP_AGND, - ADC_IP_DGND, - ADC_IP_VDPC, - ADC_IP_AVDD2, - ADC_IP_AVSS, - ADC_IP_DCDC_DIE_NODE, - ADC_IP_REFOUT, - }; - -:: - - enum ad5758_adc_mode { - ADC_MODE_KEY_SEQ = 2, - ADC_MODE_AUTO_SEQ, - ADC_MODE_SINGLE_CONV, - ADC_MODE_SINGLE_KEY_CONV, - }; - -:: - - struct ad5758_dev { - /* SPI */ - struct spi_desc *spi_desc; - /* GPIO */ - struct gpio_desc *reset_n; - struct gpio_desc *ldac_n; - /* Device Settings */ - uint8_t crc_en; - enum ad5758_dc_dc_mode dc_dc_mode; - }; - -:: - - struct ad5758_init_param { - /* SPI */ - struct spi_init_param spi_init; - /* GPIO */ - struct gpio_init_param reset_n; - struct gpio_init_param ldac_n; - /* Device Settings */ - uint8_t crc_en; - enum ad5758_dc_dc_mode dc_dc_mode; - enum ad5758_clkout_config clkout_config; - enum ad5758_clkout_freq clkout_freq; - enum ad5758_dc_dc_ilimt dc_dc_ilimt; - enum ad5758_output_range output_range; - enum ad5758_slew_rate_clk slew_rate_clk; - }; - -HDL Downloads -------------- - -.. admonition:: Download - :class: download - - - - :git-hdl:`HDL Reference Design ` - - -No-OS Downloads ---------------- - -.. admonition:: Download - :class: download - - - - :git-no-OS:`No-OS Reference Design ` - - :git-no-OS:`No-OS Drivers ` - diff --git a/docs/wiki-migration/resources/tools-software/linux-drivers/iio-dac/ad5758.rst b/docs/wiki-migration/resources/tools-software/linux-drivers/iio-dac/ad5758.rst deleted file mode 100644 index ef0a6b0ed87..00000000000 --- a/docs/wiki-migration/resources/tools-software/linux-drivers/iio-dac/ad5758.rst +++ /dev/null @@ -1,198 +0,0 @@ -AD5758 IIO DAC Linux Driver -=========================== - -Supported Devices ------------------ - -This driver supports the - -- :adi:`AD5758` - -Evaluation Boards ------------------ - -- :adi:`EVAL-AD5758` - -Description ------------ - -This is a Linux industrial I/O (:doc:`IIO `) subsystem driver, targeting multi-channel serial interface DACs. The industrial I/O subsystem provides a unified framework for drivers for many different types of converters and sensors using a number of different physical interfaces (i2c, spi, etc). See :doc:`IIO ` for more information. - -Source Code -=========== - -Status ------- - -+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ -| Source | Mainlined? | -+============================================================================================================+============================================================================================================+ -| `git `_ | `Yes `_ | -+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ - -Files ------ - -+----------+---------------------------------------------------------------------------------------------------------------------------------+ -| Function | File | -+==========+=================================================================================================================================+ -| driver | `drivers/iio/dac/ad5758.c `_ | -+----------+---------------------------------------------------------------------------------------------------------------------------------+ - -Devicetree ----------- - -Required properties for the AD5758: - -- compatible: Must be "adi,ad5758" -- reg: SPI chip select number for the device -- spi-max-frequency: Max SPI frequency to use (< 50000000) -- spi-cpha: is the only mode that is supported - -Optional properties: - -- reset-gpios : GPIO spec for the RESET pin. If specified, it will be asserted during driver probe. -- adi,dc-dc-mode: Mode of operation of the dc-to-dc converter -- adi,dc-dc-ilim: The dc-to-dc converter current limit -- adi,slew: Array of slewrate settings should contain 3 fields: -- adi,range: The output range - -:: - - #address-cells = <1>; - #size-cells = <0>; - status = "okay"; - - ad5758@0 { - compatible = "adi,ad5758"; - reg = <0>; - spi-max-frequency = <1000000>; - spi-cpha; - - reset-gpios = <&gpio 22 0>; /* optional */ - - adi,dc-dc-mode = <2>; - adi,dc-dc-ilim = <200>; - adi,slew = <1 200000 12>; - adi,range = <1>; - -Driver testing -============== - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root:/> cd /sys/bus/iio/devices/ - root:/sys/bus/iio/devices> ls - iio:device0 - - root:/sys/bus/iio/devices> cd iio\:device0 - - root:/sys/bus/iio/devices/iio:device0> ls -l - -r--r--r-- 1 root root 4096 May 23 09:14 dev - -rw-r--r-- 1 root root 4096 May 23 09:14 out_voltage0_powerdown - -rw-r--r-- 1 root root 4096 May 23 09:14 out_voltage0_raw - -rw-r--r-- 1 root root 4096 May 23 09:14 out_voltage_scale - -r--r--r-- 1 root root 4096 May 23 09:14 name - drwxr-xr-x 2 root root 0 May 23 09:14 power - lrwxrwxrwx 1 root root 0 May 23 09:14 subsystem -> ../../../../../../../../bus/iio - -rw-r--r-- 1 root root 4096 May 23 09:14 uevent - - -Show device name ----------------- - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root:/sys/bus/iio/devices/iio:device0> cat name - ad5758 - - -Show scale ----------- - -**Description:** scale to be applied to in_voltage0_raw in order to obtain the measured voltage in millivolts. - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root:/sys/bus/iio/devices/iio:device0> cat out_voltage_scale - 0.152587890 - - -Set channel 0 output voltage ----------------------------- - -**Description:** /sys/bus/iio/devices/deviceX/out_voltage0_raw - -Raw (unscaled, no bias etc.) output voltage for channel 0. - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root:/sys/bus/iio/devices/iio:device0> echo 32767 > out_voltage0_raw - - -**U** = *out_voltage0_raw \* out_voltage_scale* = 32767 \* 0.152587890 = **4999.84 mV** - -Enable power down mode on output 0 ----------------------------------- - -/sys/bus/iio/devices/deviceX/out_voltage0_powerdown - -**Description:** Writing 1 causes output 0 to enter the power down mode. Clearing returns to normal operation. - -.. container:: box bggreen - - This specifies any shell prompt running on the target - - - :: - - root:/sys/bus/iio/devices/iio:device0> echo 1 > out_voltage0_powerdown - root:/sys/bus/iio/devices/iio:device0> cat out_voltage0_powerdown - 1 - root:/sys/bus/iio/devices/iio:device0> echo 0 > out_voltage0_powerdown - root:/sys/bus/iio/devices/iio:device0> cat out_voltage0_powerdown - 0 - - -More Information -================ - -- IIO mailing list: linux-iio@vger.kernel.org -- `IIO Linux Kernel Documentation sysfs-bus-iio-\* `_ -- `IIO Documentation `_ -- :doc:`IIO test and visualization application ` -- :doc:`libiio - IIO system library ` -- :doc:`libiio - Internals ` -- :doc:`Pointers and good books ` -- `IIO High Speed `_ -- `Software Defined Radio using the IIO framework `_ -- - -|libiio introduction| - -*Need Help?* - -- :ez:`Analog Devices Linux Device Drivers Help Forum ` -- `Ask a Question `_ - -.. |libiio introduction| image:: https://wiki.analog.com/_media/software/linux/docs/iio/youtube>p_vntewue24 diff --git a/docs/wiki-migration/resources/tools-software/uc-drivers/ad5758.rst b/docs/wiki-migration/resources/tools-software/uc-drivers/ad5758.rst deleted file mode 100644 index 772c4f0a012..00000000000 --- a/docs/wiki-migration/resources/tools-software/uc-drivers/ad5758.rst +++ /dev/null @@ -1,278 +0,0 @@ -AD5758 - No-OS Driver -===================== - -Supported Devices ------------------ - -- :adi:`AD5758` - -Evaluation Boards ------------------ - -- :adi:`EVAL-AD5758` - -Overview --------- - -The :adi:`AD5758` is a single-channel, voltage and current output digital-to-analog converter (DAC) that operates with a power supply range from −33 V minimum on AVSS to +33 V maximum on AVDD1 with a maximum operating voltage between the two rails of 60 V. On-chip DPC minimizes package power dissipation, which is achieved by regulating the supply voltage (VDPC+) to the VIOUT output driver circuitry from 5 V to 27 V using a buck dc-to-dc converter, optimized for minimum on-chip power dissipa-tion. The CHART pin enables a HART signal to be coupled onto the current output. - -The device uses a versatile 4-wire serial peripheral interface (SPI) that operates at clock rates of up to 50 MHz and is compatible with standard SPI, QSPI™, MICROWIRE™, DSP, and microcontroller interface standards. The interface also features an optional SPI cyclic redundancy check (CRC) and a watchdog timer. The :adi:`AD5758` offers improved diagnostic features from its predecessors, such as output current monitoring and an integrated 12-bit diagnostic ADC. Additional robustness is provided by the inclusion of a fault protection switch on VIOUT, +VSENSE, and −VSENSE pins. - -Applications -~~~~~~~~~~~~ - -- Process control -- Actuator control -- PLC and DCS applications -- HART network connectivity - -HDL Design Description ----------------------- - -In the :doc:`ADI Reference Designs HDL User Guide ` can be found an in-depth presentation and instructions about the HDL design in general. - -In order to build the HDL design the user has to go through the following steps: - -- Confirm that you have the right tools (the reference design requires Vivado 2018.3) -- Clone the HDL GitHub repository (the project is located at :git-hdl:`projects/ad5758_sdz`) -- Build the project (see :doc:`/wiki-migration/resources/fpga/docs/build`) - -Software Setup --------------- - -In order to perform the software setup the user has to go through the following -steps: - -- Confirm that you have the right tools (the reference design requires XSDK) -- Clone the No-OS GitHub repository (the project is located at :git-no-OS:`ad5758-sdz` ) -- Follow the instructions provided by :doc:`software_setup `. - -Driver Description ------------------- - -Functions Declarations -~~~~~~~~~~~~~~~~~~~~~~ - -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| Function | Description | -+===============================================================================================================================+==============================================================================+ -| ``static uint8_t ad5758_compute_crc8(uint8_t *data, uint8_t data_size)`` | Compute CRC8 checksum. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``static int32_t ad5758_spi_reg_read(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t *reg_data);`` | Read from device. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``static int32_t ad5758_spi_reg_write(struct ad5758_dev *dev, uint8_t reg_addr, uint16_t reg_data);`` | Write to device. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``static int32_t ad5758_spi_write_mask(struct ad5758_dev *dev, uint8_t reg_addr, uint32_t mask, uint16_t data);`` | SPI write to device using a mask. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_crc(struct ad5758_dev *dev, uint8_t crc_en);`` | Enable/disable SPI CRC function. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_wait_for_refresh_cycle(struct ad5758_dev *dev);`` | Busy wait until CAL_MEM_UNREFRESHED bit in the DIGITAL_DIAG_RESULTS clears. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_soft_reset(struct ad5758_dev *dev);`` | Initiate a software reset. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_calib_mem_refresh(struct ad5758_dev *dev);`` | Initiate a calibration memory refresh to the shadow registers. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_dc_dc_conv_mode(struct ad5758_dev *dev, enum ad5758_dc_dc_mode mode);`` | Configure the dc-to-dc controller mode. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_dc_dc_ilimit(struct ad5758_dev *dev, enum ad5758_dc_dc_ilimt ilimit);`` | Set the dc-to-dc converter current limit. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_fault_prot_switch_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT Fault Protection Switch. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_internal_buffers_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable Enable Internal Buffers. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_out_range(struct ad5758_dev *dev, enum ad5758_output_range range);`` | Select Output Range. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_slew_rate_config(struct ad5758_dev *dev, enum ad5758_slew_rate_clk clk, uint8_t enable);`` | Configure the slew rate by setting the clock and enable/disable the control. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_dac_input_write(struct ad5758_dev *dev, uint16_t code);`` | Write DAC data to the input register. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_dac_output_en(struct ad5758_dev *dev, uint8_t enable);`` | Enable/disable VIOUT. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_clear_dig_diag_flag(struct ad5758_dev *dev, enum ad5758_dig_diag_flags flag);`` | Clear the error flags for the on-chip digital diagnostic features. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_clkout_config(struct ad5758_dev *dev, enum ad5758_clkout_config config, enum ad5758_clkout_freq freq);`` | Configure CLKOUT by setting the frequency and enabling/disabling the option. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_select_adc_ip(struct ad5758_dev *dev, enum ad5758_adc_ip adc_ip_sel);`` | Select which node to multiplex to the ADC. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_select_adc_depth(struct ad5758_dev *dev, uint8_t num_of_channels);`` | Set depth of the sequencer. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_adc_channel_input(struct ad5758_dev *dev, uint8_t channel, enum ad5758_adc_ip adc_ip_sel);`` | Load the desired channel into the sequencer with the adc input. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_set_adc_mode(struct ad5758_dev *dev, enum ad5758_adc_mode adc_mode, uint8_t enable);`` | Configure the ADC into one of four modes of operation. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| ``int32_t ad5758_init(struct ad5758_dev **device, struct ad5758_init_param init_param);`` | Set up the device from power-on or reset condition with the correct. | -+-------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - -Types Declarations -~~~~~~~~~~~~~~~~~~ - -.. code-block:: c - -:: - - enum ad5758_dc_dc_mode { - DC_DC_POWER_OFF, - DPC_CURRENT_MODE, - DPC_VOLTAGE_MODE, - PPC_CURRENT_MODE, - }; - -:: - - enum ad5758_dig_diag_flags { - DIAG_SPI_CRC_ERR, - DIAG_SLIPBIT_ERR, - DIAG_SCLK_COUNT_ERR, - DIAG_INVALID_SPI_ACCESS_ERR = 4, - DIAG_CAL_MEM_CRC_ERR, - DIAG_INVERSE_DAC_CHECK_ERR, - DIAG_DAC_LATCH_MON_ERR = 8, - DIAG_THREE_WI_RC_ERR, - DIAG_WDT_ERR = 11, - DIAG_ERR_3WI, - DIAG_RESET_OCCURRED, - }; - -:: - - enum ad5758_clkout_config { - CLKOUT_DISABLE, - CLKOUT_ENABLE, - }; - -:: - - enum ad5758_clkout_freq { - CLKOUT_FREQ_416_KHZ, - CLKOUT_FREQ_435_KHZ, - CLKOUT_FREQ_454_KHZ, - CLKOUT_FREQ_476_KHZ, - CLKOUT_FREQ_500_KHZ, - CLKOUT_FREQ_526_KHZ, - CLKOUT_FREQ_555_KHZ, - CLKOUT_FREQ_588_KHZ, - }; - -:: - - enum ad5758_slew_rate_clk { - SR_CLOCK_240_KHZ, - SR_CLOCK_200_KHZ, - SR_CLOCK_150_KHZ, - SR_CLOCK_128_KHZ, - SR_CLOCK_64_KHZ, - SR_CLOCK_32_KHZ, - SR_CLOCK_16_KHZ, - SR_CLOCK_8_KHZ, - SR_CLOCK_4_KHZ, - SR_CLOCK_2_KHZ, - SR_CLOCK_1_KHZ, - SR_CLOCK_512_HZ, - SR_CLOCK_256_HZ, - SR_CLOCK_128_HZ, - SR_CLOCK_64_HZ, - SR_CLOCK_16_HZ, - }; - -:: - - enum ad5758_dc_dc_ilimt { - ILIMIT_150_mA, - ILIMIT_200_mA, - ILIMIT_250_mA, - ILIMIT_300_mA, - ILIMIT_350_mA, - ILIMIT_400_mA, - }; - -:: - - enum ad5758_output_range { - RANGE_0V_5V, - RANGE_0V_10V, - RANGE_M5V_5V, - RANGE_M10V_10V, - RANGE_0mA_20mA = 8, - RANGE_0mA_24mA, - RANGE_4mA_24mA, - RANGE_M20mA_20mA, - RANGE_M24mA_24mA, - RANGE_M1mA_22mA, - }; - -:: - - enum ad5758_adc_ip { - ADC_IP_MAIN_DIE_TEMP, - ADC_IP_DCDC_DIE_TEMP, - ADC_IP_REFIN = 3, - ADC_IP_REF2, - ADC_IP_VSENSE = 13, - ADC_IP_MVSENSE, - ADC_IP_INT_AVCC = 20, - ADC_IP_REGOUT, - ADC_IP_VLOGIC, - ADC_IP_INT_CURR_MON_VOUT, - ADC_IP_REFGND, - ADC_IP_AGND, - ADC_IP_DGND, - ADC_IP_VDPC, - ADC_IP_AVDD2, - ADC_IP_AVSS, - ADC_IP_DCDC_DIE_NODE, - ADC_IP_REFOUT, - }; - -:: - - enum ad5758_adc_mode { - ADC_MODE_KEY_SEQ = 2, - ADC_MODE_AUTO_SEQ, - ADC_MODE_SINGLE_CONV, - ADC_MODE_SINGLE_KEY_CONV, - }; - -:: - - struct ad5758_dev { - /* SPI */ - struct spi_desc *spi_desc; - /* GPIO */ - struct gpio_desc *reset_n; - struct gpio_desc *ldac_n; - /* Device Settings */ - uint8_t crc_en; - enum ad5758_dc_dc_mode dc_dc_mode; - }; - -:: - - struct ad5758_init_param { - /* SPI */ - struct spi_init_param spi_init; - /* GPIO */ - struct gpio_init_param reset_n; - struct gpio_init_param ldac_n; - /* Device Settings */ - uint8_t crc_en; - enum ad5758_dc_dc_mode dc_dc_mode; - enum ad5758_clkout_config clkout_config; - enum ad5758_clkout_freq clkout_freq; - enum ad5758_dc_dc_ilimt dc_dc_ilimt; - enum ad5758_output_range output_range; - enum ad5758_slew_rate_clk slew_rate_clk; - }; - -Reference Design ----------------- - -Downloads ---------- - -.. admonition:: Download - :class: download - - - - :git-hdl:`HDL Reference Design. ` - - :git-no-OS:`No-OS Reference Design. ` - From 4f5cc2863f98de0d608ab3488ef157a0992cad3f Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Tue, 7 Apr 2026 13:47:34 +0300 Subject: [PATCH 4/6] Fix :doc: refs to wiki-migration paths and RST errors Co-Authored-By: Claude Opus 4.6 --- .../reference-designs/eval-ad5758/ad5758.rst | 6 +-- .../eval-ad5758/ad5758_adp1031.rst | 44 +++++++++---------- .../reference-designs/eval-ad5758/index.rst | 5 +-- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/docs/solutions/reference-designs/eval-ad5758/ad5758.rst b/docs/solutions/reference-designs/eval-ad5758/ad5758.rst index 772c4f0a012..de2cc308523 100644 --- a/docs/solutions/reference-designs/eval-ad5758/ad5758.rst +++ b/docs/solutions/reference-designs/eval-ad5758/ad5758.rst @@ -29,13 +29,13 @@ Applications HDL Design Description ---------------------- -In the :doc:`ADI Reference Designs HDL User Guide ` can be found an in-depth presentation and instructions about the HDL design in general. +In the `ADI Reference Designs HDL User Guide `_ can be found an in-depth presentation and instructions about the HDL design in general. In order to build the HDL design the user has to go through the following steps: - Confirm that you have the right tools (the reference design requires Vivado 2018.3) - Clone the HDL GitHub repository (the project is located at :git-hdl:`projects/ad5758_sdz`) -- Build the project (see :doc:`/wiki-migration/resources/fpga/docs/build`) +- Build the project (see `Build `_) Software Setup -------------- @@ -45,7 +45,7 @@ steps: - Confirm that you have the right tools (the reference design requires XSDK) - Clone the No-OS GitHub repository (the project is located at :git-no-OS:`ad5758-sdz` ) -- Follow the instructions provided by :doc:`software_setup `. +- Follow the instructions provided by `software_setup `_. Driver Description ------------------ diff --git a/docs/solutions/reference-designs/eval-ad5758/ad5758_adp1031.rst b/docs/solutions/reference-designs/eval-ad5758/ad5758_adp1031.rst index 26bbd54dd49..716ad6dc311 100644 --- a/docs/solutions/reference-designs/eval-ad5758/ad5758_adp1031.rst +++ b/docs/solutions/reference-designs/eval-ad5758/ad5758_adp1031.rst @@ -21,40 +21,40 @@ The DEMO-AD5758-AO8Z Board demonstrates a system-level concept where the :adi:`A Table of Contents ================= -- :doc:`Introduction ` -- :doc:`System Specifications ` +- `Introduction `_ +- `System Specifications `_ - - :doc:`Absolute Max Ratings ` - - :doc:`Performance Specifications ` + - `Absolute Max Ratings `_ + - `Performance Specifications `_ - - :doc:`Input Voltage ` - - :doc:`Voltage Output Mode ` - - :doc:`Current Output Mode ` - - :doc:`Power Dissipation ` + - `Input Voltage `_ + - `Voltage Output Mode `_ + - `Current Output Mode `_ + - `Power Dissipation `_ -- :doc:`Hardware Details ` +- `Hardware Details `_ - - :doc:`Hardware Description ` - - :doc:`Schematics ` - - :doc:`Layout ` - - :doc:`Bill of Materials ` + - `Hardware Description `_ + - `Schematics `_ + - `Layout `_ + - `Bill of Materials `_ -- :doc:`Software Details ` +- `Software Details `_ - - :doc:`Firmware Installation ` - - :doc:`GUI installation ` - - :doc:`Source Code ` + - `Firmware Installation `_ + - `GUI installation `_ + - `Source Code `_ -- :doc:`Using the Demo Board ` +- `Using the Demo Board `_ - - :doc:`Connecting the Board ` - - :doc:`DPC ON vs. DPC OFF Demonstration ` + - `Connecting the Board `_ + - `DPC ON vs. DPC OFF Demonstration `_ -- :doc:`Legal terms and conditions ` +- `Legal terms and conditions `_ -------------- Navigation ========== -:doc:`Next (Introduction) ` +`Next (Introduction) `_ diff --git a/docs/solutions/reference-designs/eval-ad5758/index.rst b/docs/solutions/reference-designs/eval-ad5758/index.rst index eacfd33fc69..f03fddcb049 100644 --- a/docs/solutions/reference-designs/eval-ad5758/index.rst +++ b/docs/solutions/reference-designs/eval-ad5758/index.rst @@ -23,12 +23,9 @@ Applications: .. toctree:: :hidden: - ad5758 - ad5758 ad5758 ad5758_adp1031 - -Recommendations + Recommendations ------------------------------------------------------------------------------- People who follow the flow that is outlined, have a much better experience with From 4e18eee78c6058bec34070d55c5c70aa5c4f1422 Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Tue, 7 Apr 2026 15:32:48 +0300 Subject: [PATCH 5/6] Fix remaining build errors (includes, tables, toctree) Co-Authored-By: Claude Opus 4.6 --- docs/solutions/reference-designs/eval-ad5758/index.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/solutions/reference-designs/eval-ad5758/index.rst b/docs/solutions/reference-designs/eval-ad5758/index.rst index f03fddcb049..dc42879de29 100644 --- a/docs/solutions/reference-designs/eval-ad5758/index.rst +++ b/docs/solutions/reference-designs/eval-ad5758/index.rst @@ -25,7 +25,6 @@ Applications: ad5758 ad5758_adp1031 - Recommendations ------------------------------------------------------------------------------- People who follow the flow that is outlined, have a much better experience with From 110246c96ada4b4d78d4f837b078cc942aa7fbb1 Mon Sep 17 00:00:00 2001 From: Vicentiu Neagoe Date: Tue, 7 Apr 2026 15:57:26 +0300 Subject: [PATCH 6/6] Fix build: index.rst blank line before section heading Co-Authored-By: Claude Opus 4.6 --- docs/solutions/reference-designs/eval-ad5758/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/solutions/reference-designs/eval-ad5758/index.rst b/docs/solutions/reference-designs/eval-ad5758/index.rst index dc42879de29..3149cf426af 100644 --- a/docs/solutions/reference-designs/eval-ad5758/index.rst +++ b/docs/solutions/reference-designs/eval-ad5758/index.rst @@ -25,6 +25,7 @@ Applications: ad5758 ad5758_adp1031 + ------------------------------------------------------------------------------- People who follow the flow that is outlined, have a much better experience with