I thought that I was using the spidev_test from GitHub ( linux/tools/spi/spidev_test.c at master · torvalds/linux · GitHub) but in fact it was slightly modified. The bottom line, I downloaded the fresh spidev_test.c from GitHub and it was working, when I specified ‘-H’ and sent exactly 32 bytes from the master side. So,
Slave:
./spidev_test_torvalds -D /dev/spidev1.0 -s8000000 -H -o results.bin
Master:
./spidev_test_nvidia -D /dev/spidev0.0 -s8000000 -g32 -b8 -H -f pattern.txt -n1 -zzz -t
Must be this one:
https://forums.developer.nvidia.com/uploads/short-url/orCHnP8AnFmCR2rxDDtmZOegMwi.txt
From this post: Jetson Nano trouble using SPI - #12 by jvachteren
Here is using the “max transfer size” (I send 32 bytes from the master):
agostrer@nvidia-alex:~/spi$ ./spidev_test_nvidia -D /dev/spidev1.0 -s8000000 -V64000 -b8 -H -n1 -zzz -r
Disabling transmit
using device: /dev/spidev1.0
setting spi mode for read,write
setting spi bpw
setting max speed for rd/wr
spi mode: 1
bits per word: 8 bytes per word: 1
max speed: 8000000 Hz (8000 KHz)
no. runs: 4096
Using seed:0x67ca16bc
loop count = 0
transfer ioctl error: -1
loop count = 1
transfer ioctl error: -1
loop count = 2
transfer ioctl error: -1
loop count = 3
transfer ioctl error: -1
loop count = 4
transfer ioctl error: -1
loop count = 5
transfer ioctl error: -1
loop count = 6
The slave prints ioctl error for each master transmit. Also, I see an error message in dmesg for each transmit:
[ 5403.340110] spi_master spi1: transferred[0] != requested[7]
[ 5403.340134] spi_master spi1: CMD[13f01027]: Sl M1 CS0 [HHHH] MSB MSb Rx Pa 8b TRANS[00ff0000]:BSY I:255 B:0
FIFO[01400004]:RxF:2 TxE:64 Err[] RxSTA[] TxSTA[E]DMA[00000000]: RxTr:0 TxTr:0 B:6
[ 5403.340175] spi_master spi1: cpu-xfer-err [status:01400004]
[ 5403.340191] spi_master spi1: CMD[13f01027]: Sl M1 CS0 [HHHH] MSB MSb Rx Pa 8b TRANS[00ff0000]:BSY I:255 B:0
FIFO[01400004]:RxF:2 TxE:64 Err[] RxSTA[] TxSTA[E]DMA[00000000]: RxTr:0 TxTr:0 B:6
[ 5403.340256] spi_master spi1: failed to transfer one message from queue