Add shell script to configure ADC via SPI
This commit is contained in:
parent
9a9163b7f0
commit
75833de0a3
|
@ -0,0 +1,150 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Configure LTC2145 ADC via SPI.
|
||||
#
|
||||
# This only works on a 4-input Red Pitaya.
|
||||
#
|
||||
|
||||
# Run spi-pipe with the correct parameters.
|
||||
run_spi_pipe() {
|
||||
spi-pipe -d "$1" -m 0 -s 1000000 -l 0 -B 8 -b 2 -n 1 >/dev/null
|
||||
}
|
||||
|
||||
# Initialize both ADCs.
|
||||
adc_init() {
|
||||
|
||||
force=
|
||||
dcs=0
|
||||
|
||||
shift
|
||||
while [ -n "$1" ]; do
|
||||
case "$1" in
|
||||
--force)
|
||||
force=1
|
||||
;;
|
||||
--dcs)
|
||||
dcs=1
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unknown option '$1'" >&2
|
||||
exit 1
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "$force" ]; then
|
||||
echo "ERROR: Not initializing ADC without --force option." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for spidev in /dev/spidev0.0 /dev/spidev0.1 ; do
|
||||
|
||||
echo "Initializing ADC via $spidev"
|
||||
|
||||
# Reset register (address = 0x00)
|
||||
#
|
||||
# bit 7 = RESET
|
||||
#
|
||||
printf '\000\200' | run_spi_pipe $spidev
|
||||
|
||||
# Timing register (address = 0x02)
|
||||
#
|
||||
# bit 0 = DCS
|
||||
# bits 2:1 = CLKPHASE
|
||||
# bit 3 = CLKINV
|
||||
#
|
||||
printf '\002\20'"$dcs" | run_spi_pipe $spidev
|
||||
|
||||
# Output mode register (address = 0x03)
|
||||
#
|
||||
# bits 1:0 = OUTMODE (2 = double data rate CMOS output mode)
|
||||
# bit 2 = OUTOFF
|
||||
# bit 3 = TERMON
|
||||
# bits 6:4 = ILVDS
|
||||
#
|
||||
printf '\003\002' | run_spi_pipe $spidev
|
||||
|
||||
done
|
||||
}
|
||||
|
||||
# Write data format register.
|
||||
adc_format() {
|
||||
|
||||
# Data format register (address = 0x04)
|
||||
#
|
||||
# bit 0 = TWOSCOMP
|
||||
# bit 1 = RAND
|
||||
# bit 2 = ABP
|
||||
# bits 5:3 = OUTTEST
|
||||
|
||||
d1=0 # octal digit 1 = OUTTEST
|
||||
d0=0 # octal digit 0 = RAND*2
|
||||
|
||||
shift
|
||||
while [ -n "$1" ]; do
|
||||
case "$1" in
|
||||
--testzero)
|
||||
d1=1
|
||||
;;
|
||||
--testone)
|
||||
d1=3
|
||||
;;
|
||||
--testchecker)
|
||||
d1=5
|
||||
;;
|
||||
--testalter)
|
||||
d1=7
|
||||
;;
|
||||
--rand)
|
||||
d0=2
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unknown option '$1'" >&2
|
||||
exit 1
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
for spidev in /dev/spidev0.0 /dev/spidev0.1 ; do
|
||||
printf '\004\0'"${d1}${d0}" | run_spi_pipe $spidev
|
||||
done
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
init)
|
||||
adc_init "$@"
|
||||
;;
|
||||
format)
|
||||
adc_format "$@"
|
||||
;;
|
||||
*)
|
||||
script="${0##*/}"
|
||||
cat <<EOF
|
||||
Usage: $script {init|format}
|
||||
|
||||
$script init {options}
|
||||
Reset ADCs and initialize timing and output mode.
|
||||
This must NOT be done while the FPGA is active.
|
||||
|
||||
options:
|
||||
--force Required option to override warning.
|
||||
--dcs Enable clock duty cycle stabilizer.
|
||||
|
||||
$script format {options}
|
||||
Configure data format.
|
||||
By default, disables test patterns and disables output randomizer.
|
||||
|
||||
options:
|
||||
--testzero Enable all-zero test pattern.
|
||||
--testone Enable all-one test pattern.
|
||||
--testchecker Enable checkerboard test pattern.
|
||||
--testalter Enable alternating test pattern.
|
||||
--rand Enable output randomizer mode.
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit $?
|
||||
|
|
@ -24,15 +24,16 @@ case "$1" in
|
|||
cal_save
|
||||
;;
|
||||
*)
|
||||
script="${0##*/}"
|
||||
cat <<EOF
|
||||
Usage: $0 {show|save}
|
||||
Usage: $script {show|save}
|
||||
|
||||
Manage analog channel calibration.
|
||||
|
||||
$0 show
|
||||
$script show
|
||||
Display calibration.
|
||||
|
||||
$0 save
|
||||
$script save
|
||||
Copy a changed calibration file to the SD card.
|
||||
Before running this command, the changed calibration must be written to
|
||||
${CONFIG_DIR}/calibration.conf.new.
|
||||
|
|
|
@ -274,19 +274,20 @@ case "$1" in
|
|||
ipcfg_save
|
||||
;;
|
||||
*)
|
||||
script="${0##*/}"
|
||||
cat <<EOF
|
||||
Usage: $0 {init|show|config|save|restart}
|
||||
Usage: $script {init|show|config|save|restart}
|
||||
|
||||
Manage IP address configuration.
|
||||
|
||||
$0 init
|
||||
$script init
|
||||
Initialize IP address from saved configuration.
|
||||
This command is used during boot and should not be invoked manually.
|
||||
|
||||
$0 show
|
||||
$script show
|
||||
Display active and saved IP address configuration.
|
||||
|
||||
$0 config {options}
|
||||
$script config {options}
|
||||
Change active IP address configuration.
|
||||
The new configuration is not written to the SD card.
|
||||
|
||||
|
@ -297,7 +298,7 @@ Manage IP address configuration.
|
|||
--netmask n.n.n.n Specify netmask.
|
||||
--gateway n.n.n.n Specify gateway address, or "" to disable gateway.
|
||||
|
||||
$0 save {options}
|
||||
$script save {options}
|
||||
Change the saved IP address configuration on the SD card.
|
||||
Options are the same as for command 'config'.
|
||||
|
||||
|
|
Loading…
Reference in New Issue