Wiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
playground:playground [25 Jun 2020 20:34] – [Software setup] Matt Duffplayground:playground [05 Apr 2024 13:03] (current) – Edit Tinaco Mariel
Line 1: Line 1:
-====== Page Title Change ====== +====== AD8460 IIO DAC Linux Driver ======
-blah blah +
-<h3>this is a test edit</h3>+
  
-{{:playground:16lfcsppinout.png?nolink&200|}}+===== Supported Devices =====
  
-[[#Pin Map|Pin Map link]] +  * [[adi>AD8460]]
-A brand new test: blah blah blah+
  
-<WRAP tip>For help/assistance/support on the above check out: [[#Level 1 Headline]]</WRAP>+===== Evaluation Boards =====
  
 +  * [[adi>EVAL-AD8460SDZ]]
  
 +===== Description =====
  
-====== ======+This is a Linux industrial I/O (IIO) subsystem driver, targeting single channel DAC. 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 IIO for more information.
  
-====== ======+See [[software:linux:docs:iio:iio|IIO]] for more information.
  
-====== ======+{{ :software:driver:linux:ad8460-fbl.png}}
  
  
-====== ======+====== Source Code ======
  
 +===== Status =====
  
 +^ Source ^ Mainlined? ^
 +| [[git.linux.org>drivers/iio/dac/ad8460.c|git]] | [No] |
  
 +===== Files =====
  
 +^ Function ^ File ^
 +| driver  | [[linux.github>master?drivers/iio/dac/ad8460.c | drivers/iio/dac/ad8460.c]] |
 +| include  | [[linux.github>master?include/dt-bindings/iio/adi,ad8460.h | include/dt-bindings/iio/adi,ad8460.h]] |
 +| Documentation  | [[linux.github>master?Documentation/devicetree/bindings/iio/dac/ad8460.txt | Documentation/devicetree/bindings/iio/dac/ad8460.txt]] |
  
  
 +====== Hardware configuration ======
  
 +==== Device tree example ====
  
 +The following example instantiates the ad8460 driver for an AD8460 device connected on the SPI bus to the chip-select line 0.
  
 +<code>
 +#include <dt-bindings/iio/adi,ad8460.h>
 +#include "zynq-zed.dtsi"
 +#include "zynq-zed-adv7511.dtsi"
  
-====== Please select your scenario ====== +/ { 
-  [[#mbed microcontroller and AD5677R evaluation board|I am using ADI's evaluation board system: an SDP-K1 controller board and an EVAL-AD5677R eval board. ]] + clocks { 
-  [[#mbed microcontroller and AD5677R evaluation board|I am using my own microcontroller board that is mbed compatible and an AD5677R evaluation board]] + sync_ext_clk: ext-clk { 
-  [[#mbed microcontroller and AD5677R evaluation board|I am using my own microcontroller board that is not mbed compatible and an AD5677R evaluation board]] + #clock-cells = <0x0>; 
-  - I just want to see the AD5677R driver code.+ compatible = "fixed-clock"; 
 + clock-frequency = <500000>; 
 + clock-output-names = "sync_ext_clk"; 
 + }; 
 + }; 
 +};
  
-====== SDP-K1 and AD5677R evaluation board ======+&fpga_axi {
  
 + tx_dma: tx_dmac@44000000 {
 + compatible = "adi,axi-dmac-1.00.a";
 + reg = <0x44000000 0x1000>;
 + interrupts = <0 57 IRQ_TYPE_LEVEL_HIGH>;
 + clocks = <&clkc 15>;
 + #dma-cells = <1>;
  
-===== Hardware setup ===== + adi,channels 
-{{ :playground:ad5677r_eval_board_chain_with_sdp-k1.png?nolink&600 |}} + #size-cells = <0>; 
-  * [[https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-AD5677R.html | EVAL-AD5677R evaluation board]]  + #address-cells = <1>;
-  * [[https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/sdp-k1.html | SDP-K1 controller board]]+
  
-  Connect the EVAL-AD5677R to the SDP-K1 controller board. + dma-channel@0 { 
-  Connect the SDP-K1 controller board to your computer over USB. + reg = <0>; 
 + adi,source-bus-width = <64>; 
 + adi,source-bus-type = <0>; 
 + adi,destination-bus-width = <32>; 
 + adi,destination-bus-type = <2>; 
 + adi,cyclic; 
 + }; 
 + }; 
 + }; 
 +};
  
-===== Software setup ===== +&spi0 
-The software stack is structured in the following way: + status "okay";
-{{ :resources:tools-software:product-support-software:nanodac_software_layers.jpg?250 |}} +
-  -     Go to the link of the code provided above in the 'Downloads' section and import code into Mbed online compiler (Edit app_config.h file (defaults to SDP connector and AD5686R device) if evaluating any other device). +
-  -     Ensure SDP-K1 controller board is selected (top right of online-compiler page). +
-  -     Compile the code. +
-  -     After a successful compile a binary will be downloaded to your computer - store this on your drive. +
-  -     Drag and drop this binary to the USB drive hosted by your controller board. +
-  -     Start up a serial terminal emulator (e.g. Tera Term) +
-  -         Find the com-port your controller board is connected on and select it. +
-  -         Set the baud-rate for 115200 +
-  -         Reset the controller board and connect. +
-  -     Use the menu provided over the terminal window to access the evaluation board. +
-====== mbed microcontroller and AD5677R evaluation board ====== +
-===== Hardware setup ===== +
-{{ :playground:ad5677r_eval_board_chain_with_mbed_microcontroller_board.png?nolink&600 |}} +
-  * [[https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/EVAL-AD5677R.html | EVAL-AD5677R evaluation board]]  +
-  * [[https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/sdp-k1.html | SDP-K1 controller board]]+
  
-==== Quick start ====+ ad8460: dac@0 { 
 + compatible "adi,ad8460"; 
 + reg <0>; 
 + spi-max-frequency <8000000>; 
 + adi,rset-ohms <2000>; 
 + adi,ilim-microamp <100000 100000>; 
 + adi,vlim-microvolt <(-40000000) 40000000>; 
 + adi,temp-lim-millicelsius <40000>;
  
-  - Connect the SPI lines from the EVAL-AD5677R to the SPI lines of your microcontroller board.  If your microcontroller is compatible with the arduino xxx form factor, then you should be able to just plug your microcontroller board and the EVAL-AD5677R together. + clocks = <&sync_ext_clk>; 
-  Connect your micrcontroller board to your computer. + clock-names = "sync_clk";
  
 + dma-names = "tx";
 + dmas = <&tx_dma 0>;
 + };
 +};
  
 +</code>
  
-===== Software setup ===== +====== Driver testing ======
-  -     Go to the link of the code provided above in the 'Downloads' section and import code into Mbed online compiler (Edit app_config.h file (defaults to SDP connector and AD5686R device) if evaluating any other device). +
-  -     Ensure SDP-K1 controller board is selected (top right of online-compiler page). +
-  -     Compile the code. +
-  -     After a successful compile a binary will be downloaded to your computer - store this on your drive. +
-  -     Drag and drop this binary to the USB drive hosted by your controller board. +
-  -     Start up a serial terminal emulator (e.g. Tera Term) +
-  -         Find the com-port your controller board is connected on and select it. +
-  -         Set the baud-rate for 115200 +
-  -         Reset the controller board and connect. +
-  -     Use the menu provided over the terminal window to access the evaluation board.+
  
-The software stack is structured in the following way: +If the driver correctly detected the device, the "iio_info" program should inform us about the available channels:
-{{ :resources:tools-software:product-support-software:nanodac_software_layers.jpg?250 |}} +
- +
- +
- +
- +
-Quick start steps: +
-  -     Connect the nanodac+ EVAL-board to the SDP-K1 controller board. +
-  -     Connect the SDP-K1 controller board to your computer over USB. +
-  -     Go to the link of the code provided above in the 'Downloads' section and import code into Mbed online compiler (Edit app_config.h file (defaults to SDP connector and AD5686R device) if evaluating any other device). +
-  -     Ensure SDP-K1 controller board is selected (top right of online-compiler page). +
-  -     Compile the code. +
-  -     After a successful compile a binary will be downloaded to your computer - store this on your drive. +
-  -     Drag and drop this binary to the USB drive hosted by your controller board. +
-  -     Start up a serial terminal emulator (e.g. Tera Term) +
-  -         Find the com-port your controller board is connected on and select it. +
-  -         Set the baud-rate for 115200 +
-  -         Reset the controller board and connect. +
-  -     Use the menu provided over the terminal window to access the evaluation board. +
-  -  +
-====== Features ====== +
-  * High accuracy: AD5686R  (16-bit) : ±2 LSB max +
-  * Low drift 2.5 V on-chip reference: 2 ppm/°C typ temperature coefficient +
-  * Tiny Package: 3 mm × 3 mm 16-lead LFCSP or 16-lead TSSOP +
-  * Unordered List Item Total Unadjusted Error (TUE): TBD max  +
-  * Unordered List Item Offset error: 1.5 mV max +
-  * Gain error: 0.1 % of FSR max +
-  * High drive capability: 20 mA0.5 V from supply rails  +
-  * User selectable gain of 1 or 2 (GAIN pin) +
-  * Reset to zero-scale or midscale (RSTSEL pin) +
-  * 1.8 V logic compatibility +
-  * 50 MHz SPI with readback or daisy-chain +
-  * Low glitch: 0.5 nV-s +
-  * Robust 4 kV HBM and 1.5 kV FICDM ESD rating +
-  * Low power:  mW at 3 V +
-  * 2.7 V to 5.5 V power supply +
-  * −40°C to +105°C temperature range +
- +
-====== Introduction ====== +
-The AD568xR are quad, 12-/14-/16-bit buffered voltage-out +
-DACs. The devices include a 2.5V internal reference (enabled +
-by default) coupled with a gain select pin giving a full scale +
-output of 2.5V (GAIN=1) or 5V(GAIN=2). All devices operate +
-from a single 2.7 V to 5.5 V supply, are guaranteed monotonic +
-by design and exhibit less than 0.1% FSR gain error and 2mV +
-offset error performance. The devices are housed in a 3mm X +
-3mm LFCSP and TSSOP packages. +
-The part also incorporates a power-on reset circuit that ensures +
-the DAC output powers up to zeroscale or midscale and +
-remains there until a valid write takes place. +
-{{ :playground:MainWindow.jpg? |}} +
-===== Block Diagram ====== +
-{{ :playground:ad5686r_block_diagram.png?300 |}} +
-====== Pin Map ====== +
-{{:playground:16lfcsppinout.png?|}}{{:playground:16tssoppinout.png?|}} +
-====== Quick Setup Connection Table ====== +
-^ Mnemonic       ^ Description                      ^ +
-| VOUTA          | Analog Output Voltage from DAC A |  +
- +
- +
-====== Level 1 Headline ====== +
-* [[/resources/eval/user-guides/inertial-mems/accelerometers/adxl314|Evaluating the ADXL314]] +
- +
- +
-===== Level 2 Headline ===== +
- +
-==== Level 3 Headline ==== +
- +
-=== Level 4 Headline === +
- +
-== Level 5 Headline == +
-== Signal Picture == +
-{{:playground:cn0196_testshot.jpg?200|CN-0196-EZBOARD}} +
- +
-This is the CN-0196 Lab board. You can change the capacitors by resolder ones up to 50V specification instead of the used 25V electrolytic ones. +
- +
-=)+
  
 +<code>
 +root@linaro-ubuntu-desktop:~# iio_info 
 +Library version: 0.24 (git tag: accb7b5)
 +Compiled with backends: local xml ip usb serial
 +IIO context created with local backend.
 +Backend version: 0.24 (git tag: accb7b5)
 +Backend description string: Linux analog 6.1.0-271638-g3dfbf1932ce9-dirty #348 SMP PREEMPT Fri Apr  5 16:48:16 CST 2024 armv7l
 +IIO context has 9 attributes:
 +        hdl_system_id: [ad8460] on [zed] git branch [master] git [ea29a37eae8a1daeaadb79281b3085709aaedb1c] clean [2024-01-29 03:51:24] UTC
 +        hw_model: AD8460-FMC-EVAL-BZ on Xilinx Zynq ZED
 +        hw_carrier: Xilinx Zynq ZED
 +        hw_mezzanine: AD8460-FMC-EVAL-BZ
 +        hw_name: AD8460-EVAL-RevB
 +        hw_vendor: Analog Devices
 +        hw_serial: AD8460-FMC-EVAL-BZ
 +        local,kernel: 6.1.0-271638-g3dfbf1932ce9-dirty
 +        uri: local:
 +IIO context has 4 devices:
 +        hwmon0: e000b000ethernetffffffff00
 +                1 channels found:
 +                        temp1:  (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: crit value: 100000
 +                                attr  1: input value: 16000
 +                                attr  2: max_alarm value: 0
 +                No trigger on this device
 +        iio:device0: xadc
 +                9 channels found:
 +                        voltage5: vccoddr (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: label value: vccoddr
 +                                attr  1: raw value: 2048
 +                                attr  2: scale value: 0.732421875
 +                        voltage0: vccint (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: label value: vccint
 +                                attr  1: raw value: 1382
 +                                attr  2: scale value: 0.732421875
 +                        voltage4: vccpaux (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: label value: vccpaux
 +                                attr  1: raw value: 2454
 +                                attr  2: scale value: 0.732421875
 +                        temp0:  (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: offset value: -2219
 +                                attr  1: raw value: 2534
 +                                attr  2: scale value: 123.040771484
 +                        voltage7: vrefn (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: label value: vrefn
 +                                attr  1: raw value: -4
 +                                attr  2: scale value: 0.732421875
 +                        voltage1: vccaux (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: label value: vccaux
 +                                attr  1: raw value: 2452
 +                                attr  2: scale value: 0.732421875
 +                        voltage2: vccbram (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: label value: vccbram
 +                                attr  1: raw value: 1381
 +                                attr  2: scale value: 0.732421875
 +                        voltage3: vccpint (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: label value: vccpint
 +                                attr  1: raw value: 1376
 +                                attr  2: scale value: 0.732421875
 +                        voltage6: vrefp (input)
 +                        3 channel-specific attributes found:
 +                                attr  0: label value: vrefp
 +                                attr  1: raw value: 1702
 +                                attr  2: scale value: 0.732421875
 +                2 device-specific attributes found:
 +                                attr  0: sampling_frequency value: 961538
 +                                attr  1: waiting_for_supplier value: 0
 +                No trigger on this device
 +        iio:device1: ad8460
 +                1 channels found:
 +                        altvoltage0:  (output)
 +                        2 channel-specific attributes found:
 +                                attr  0: powerdown value: 0
 +                                attr  1: sampling_frequency value: 500000
 +                2 device-specific attributes found:
 +                                attr  0: scale value: 80
 +                                attr  1: waiting_for_supplier value: 0
 +                5 debug attributes found:
 +                                debug attr  0: apg_pattern_memory value: 0 0x2000
 +                                debug attr  1: shutdown_flag value: 0
 +                                debug attr  2: apg_pattern_depth value: 3
 +                                debug attr  3: apg_mode_enable value: 0
 +                                debug attr  4: direct_reg_access value: 0x10
 +                No trigger on this device
 +        iio_sysfs_trigger:
 +                0 channels found:
 +                2 device-specific attributes found:
 +                                attr  0: add_trigger ERROR: Permission denied (13)
 +                                attr  1: remove_trigger ERROR: Permission denied (13)
 +                No trigger on this device
 +</code>
playground/playground.1593110061.txt.gz · Last modified: 25 Jun 2020 20:34 by Matt Duff