zynq中linux环境xadc的使用

📅 2026/7/14 15:23:07
zynq中linux环境xadc的使用
参考zynq纯PL读取XADC.csdnzynq在PS测用XADC读取外部引脚电压.csdnPL无只用 Linux 读 XADC设备树启通道即可不用加 vauxp0/vauxn0 顶层端口约束。 用 PL/XADC Wizard 接 VAUX才需要在 Vivado/XDC 里约束这些模拟端口。 PL 设计里把 XADC 外部模拟输入作为顶层端口使用 时才加这种约束 set_property PACKAGE_PIN C20[get_ports vauxp0]set_property IOSTANDARD LVCMOS33[get_ports vauxp0]set_property ANALOGtrue[get_ports vauxp0]set_property PACKAGE_PIN B20[get_ports vauxn0]set_property IOSTANDARD LVCMOS33[get_ports vauxn0]set_property ANALOGtrue[get_ports vauxn0]设备树#include dt-bindings/gpio/gpio.h#include dt-bindings/input/input.h#include dt-bindings/media/xilinx-vip.h#include dt-bindings/phy/phy.h/{modelant_boot Board 321;compatiblexlnx,zynq-zc702,xlnx,zynq-7000;chosen{bootargsconsolettyPS0,115200 earlyconcdns,mmio,0xe0000000,115200n8 keep_bootcon earlyprintk root/dev/mmcblk0p2 rw rootwait;stdout-pathserial0:115200n8;};leds{compatiblegpio-leds;gpio-led1{labelled2;gpiosgpio00GPIO_ACTIVE_HIGH;default-stateon;};gpio-led5{labelps_led0;gpiosgpio07GPIO_ACTIVE_HIGH;default-stateon;};gpio-led6{labelps_led1;gpiosgpio08GPIO_ACTIVE_HIGH;linux,default-triggertimer;};};ming_axi_dma0: ming-axi-dma{compatibleming,axi-dma;dmasaxi_dma_00;dma-namesrx;dma-buffer-size0x00100000;slot0-ctrl-base0x43c00000;statusokay;};};uart0{u-boot,dm-pre-reloc;port-number0;statusokay;};sdhci0{u-boot,dm-pre-reloc;statusokay;};qspi{u-boot,dm-pre-reloc;flash0{compatiblewinbond,w25q32,jedec,spi-nor;reg0x0;spi-max-frequency50000000;#address-cells 1;#size-cells 1;partition0{labelboot;reg0x00000000 0x00100000;};partition100000{labelbootenv;reg0x00100000 0x00010000;};partition110000{labelspace;reg0x00110000 0x002F0000;};};};gem0{local-mac-address[00 0a3500 8b87];phy-handleethernet_phy;ethernet_phy: ethernet-phy7{reg0x7;device_typeethernet-phy;};};axi_dma_0{statusokay;#dma-cells 1;};adc{statusokay;xlnx,channels{#address-cells 1;#size-cells 0;channel0{reg0;/* VP/VN */};channel1{reg1;/* VAUX0 */};channel2{reg2;/* VAUX1 */};channel3{reg3;/* VAUX2 */};channel4{reg4;/* VAUX3 */};channel5{reg5;/* VAUX4 */};channel6{reg6;/* VAUX5 */};channel7{reg7;/* VAUX6 */};channel8{reg8;/* VAUX7 */};channel9{reg9;/* VAUX8 */};channel10{reg10;/* VAUX9 */};channel11{reg11;/* VAUX10 */};channel12{reg12;/* VAUX11 */};channel13{reg13;/* VAUX12 */};channel14{reg14;/* VAUX13 */};channel15{reg15;/* VAUX14 */};channel16{reg16;/* VAUX15 */};};};测试脚本read_vaux.shXADC输入为 0V 到 1.0V最大采样率 1 MSPS, 12位#!/bin/shIIO/sys/bus/iio/devices/iio:device0forrawfin$IIO/in_voltage*_vpvn_raw$IIO/in_voltage*_vaux*_raw;do[-e$rawf]||continuebase${rawf%_raw}name$(basename$base)raw$(cat${base}_raw)scale$(cat${base}_scale)awk-vname$name-vraw$raw-vscale$scale BEGIN { mv raw * scale printf %-24s raw%-5d %10.3f mV %8.6f V\n, name, raw, mv, mv / 1000 }done测试rootant:~# ./read_vaux.shin_voltage8_vpvnraw7718.799mV0.018799V in_voltage10_vaux1raw10525.635mV0.025635V in_voltage11_vaux2raw14134.424mV0.034424V in_voltage12_vaux3raw17442.480mV0.042480V in_voltage13_vaux4raw20349.561mV0.049561V in_voltage14_vaux5raw23557.373mV0.057373V in_voltage15_vaux6raw27567.139mV0.067139V in_voltage16_vaux7raw31777.393mV0.077393V in_voltage17_vaux8raw31276.172mV0.076172V in_voltage18_vaux9raw34383.740mV0.083740V in_voltage19_vaux10raw34684.473mV0.084473V in_voltage20_vaux11raw35085.449mV0.085449V in_voltage21_vaux12raw35386.182mV0.086182V in_voltage22_vaux13raw35185.693mV0.085693V in_voltage23_vaux14raw32479.102mV0.079102V in_voltage24_vaux15raw35486.426mV0.086426V in_voltage9_vaux0raw215.127mV0.005127V