電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>類型>參考設(shè)計>AD5677R NanDAC+IIO Linux驅(qū)動程序

AD5677R NanDAC+IIO Linux驅(qū)動程序

2021-03-23 | pdf | 85.13KB | 次下載 | 3積分

資料介紹

This version (20 Nov 2020 10:33) was approved by Alexandru Ardelean.The Previously approved version (20 Nov 2020 10:30) is available.Diff

nanoDAC+ IIO DAC Linux Driver

Supported Devices

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

Source Mainlined?
git Yes

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.

In order to use this functionality the interrupt pin must be tied to the PWM generation pin

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:

sample_ch0|sample_ch1|sample_ch2

If only channel 1 is enabled the buffer samples will have the following configuration:

sample_ch1|sample_ch1|sample_ch1

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

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1491次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關(guān)電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機和 SG3525的程控開關(guān)電源設(shè)計
  14. 0.23 MB  |  4次下載  |  免費
  15. 8基于AT89C2051/4051單片機編程器的實驗
  16. 0.11 MB  |  4次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業(yè)版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應(yīng)用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關(guān)電源設(shè)計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537793次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費