资料介绍
Table of Contents
nanoDAC+ IIO DAC Linux Driver
Supported Devices
This driver supports the
Reference Circuits
Evaluation Boards
Description
This is a Linux industrial I/O (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 IIO for more information.
Source Code
Status
Files
Devicetree
Required devicetree properties for spi devices:
- compatible: Needs to be the name of the device. E.g. “ad5676”
- reg: The chipselect number used for the device
- spi-max-frequency: Maximum SPI clock frequency.
- spi-cpol: Needs to be set for the correct SPI mode
- vcc-supply: Phandle to the fixed regulator
- interrupts: the interrupt used for buffer sampling
- pwms: pwm pin used as the interrupt source
adc_vref: fixedregulator@0 { compatible = "regulator-fixed"; regulator-name = "fixed-supply"; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; regulator-boot-on; }; #address-cells = <1>; #size-cells = <0>; status = "okay"; ad5676@0 { compatible = "ad5676"; reg = <0>; spi-max-frequency = <1000000>; spi-cpha; vcc-supply = <&adc_vref>; interrupts = <25 IRQ_TYPE_EDGE_RISING>; interrupt-parent = <&gpio>; pwms = <&pwm 0 100>; pwm-names = "pwm-trigger"; };
Required devicetree properties for i2c devices:
- compatible: Needs to be the name of the device. E.g. “AD5696”
- reg: The chipselect number used for the device
- vcc-supply: Phandle to the fixed regulator
- interrupts: the interrupt used for buffer sampling
- pwms: pwm pin used as the interrupt source
adc_vref: fixedregulator@0 { compatible = "regulator-fixed"; regulator-name = "fixed-supply"; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; regulator-boot-on; }; #address-cells = <1>; #size-cells = <0>; status = "okay"; ad5696@e { compatible = "ad5696"; reg = <0xe>; vcc-supply = <&adc_vref>; interrupts = <25 IRQ_TYPE_EDGE_RISING>; interrupt-parent = <&gpio>; pwms = <&pwm 0 100>; pwm-names = "pwm-trigger"; };
Driver testing
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 drwxr-xr-x 2 root root 0 Jul 31 15:17 buffer -r--r--r-- 1 root root 4096 Jul 31 15:17 dev -r--r--r-- 1 root root 4096 Jul 31 15:17 name 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 Jul 31 15:17 out_voltage0_powerdown -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage0_powerdown_mode -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage0_raw -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage10_powerdown -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage10_powerdown_mode -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage10_raw -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage11_powerdown -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage11_powerdown_mode -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage11_raw -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage12_powerdown -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage12_powerdown_mode -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage12_raw -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage13_powerdown -rw-r--r-- 1 root root 4096 Jul 31 15:17 out_voltage13_powerdown_mode -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
Show device name
This specifies any shell prompt running on the target
root:/sys/bus/iio/devices/iio:device0> cat name ad5696
Show scale
Description:
scale to be applied to in_voltage0_raw in order to obtain the measured voltage in millivolts.
This specifies any shell prompt running on the target
root:/sys/bus/iio/devices/iio:device0> cat out_voltage_scale 0.038146972
Set channel Y output voltage
Description:
/sys/bus/iio/devices/deviceX/out_voltageY_raw
Raw (unscaled, no bias etc.) output voltage for channel Y.
This specifies any shell prompt running on the target
root:/sys/bus/iio/devices/iio:device0> echo 10000 > out_voltage0_raw
U = out_voltage0_raw * out_voltage_scale = 10000 * 0.038140 = 381.40 mV
List available power down modes
/sys/bus/iio/devices/deviceX/out_powerdown_mode_available
Description:
Lists all available output power down modes.
This specifies any shell prompt running on the target
root:/sys/bus/iio/devices/iio:device0> cat out_voltage_powerdown_mode_available 1kohm_to_gnd 100kohm_to_gnd three_state
Set channel Y power down mode
/sys/bus/iio/devices/deviceX/out_voltageY_powerdown_mode
Description:
Specifies the output power down mode.
DAC output stage is disconnected from the amplifier and
1kohm_to_gnd | connected to ground via an 1kOhm resistor |
100kohm_to_gnd | connected to ground via an 100kOhm resistor |
three_state | left floating |
For a list of available output power down options read out_voltageX_powerdown_mode_available.
This specifies any shell prompt running on the target
root:/sys/bus/iio/devices/iio:device0> echo three_state > out_voltage0_powerdown_mode root:/sys/bus/iio/devices/iio:device0> cat out_voltage0_powerdown_mode three_state
Enable power down mode on output Y
/sys/bus/iio/devices/deviceX/out_voltageY_powerdown
Description:
Writing 1 causes output Y to enter the power down mode specified
by the corresponding out_voltageY_powerdown_mode. Clearing returns to
normal operation. Y may be suppressed if all outputs are
controlled together.
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
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.
This specifies any shell prompt running on the target
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
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:
If only channel 1 is enabled the buffer samples will have the following configuration:
This specifies any shell prompt running on the target
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
Sending a buffer sample example:
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0/buffer# echo -n -e '/x22/x33' > /dev/iio/:device0
More Information
- IIO mailing list: linux [dash] iio [at] vger [dot] kernel [dot] org
- AD5449 IIO DAC Linux驱动程序
- AD5380 IIO多通道Linux驱动程序DAC
- AD7291 IIO ADC Linux驱动程序
- AD5421 IIO DAC Linux驱动程序
- AD5360 IIO多通道Linux驱动程序DAC
- AD7303 IIO DAC Linux驱动程序
- AD5446 IIO DAC Linux驱动程序
- ADIS16080 IIO偏航率陀螺仪Linux驱动程序
- IIO单通道串行ADC Linux驱动程序
- AD9834 IIO直接数字合成Linux驱动程序
- AD9832 IIO直接数字合成Linux驱动程序
- AD7998 IIO ADC Linux驱动程序
- AD7887 IIO ADC Linux驱动程序
- AD5933 IIO阻抗转换器和网络分析仪Linux驱动程序
- AD5677R NanDAC+无操作系统驱动程序
- 怎么编写Framebuffer驱动程序 403次阅读
- 自动删除SDK/Vitis下驱动程序的旧版本的Linux脚本 558次阅读
- 如何写一个Linux设备驱动程序 4314次阅读
- 米尔科技LINUX设备驱动程序教程 1966次阅读
- 嵌入式Linux内核的驱动程序开发是怎样的 1415次阅读
- 浅谈电脑驱动程序的工作原理 详解电脑驱动程序意义 2.9w次阅读
- 基于嵌入式Linux内核的系统设备驱动程序开发设计 1113次阅读
- 基于Linux2.6.30开发DS18B20的驱动程序的类型和文件操作接口函数详解 1377次阅读
- 可动态安装的Linux设备驱动程序 957次阅读
- 如何用嵌入式Linux系统编写键盘驱动 1312次阅读
- 8255A驱动程序 3193次阅读
- 8155驱动程序 3057次阅读
- 深入了解USB驱动之总线驱动程序 8685次阅读
- Xilinx设备的驱动程序 7967次阅读
- PCI驱动程序开发实例 6702次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1491次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 95次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 11次下载 | 免费
- 6100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 7基于单片机和 SG3525的程控开关电源设计
- 0.23 MB | 4次下载 | 免费
- 8基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537793次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多