This package contains some simple command line tools to help using Linux spidev devices.
Version 1.0.2
Query or set the SPI configuration (mode, speed, bits per word, etc.)
Send and receive data simultaneously to and from a SPI device.
The tools are released under the GPLv2 license. See LICENSE
file for details.
Christophe Blaess https://www.blaess.fr/christophe
There's two ways to install spi-tools
: using Autotools or using Cmake.
First, get the latest version on https://github.com/cpb-/spi-tools.git. Then enter the directory and execute:
$ autoreconf -fim
$ ./configure
$ make
Then you can run make install
(probably with sudo
) to install them and the man pages.
If you have to use a cross-compilation toolchain, add the --host
option to
the ./configure
command, as in ./configure --host=arm-linux
. This is the
prefix to be inserted before all the toolchain commands (giving for example
arm-linux-gcc
).
You can use make uninstall
(with sudo
) to remove the installed files.
-d --device=<dev>
use the given spi-dev character device.-q --query
print the current configuration.-m --mode=[0-3]
use the selected spi mode.-l --lsb={0,1}
LSB first (1) or MSB first (0).-b --bits=[7...]
bits per word.-s --speed=<int>
set the speed in Hz.-r --spirdy={0,1}
set the SPI_READY spi mode flag.-w --wait
block, keeping the file descriptor open.-h --help
help screen.-v --version
display the version number.
$ spi-config -d /dev/spidev0.0 -q
/dev/spidev0.0: mode=0, lsb=0, bits=8, speed=500000
$
$ spi-config -d /dev/spidev0.0 -s 10000000
$ spi-config -d /dev/spidev0.0 -q
/dev/spidev0.0: mode=0, lsb=0, bits=8, speed=10000000
$
Note: on some platforms, the speed is reset to a default value when the file descriptor is closed.
To avoid this, one can use the -w
option that keep the file descriptor open. For example:
$ spi-config -d /dev/spidev0.0 -s 10000000 -w &
$ PID=$!
And when you don't need the SPI device anymore:
$ kill $PID
-d --device=<dev>
use the given spi-dev character device.-m --mode=[0-3]
use the selected spi mode.-s --speed=<speed>
Maximum SPI clock rate (in Hz).-l --lsb={0,1}
LSB first (1) or MSB first (0).-B --bits=[7...]
bits per word.-r --spirdy={0,1}
set the SPI_READY spi mode flag.-b --blocksize=<int>
transfer block size in byte.-n --number=<int>
number of blocks to transfer.-h --help
help screen.-v --version
display the version number.
Sending data from command-1
to SPI link and receiving data from SPI link to command-2
$ command_1 | spi-pipe -d /dev/spidev0.0 | command_2
Note that command_1
, command_2
and spi-pipe
run simultaneously in three parallel processes.
$ command_1 | spi-pipe -d /dev/spidev0.0
$ spi-pipe -d /dev/spidev0.0 < /dev/zero | command_2
You can also use command_2 < /dev/spidev0.0
but with spi-pipe
you control what is sent to the device (always 0
in this case).
$ spi-pipe -d /dev/spidev0.0 -b 4 -n 40 < /dev/zero | command_2
You can use the shell printf
command to format binary data to send.
For example, to send the bytes sequence 0x01-0x82-0xF3 and see the reply, use:
$ printf '\x01\x82\xF3' | spi-pipe -d /dev/spidev0.0 | hexdump -C