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
resources:tools-software:linux-drivers:iio-dac:ad5676 [10 Jan 2019 13:37] – [Files] Mircea Caprioruresources:tools-software:linux-drivers:iio-dac:ad5676 [20 Nov 2020 10:32] (current) – [Status] Alexandru Ardelean
Line 1: Line 1:
-====== AD5676 IIO DAC Linux Driver ======+====== nanoDAC+ IIO DAC Linux Driver ======
  
 ===== Supported Devices ===== ===== Supported Devices =====
Line 8: Line 8:
   * [[adi>AD5671R]]   * [[adi>AD5671R]]
   * [[adi>AD5672R]]   * [[adi>AD5672R]]
 +  * [[adi>AD5673R]]
   * [[adi>AD5674R]]   * [[adi>AD5674R]]
   * [[adi>AD5675R]]   * [[adi>AD5675R]]
   * [[adi>AD5676]]   * [[adi>AD5676]]
   * [[adi>AD5676R]]   * [[adi>AD5676R]]
 +  * [[adi>AD5677R]]
   * [[adi>AD5679R]]   * [[adi>AD5679R]]
   * [[adi>AD5683R]]   * [[adi>AD5683R]]
Line 33: Line 35:
 ===== Evaluation Boards ===== ===== Evaluation Boards =====
  
 +  * [[adi>EVAL-AD5677RSDZ]]
   * [[adi>EVAL-AD5679RSDZ]]   * [[adi>EVAL-AD5679RSDZ]]
   * [[adi>EVAL-AD5683RSDZ]]   * [[adi>EVAL-AD5683RSDZ]]
Line 50: Line 53:
  
 ^ Source ^ Mainlined? ^ ^ Source ^ Mainlined? ^
-| [[https://github.com/analogdevicesinc/linux/blob/rpi-4.9.y/drivers/iio/dac/|git]] | [No] |+| [[https://github.com/analogdevicesinc/linux/blob/master/drivers/iio/dac/|git]] | [[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/iio/dac/|Yes]] |
  
 ===== Files ===== ===== Files =====
Line 68: Line 71:
   * spi-cpol: Needs to be set for the correct SPI mode   * spi-cpol: Needs to be set for the correct SPI mode
   * vcc-supply: Phandle to the fixed regulator   * vcc-supply: Phandle to the fixed regulator
 +  * interrupts: the interrupt used for buffer sampling
 +  * pwms: pwm pin used as the interrupt source
  
 <code> <code>
Line 88: Line 93:
  spi-cpha;  spi-cpha;
  vcc-supply = <&adc_vref>;  vcc-supply = <&adc_vref>;
 +
 +             interrupts = <25 IRQ_TYPE_EDGE_RISING>;          
 +             interrupt-parent = <&gpio>;                      
 +                                                                                   
 +             pwms = <&pwm 0 100>;                             
 +             pwm-names = "pwm-trigger";
  };  };
 </code> </code>
Line 95: Line 106:
   * reg: The chipselect number used for the device   * reg: The chipselect number used for the device
   * vcc-supply: Phandle to the fixed regulator   * vcc-supply: Phandle to the fixed regulator
 +  * interrupts: the interrupt used for buffer sampling
 +  * pwms: pwm pin used as the interrupt source
  
 <code> <code>
Line 113: Line 126:
      reg = <0xe>;      reg = <0xe>;
      vcc-supply = <&adc_vref>;      vcc-supply = <&adc_vref>;
 +
 +                 interrupts = <25 IRQ_TYPE_EDGE_RISING>;          
 +                 interrupt-parent = <&gpio>;                      
 +                                                                                   
 +                 pwms = <&pwm 0 100>;                             
 +                 pwm-names = "pwm-trigger";
  };  };
 </code> </code>
Line 127: Line 146:
  
 root:/sys/bus/iio/devices/iio:device0> **ls -l** root:/sys/bus/iio/devices/iio:device0> **ls -l**
--r--r--r-- 1 root root 4096 Nov 11 12:03 dev +drwxr-xr-x 2 root root    0 Jul 31 15:17 buffer 
--r--r--r-- 1 root root 4096 Nov 11 12:03 name +-r--r--r-- 1 root root 4096 Jul 31 15:17 dev 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage0_powerdown +-r--r--r-- 1 root root 4096 Jul 31 15:17 name 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage0_powerdown_mode +lrwxrwxrwx 1 root root    0 Jul 31 15:17 of_node -> ../../../../../../../../firmware/devicetree/base/soc/spi@7e204000/ad5679r@0 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage0_raw +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage0_powerdown 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage1_powerdown +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage0_powerdown_mode 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage1_powerdown_mode +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage0_raw 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage1_raw +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage10_powerdown 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage2_powerdown +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage10_powerdown_mode 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage2_powerdown_mode +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage10_raw 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage2_raw +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage11_powerdown 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage3_powerdown +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage11_powerdown_mode 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage3_powerdown_mode +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage11_raw 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage3_raw +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage12_powerdown 
--r--r--r-- 1 root root 4096 Nov 11 12:03 out_voltage_powerdown_mode_available +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage12_powerdown_mode 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 out_voltage_scale +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage12_raw 
-drwxr-xr-x 2 root root    0 Nov 11 12:03 power +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage13_powerdown 
-lrwxrwxrwx 1 root root    0 Nov 11 12:03 subsystem -> ../../../../../../../bus/iio +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage13_powerdown_mode 
--rw-r--r-- 1 root root 4096 Nov 11 12:03 uevent+-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage13_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage14_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage14_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage14_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage15_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage15_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage15_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage1_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage1_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage1_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage2_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage2_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage2_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage3_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage3_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage3_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage4_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage4_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage4_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage5_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage5_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage5_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage6_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage6_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage6_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage7_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage7_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage7_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage8_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage8_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage8_raw 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage9_powerdown 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage9_powerdown_mode 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage9_raw 
 +-r--r--r-- 1 root root 4096 Jul 31 15:17 out_voltage_powerdown_mode_available 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage_sampling_frequency 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage_scale 
 +drwxr-xr-x 2 root root    0 Jul 31 15:17 power 
 +drwxr-xr-x 2 root root    0 Jul 31 15:17 scan_elements 
 +lrwxrwxrwx 1 root root    0 Jul 31 15:17 subsystem -> ../../../../../../../../bus/iio 
 +drwxr-xr-x 2 root root    0 Jul 31 15:17 trigger 
 +-rw-r--r-- 1 root root 4096 Jul 31 15:17 uevent
 </xterm></WRAP> </xterm></WRAP>
  
Line 238: Line 298:
 0 0
 </xterm></WRAP> </xterm></WRAP>
 +
 +====== Buffer Support ======
 +**Description:**\\
 +The nanoDAC family of devices has buffer support for changing the output of the DAC channels. To achieve this a PWM signal is used as the device trigger to output data. Using a sampling frequency attribute the period of the PWM signal can be changed. The sampling frequency is in Hz.
 +
 +<note important>In order to use this functionality the **interrupt** pin must be tied to the **PWM** generation pin</note>
 +
 +<WRAP box bggreen><wrap info>This specifies any shell prompt running on the target</wrap>
 +<xterm>
 +root@analog:/sys/bus/iio/devices/iio:device0 $ cat out_voltage_sampling_frequency 
 +1000
 +root@analog:/sys/bus/iio/devices/iio:device0# echo 2000 > out_voltage_sampling_frequency
 +root@analog:/sys/bus/iio/devices/iio:device0# cat out_voltage_sampling_frequency
 +2000
 +</xterm></WRAP>
 +
 +== Enable buffered channels ==
 +**Description:**\\
 +The user has to enable on what channels to output the buffer samples. The samples are interleaved in the following in the order of the enabled channels.
 +
 +**Example:**\\
 +<note tip>**sample_ch0|sample_ch1|sample_ch2**</note>
 +If only channel 1 is enabled the buffer samples will have the following configuration:
 +<note tip>**sample_ch1|sample_ch1|sample_ch1**</note>
 +
 +<WRAP box bggreen><wrap info>This specifies any shell prompt running on the target</wrap>
 +<xterm>
 +root@analog:/sys/bus/iio/devices/iio:device0# cd scan_elements/
 +root@analog:/sys/bus/iio/devices/iio:device0/scan_elements# ls
 +out_voltage0_en      out_voltage10_type   out_voltage12_index  out_voltage14_en     out_voltage15_type out_voltage2_index  out_voltage4_en out_voltage5_type   out_voltage7_index out_voltage9_en
 +out_voltage0_index   out_voltage11_en   out_voltage12_type   out_voltage14_index  out_voltage1_en out_voltage2_type   out_voltage4_index out_voltage6_en     out_voltage7_type out_voltage9_index
 +out_voltage0_type    out_voltage11_index  out_voltage13_en     out_voltage14_type   out_voltage1_index out_voltage3_en     out_voltage4_type out_voltage6_index  out_voltage8_en out_voltage9_type
 +out_voltage10_en     out_voltage11_type   out_voltage13_index  out_voltage15_en     out_voltage1_type out_voltage3_index  out_voltage5_en out_voltage6_type   out_voltage8_index
 +out_voltage10_index  out_voltage12_en   out_voltage13_type   out_voltage15_index  out_voltage2_en out_voltage3_type   out_voltage5_index out_voltage7_en     out_voltage8_type
 +root@analog:/sys/bus/iio/devices/iio:device0/scan_elements# echo 1 > out_voltage0_en
 +
 +root@analog:/sys/bus/iio/devices/iio:device0/scan_elements# cd ../buffer/
 +root@analog:/sys/bus/iio/devices/iio:device0/buffer# ls
 +data_available enable length watermark
 +root@analog:/sys/bus/iio/devices/iio:device0/buffer# echo 1 > enable
 +</xterm></WRAP>
 +
 +**Sending a buffer sample example:**\\
 +<WRAP box bggreen><wrap info>This specifies any shell prompt running on the target</wrap>
 +<xterm>
 +root@analog:/sys/bus/iio/devices/iio:device0/buffer# echo -n -e '\x22\x33' > /dev/iio\:device0
 +</xterm></WRAP>
 +
  
  
resources/tools-software/linux-drivers/iio-dac/ad5676.1547123863.txt.gz · Last modified: 10 Jan 2019 13:37 by Mircea Caprioru