Wiki

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
resources:fpga:xilinx:pmod:ad5933 [30 Sep 2013 15:49] – text Alexandru.Tofanresources:fpga:xilinx:pmod:ad5933 [22 Oct 2013 13:33] – adding linux (in progress) Alexandru.Tofan
Line 129: Line 129:
 </WRAP> </WRAP>
  
 +====== Linux Device Driver ======
 +
 +Connect PmodIA to the JC1 connector of the ZedBoard (upper row of pins).
 +
 +===== Preparing the SD Card =====
 +
 +In order to prepare the SD Card for booting Linux on the ZedBoard:
 +    * Download the device tree: [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodIA/dts|PmodIA Linux devicetree]]
 +    * Follow the instructions on the following wiki page, but use the device tree downloaded on the previous step
 +        * [[http://wiki.analog.com/resources/tools-software/linux-drivers/platforms/zynq?s=adv7511&s=linux|Linux with HDMI video output on the ZED and ZC702]].
 +
 +Make sure you have an HDMI monitor connected to the ZedBoard, plug in the SD Card and power on the board.
 +If everything is correct, the system should boot up. If you don't have an HDMI monitor, connect to the board via UART, Baud Rate 115200.
 +
 +There are 2 ways to test the driver.
 +    * Using the terminal window
 +    * Using the ADI IIO Oscilloscope 
 +
 +===== Using the terminal window =====
 +
 +Open a new terminal window by pressing **Ctrl+Alt+T**.
 +
 +Navigate to the location of the device and identify it using the following commands:
 +<code>
 +cd /sys/bus/iio/devices/
 +ls
 +iio:device0 iio:device1
 +cd iio\:device0
 +cat name
 +ad5933
 +</code>
 +
 +If the **cat name** command doesn't return **ad5933**, then change the number of the iio:device, and check again.
 +<code>
 +cd ..
 +cd iio\:device1
 +cat name
 +</code>
 +
 +To see the list of options that the AD5933 driver provides, type:
 +<code>
 +ls
 +buffer                       out_voltage0_freq_increment   power
 +dev                          out_voltage0_freq_points      scan_elements
 +in_temp0_input               out_voltage0_freq_start       subsystem
 +in_voltage0_scale            out_voltage0_scale            uevent
 +in_voltage0_scale_available  out_voltage0_scale_available
 +name                         out_voltage0_settling_cycles
 +</code>
 +
 +===Set sweep start frequency===
 +
 +**Description**: Frequency sweep start frequency in Hz. 
 +
 +<code>
 +echo 15000 > out_voltage0_freq_start
 +cat out_voltage0_freq_start
 +14999
 +</code>
 +
 +===Set frequency increment===
 +
 +**Description**: Frequency increment in Hz (step size) between consecutive frequency points along the sweep. 
 +
 +<code>
 +echo 200 > out_voltage0_freq_increment
 +</code>
 +
 +===Set number of frequency points===
 +
 +**Description**: Number of frequency points (steps) in the frequency sweep. This value, in conjunction with the outY_freq_start and the outY_freq_increment, determines the frequency sweep range for the sweep operation. 
 +
 +<code>
 +echo 100 > out_voltage0_freq_points
 +cat out_voltage0_freq_points
 +100
 +</code>
 +
 +===Set number of settling time cycles===
 +
 +**Description**: Number of output excitation cycles (settling time cycles) that are allowed to pass through the unknown impedance, after each frequency increment, and before the ADC is triggered to perform a conversion sequence of the response signal. 
 +
 +<code>
 +echo 15 > out_voltage0_settling_cycles
 +cat out_voltage0_settling_cycles
 +15
 +</code>
 +
 +===Show available output ranges===
 +
 +**Description**: List available output scales/ranges in millivolt.
 +
 +<code>
 +cat out_voltage0_scale_available
 +1980 970 383 198
 +</code>
 +
 +===Set output range===
 +
 +**Description**: Sets output scale/range in millivolt. 
 +
 +<code>
 +echo 1980 > out_voltage0_scale
 +cat out_voltage0_scale
 +1980
 +</code>
 +
 +===Show available input scales===
 +
 +**Description**: List available input scales. Programmable gain amplifier (PGA) options. 
 +
 +<code>
 +cat in_voltage0_scale_available
 +1 0.2
 +</code>
 +
 +===Set input scale===
 +
 +**Description**: Sets input scale. Controls programmable gain amplifier (PGA). 
 +
 +<code>
 +echo 0.2 > in_voltage0_scale
 +cat in_voltage0_scale
 +0.2
 +</code>
 +
 +===Show internal temperature===
 +
 +**Description**: Shows temperature in milli degrees Celsius.
 +
 +The on-chip temperature sensor allows an accurate measurement of the ambient device temperature. The measurement range of the sensor is −40°C to +125°C. 
 +
 +<code>
 +cat in_temp0_input
 +25062
 +</code>
 +
 +===Buffer Management===
 +
 + The Industrial I/O subsystem provides support for various ring buffer based data acquisition methods. Apart from device specific hardware buffer support, the user can chose between two different software ring buffer implementations. One is the IIO lock free software ring, and the other is based on Linux kfifo. Devices with buffer support feature an additional sub-folder in the /sys/bus/iio/devices/deviceX/ folder hierarchy. Called deviceX:bufferY, where Y defaults to 0, for devices with a single buffer.
 +
 +Every buffer implementation features a set of files: 
 +
 +<code>
 +cd buffer
 +ls
 +enable  length
 +</code>
 +
 +**length**
 +Get/set the number of sample sets that may be held by the buffer.
 +
 +**enable**
 +Enables/disables the buffer. This file should be written last, after length and selection of scan elements. 
 +
 +<code>
 +cd scan_elements
 +ls
 +in_voltage0_imag_raw_en     in_voltage0_real_raw_en
 +in_voltage0_imag_raw_index  in_voltage0_real_raw_index
 +in_voltage0_imag_raw_type   in_voltage0_real_raw_type
 +</code>
 +
 +**scan_elements**
 +The scan_elements directory contains interfaces for elements that will be captured for a single triggered sample set in the buffer. 
 +
 +<code>
 +grep "" *
 +in_voltage0_imag_raw_en:1
 +in_voltage0_imag_raw_index:1
 +in_voltage0_imag_raw_type:le:s16/16>>0
 +in_voltage0_real_raw_en:1
 +in_voltage0_real_raw_index:0
 +in_voltage0_real_raw_type:le:s16/16>>0
 +</code>
 +
 +====Buffer Example====
 +
 +<code>
 +echo 15000 > out_voltage0_freq_start
 +echo 200 > out_voltage0_freq_increment
 +echo 100 > out_voltage0_freq_points
 +echo 512 > buffer/length
 +echo 1 > buffer/enable
 +</code>
 +
 +==== Data interpretation ====
 +
 +^ index ^ datum ^ type ^
 +| 0 | **Real Sample** f0 | signed short 16-bit |
 +| 1 | **//Imag Sample//** f0 | signed short 16-bit |
 +| [fn * 2] | **Real Sample** fn | signed short 16-bit |
 +| [fn * 2] + 1 | **//Imag Sample//** fn | signed short 16-bit |
 +
 +
 +Z =  **in_voltage0_real_raw** + i * **in_voltage0_imag_raw**
 +
 +The commands written above can also be used if not using an HDMI monitor and a wireless keyboard, by using a serial terminal, and typing the commands after the system boot-up is complete.
  
 ===== More information ===== ===== More information =====
   * [[ez>community/fpga|ask questions about the FPGA reference design]]   * [[ez>community/fpga|ask questions about the FPGA reference design]]
   * Example questions: {{rss>http://ez.analog.com/community/feeds/allcontent/atom?community=2061 5 author 1d}}   * Example questions: {{rss>http://ez.analog.com/community/feeds/allcontent/atom?community=2061 5 author 1d}}
resources/fpga/xilinx/pmod/ad5933.txt · Last modified: 09 Jan 2021 00:49 by Robin Getz