Master-Slave Communication Between Two Jetson Nano over SPI

Hii @ShaneCCC ,

Output of loopback test :

root@b2qt-jetson-nano-emmc:~# ./spidev_test -D/dev/spidev1.0 -s18000000 -n10 -g30 -p4
transfer ioctl error: -1
transfer ioctl error: -1
transfer ioctl error: -1
transfer ioctl error: -1
transfer ioctl error: -1
transfer ioctl error: -1
transfer ioctl error: -1
transfer ioctl error: -1
transfer ioctl error: -1
transfer ioctl error: -1
/dev/spidev1.0: TEST FAILED !!!!! (status:-1)
root@b2qt-jetson-nano-emmc:~#

below is dmesg logs :

[Sep20 10:53] spidev spi1.0: setup 8 bpw, ~cpol, ~cpha, 33000000Hz
[  +0.000034] spidev spi1.0: setup mode 0, 8 bits/w, 33000000 Hz max --> 0
[  +0.000004] spidev spi1.0: spi mode 0
[  +0.000008] spidev spi1.0: setup 8 bpw, ~cpol, ~cpha, 33000000Hz
[  +0.000017] spidev spi1.0: setup mode 0, 8 bits/w, 33000000 Hz max --> 0
[  +0.000004] spidev spi1.0: 8 bits per word
[  +0.000008] spidev spi1.0: setup 8 bpw, ~cpol, ~cpha, 18000000Hz
[  +0.000014] spidev spi1.0: setup mode 0, 8 bits/w, 18000000 Hz max --> 0
[  +0.000067] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000005] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.008285] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007449] spi_master spi1: failed to transfer one message from queue
[  +0.008939] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000005] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.007806] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007507] spi_master spi1: failed to transfer one message from queue
[  +0.006790] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000018] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.007758] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007465] spi_master spi1: failed to transfer one message from queue
[  +0.006847] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000004] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.007752] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007530] spi_master spi1: failed to transfer one message from queue
[  +0.007663] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000050] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.008157] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007911] spi_master spi1: failed to transfer one message from queue
[  +0.007972] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000053] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.008068] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007471] spi_master spi1: failed to transfer one message from queue
[  +0.006593] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000004] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.007786] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007586] spi_master spi1: failed to transfer one message from queue
[  +0.006779] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000017] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.007721] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007547] spi_master spi1: failed to transfer one message from queue
[  +0.006635] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000011] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.007755] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007584] spi_master spi1: failed to transfer one message from queue
[  +0.006772] spi-tegra124-slave 7000d600.spi: RxTx len:30 bpw:8 0us 18000000Hz
[  +0.000017] spi-tegra124-slave 7000d600.spi: Cannot set requested clk freq 18000000
[  +0.007799] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.007472] spi_master spi1: failed to transfer one message from queue

Thank You.

Hii @ShaneCCC ,
what else can I try to make it working.

Thank You.

Could you check with below command.

./spidev_test -D /dev/spidev1.0 -g8 -zz

Hii @ShaneCCC ,

$./spidev_test -D /dev/spidev1.0 -g8 -zz
using device: /dev/spidev1.0
setting spi mode for read,write
setting spi bpw
setting max speed for rd/wr
spi mode: 0
bits per word: 8 bytes per word: 1
max speed: 10000000 Hz (10000 KHz)
no. runs: 1
Using seed:0x5f673610
loop count = 0 
using sequential pattern ....
transfer bytes [8]
0000: 00 01 02 03 04 05 06 07 
transfer ioctl error: -1
/dev/spidev1.0: TEST FAILED !!!!! (status:-1)

Thank you.

Your PINs configure looks like incorrect. You can try devmem2 to write it like my REG dump and run the spidev_test command to verify.

1 Like

Hii @ShaneCCC ,
I have edited pinmux but the result is same,

Pinmux settings

$ cat /sys/kernel/debug/tegra_pinctrl_reg | grep -i spi
Bank: 1 Reg: 0x70003050 Val: 0x0000e004 -> spi1_mosi_pc0
Bank: 1 Reg: 0x70003054 Val: 0x0000e044 -> spi1_miso_pc1
Bank: 1 Reg: 0x70003058 Val: 0x0000e004 -> spi1_sck_pc2
Bank: 1 Reg: 0x7000305c Val: 0x0000e009 -> spi1_cs0_pc3
Bank: 1 Reg: 0x70003060 Val: 0x0000e015 -> spi1_cs1_pc4
Bank: 1 Reg: 0x70003064 Val: 0x00006044 -> spi2_mosi_pb4
Bank: 1 Reg: 0x70003068 Val: 0x00006044 -> spi2_miso_pb5
Bank: 1 Reg: 0x7000306c Val: 0x00006044 -> spi2_sck_pb6
Bank: 1 Reg: 0x70003070 Val: 0x00006044 -> spi2_cs0_pb7
Bank: 1 Reg: 0x70003074 Val: 0x00006044 -> spi2_cs1_pdd0
Bank: 1 Reg: 0x70003078 Val: 0x0000e015 -> spi4_mosi_pc7
Bank: 1 Reg: 0x7000307c Val: 0x0000e015 -> spi4_miso_pd0
Bank: 1 Reg: 0x70003080 Val: 0x0000e015 -> spi4_sck_pc5
Bank: 1 Reg: 0x70003084 Val: 0x0000e015 -> spi4_cs0_pc6
Bank: 1 Reg: 0x70003088 Val: 0x00002040 -> qspi_sck_pee0
Bank: 1 Reg: 0x7000308c Val: 0x00002000 -> qspi_cs_n_pee1
Bank: 1 Reg: 0x70003090 Val: 0x00002040 -> qspi_io0_pee2
Bank: 1 Reg: 0x70003094 Val: 0x00002040 -> qspi_io1_pee3
Bank: 1 Reg: 0x70003098 Val: 0x00002040 -> qspi_io2_pee4
Bank: 1 Reg: 0x7000309c Val: 0x00002040 -> qspi_io3_pee5
Bank: 0 Reg: 0x70000b70 Val: 0x00000001 -> drive_qspi_comp_control
Bank: 0 Reg: 0x70000b78 Val: 0x00000001 -> drive_qspi_lpbk_control
Bank: 0 Reg: 0x70000a78 Val: 0x00808000 -> drive_qspi_comp

Loopback test on slave: -

./spidev_test -D /dev/spidev1.0 -g8 -zzz
using device: /dev/spidev1.0
setting spi mode for read,write
setting spi bpw
setting max speed for rd/wr
spi mode: 0
bits per word: 8 bytes per word: 1
max speed: 10000000 Hz (10000 KHz)
no. runs: 1
Using seed:0x5f67792e
loop count = 0 
using sequential pattern ....
transfer bytes [8]
0000: 00 01 02 03 04 05 06 07 
transfer ioctl error: -1
/dev/spidev1.0: TEST FAILED !!!!! (status:-1)
====== Transfer stats ====
Transmit:
       total: 18446744073709551615B (18014398509481983KiB 17592186044415MiB)
       total: 1P 
       ioerr: 8B (0KiB 0MiB)
       ioerr: 1P
 Rate:
  wire total: -1B/s (0KB/s)
       total: -1B/s (0KB/s)
  wire total: -1P/s
       total: -1P/s
Receive:
       total: 0B (0KiB 0MiB)
       total: 0P 
        good: 0B (0KiB 0MiB)
        good: 0P
       ioerr: 1P
     dataerr: 0P
 Rate:
        good: -1B/s (0KB/s)
        good: -1P/s
 packet drop: -1/10000

  Total time: 0.046195s

Kernel debug logs :

[ +21.272636] spidev spi1.0: setup 8 bpw, ~cpol, ~cpha, 33000000Hz
[  +0.000031] spidev spi1.0: setup mode 0, 8 bits/w, 33000000 Hz max --> 0
[  +0.000004] spidev spi1.0: spi mode 0
[  +0.000019] spidev spi1.0: setup 8 bpw, ~cpol, ~cpha, 33000000Hz
[  +0.000017] spidev spi1.0: setup mode 0, 8 bits/w, 33000000 Hz max --> 0
[  +0.000004] spidev spi1.0: 8 bits per word
[  +0.000016] spidev spi1.0: setup 8 bpw, ~cpol, ~cpha, 10000000Hz
[  +0.000016] spidev spi1.0: setup mode 0, 8 bits/w, 10000000 Hz max --> 0
[  +0.000132] spi-tegra124-slave 7000d600.spi: RxTx len:8 bpw:8 0us 10000000Hz
[  +0.000005] spi-tegra124-slave 7000d600.spi: Tx is not supported in mode 0
[  +0.017342] spi-tegra124-slave 7000d600.spi: spi can not start transfer, err -22
[  +0.014932] spi_master spi1: failed to transfer one message from queue

Thank you.

Did you short pin 37/22 for loopback test?

Hii @ShaneCCC ,
yes

Thank you.

Hii @ShaneCCC ,
Thank you for your support.
Loopback test does not work on slave, it gives error but the master slave communication worked fine but I just want to ask that

  1. Why only this pinmux(provided by you) setting is worked and not other ?

  2. Master and slave communicate with each other in transmit only(-t) and receive only(-r) mode, when use normal command(without -t/-r) slave does not wait for master, slave gives error & test fails. is there any command by using that we can test duplex communication on master and slave?

Thank You.

Hii @ShaneCCC ,
I have couple of questions,

  1. I have done the pinmux setting according to technical guide provided by NVIDIA for jetson nano, but spidev_test passes only when we set pinmux settings according to your pinmux, I dont understand why is that happens.
  2. How we can send our data like patternfile example
To transfer all bytes from user defined pattern file,
spidev_test -D/dev/spidev0.0 -s18000000 -f/path/to/patternfile

using spidev_test. I have created a file with dummy data but it fails when we run command

./spidev_test -D/dev/spidev1.0 -s20000 -fpatternfile -zzz
using device: /dev/spidev1.0
setting spi mode for read,write
setting spi bpw
setting max speed for rd/wr
spi mode: 0
bits per word: 8 bytes per word: 1
max speed: 20000 Hz (20 KHz)
no. runs: 1
Using seed:0x5f674756
loop count = 0 
Using user defined pattern from patternfile file ....
transfer ioctl error: -1
/dev/spidev1.0: TEST FAILED !!!!! (status:-1)
====== Transfer stats ====
Transmit:
       total: 18446744073709551615B (18014398509481983KiB 17592186044415MiB)
       total: 1P 
       ioerr: 0B (0KiB 0MiB)
       ioerr: 1P
 Rate:
  wire total: -1B/s (0KB/s)
       total: -1B/s (0KB/s)
  wire total: -1P/s
       total: -1P/s
Receive:
       total: 0B (0KiB 0MiB)
       total: 0P 
        good: 0B (0KiB 0MiB)
        good: 0P
       ioerr: 1P
     dataerr: 0P
 Rate:
        good: -1B/s (0KB/s)
        good: -1P/s
 packet drop: -1/10000

  Total time: 0.126969s

but same file gives test passed on Master and test failed on slave
here are results :-

  1. ON MASTER
$ ./spidev_test -D/dev/spidev1.0 -s20000 -fpatternfile1 -zzz -t
Disabling receive
using device: /dev/spidev1.0
setting spi mode for read,write
setting spi bpw
setting max speed for rd/wr
spi mode: 0
bits per word: 8 bytes per word: 1
max speed: 20000 Hz (20 KHz)
no. runs: 1
Using seed:0x5f6748a4
loop count = 0 
Using user defined pattern from patternfile1 file ....
/dev/spidev1.0: TEST PASSED 
====== Transfer stats ====
Transmit:
       total: 0B (0KiB 0MiB)
       total: 1P 
       ioerr: 0B (0KiB 0MiB)
       ioerr: 0P
 Rate:
  wire total: -1B/s (0KB/s)
       total: -1B/s (0KB/s)
  wire total: -1P/s
       total: -1P/s

  Total time: 0.000321s
$./spidev_test -D/dev/spidev1.0 -s20000 -fpatternfile1 -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: 0
bits per word: 8 bytes per word: 1
max speed: 20000 Hz (20 KHz)
no. runs: 1
Using seed:0x5f674804
loop count = 0 
transfer: Return actual transfer length: 0
/dev/spidev1.0: TEST PASSED 
====== Transfer stats ====
Receive:
       total: 0B (0KiB 0MiB)
       total: 0P 
        good: 0B (0KiB 0MiB)
        good: 0P
       ioerr: 0P
     dataerr: 0P
 Rate:
        good: -1B/s (0KB/s)
        good: -1P/s
 packet drop: -1/10000

  Total time: 0.000277s
  1. ON SLAVE :
$./spidev_test -D/dev/spidev1.0 -s20000 -fpatternfile1 -H -O -zzz -t
Disabling receive
using device: /dev/spidev1.0
setting spi mode for read,write
setting spi bpw
setting max speed for rd/wr
spi mode: 3
bits per word: 8 bytes per word: 1
max speed: 20000 Hz (20 KHz)
no. runs: 1
Using seed:0x5f674898
loop count = 0 
Using user defined pattern from patternfile1 file ....
transfer ioctl error: -1
/dev/spidev1.0: TEST FAILED !!!!! (status:-1)
====== Transfer stats ====
Transmit:
       total: 18446744073709551615B (18014398509481983KiB 17592186044415MiB)
       total: 1P 
       ioerr: 0B (0KiB 0MiB)
       ioerr: 1P
 Rate:
  wire total: -1B/s (0KB/s)
       total: -1B/s (0KB/s)
  wire total: -1P/s
       total: -1P/s

  Total time: 0.034047s
$./spidev_test -D/dev/spidev1.0 -s20000 -fpatternfile1 -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: 0
bits per word: 8 bytes per word: 1
max speed: 20000 Hz (20 KHz)
no. runs: 1
Using seed:0x5f674889
loop count = 0 
^Ctransfer ioctl error: -1
/dev/spidev1.0: TEST FAILED !!!!! (status:-1)
====== Transfer stats ====
Receive:
       total: 0B (0KiB 0MiB)
       total: 0P 
        good: 0B (0KiB 0MiB)
        good: 0P
       ioerr: 1P
     dataerr: 0P
 Rate:
        good: 0B/s (0KB/s)
        good: 0P/s
 packet drop: -1/10000

  Total time: 1.418285s
  1. This full duplex test is not giving fix results sometimes it gives error sometimes it successfully completed, what to do in this case ?
$./spidev_test -D/dev/spidev1.0 -n1 -s20000 -g12 -p4 -H -zzz
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: 20000 Hz (20 KHz)
no. runs: 1
Using seed:0x5f675340
loop count = 0 
Using rand() buffer 
Using crc check 
transfer packet bytes [12]
0000: FE EE CA AB FF FF FF FF 00 00 00 00 
transfer: Return actual transfer length: 12
receive packet bytes [12]
0000: FE EE CA AB FF FF FF FF 00 00 00 00 
transfer: received packet size:12 len:0 stat:0
/dev/spidev1.0: TEST PASSED 
====== Transfer stats ====
Transmit:
       total: 12B (0KiB 0MiB)
       total: 1P 
       ioerr: 0B (0KiB 0MiB)
       ioerr: 0P
 Rate:
  wire total: -1B/s (0KB/s)
       total: -1B/s (0KB/s)
  wire total: -1P/s
       total: -1P/s
Receive:
       total: 12B (0KiB 0MiB)
       total: 1P 
        good: 12B (0KiB 0MiB)
        good: 1P
       ioerr: 0P
     dataerr: 0P
 Rate:
        good: -1B/s (0KB/s)
        good: -1P/s
 packet drop: -1/10000

  Total time: 0.934475s

slave only transmits at mode 1 and mode 3 so above test fails in SPI mode 3 and sometimes it works in mode 3 and fails in mode 1, it always gives unpredictable output What should I do ?

  1. can you please tell me is there Buffer Overwrite occur in SPI ?

Thank You.

I have 2 Jetson Nano devices. I want these Jetson Nano devices to communicate with SPI. I want one of the Jetson Nano devices to be in master mode and the other device (Jetson Nano) in slave mode. I tried the solutions you suggested but I couldn’t get any results. I guess the data answers apply to Jetson Xavier. Do the same solutions apply to the Jetson Nano ? Can I get information about this topic?

I will try on Nano by spi@0 as master and spi@1 as slave later.

Below is my test result. SPI@0 as slave SPI@1 as master.
The version is r32.6.1
nvidia@nvidia-desktop:~$ cat /etc/nv_tegra_release

R32 (release), REVISION: 6.1, GCID: 27863751, BOARD: t210ref, EABI: aarch64, DATE: Mon Jul 26 19:20:30 UTC 2021

Attached my test dtb here for reference.
nano-spi-slave.dtb (233.6 KB)

The connection is 18 <-> 24, 16 <-> 26, 21<->22, 19 <-> 37, 13 <-> 23

Master

nvidia@nvidia-desktop:~$ ./spidev_test -D /dev/spidev1.0 -g 512 -s 11000000 -t -p0 -n1 -zzz
using device: /dev/spidev1.0
setting spi mode for read,write
setting spi bpw
setting max speed for rd/wr
spi mode: 0
bits per word: 8 bytes per word: 1
max speed: 11000000 Hz (11000 KHz)
no. runs: 1
Using seed:0x6165510a
loop count = 0
using sequential pattern ....
transfer bytes [512]
0000: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0010: 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
0020: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
0030: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
0040: 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
0050: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
0060: 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
0070: 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
0080: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
0090: 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
00A0: A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
00B0: B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
00C0: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
00D0: D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
00E0: E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
00F0: F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE 00
0100: 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
0110: 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
0120: 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30
0130: 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40
0140: 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50
0150: 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60
0160: 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70
0170: 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80
0180: 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90
0190: 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0
01A0: A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0
01B0: B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0
01C0: C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0
01D0: D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0
01E0: E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0
01F0: F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE 00 01
/dev/spidev1.0: TEST PASSED
====== Transfer stats ====
Transmit:
       total: 512B (0KiB 0MiB)
       total: 1P
       ioerr: 0B (0KiB 0MiB)
       ioerr: 0P
 Rate:
  wire total: -1B/s (0KB/s)
       total: -1B/s (0KB/s)
  wire total: -1P/s
       total: -1P/s

  Total time: 0.002629s

Slave

nvidia@nvidia-desktop:~$ ./spidev_test -D /dev/spidev0.0 -g 512 -s 11000000 -r -p0 -n1 -zzz
using device: /dev/spidev0.0
setting spi mode for read,write
setting spi bpw
setting max speed for rd/wr
spi mode: 0
bits per word: 8 bytes per word: 1
max speed: 11000000 Hz (11000 KHz)
no. runs: 1
Using seed:0x61655102
loop count = 0
transfer: Return actual transfer length: 512
receive bytes [512]
0000: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0010: 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
0020: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
0030: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F
0040: 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
0050: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F
0060: 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F
0070: 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F
0080: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
0090: 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
00A0: A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF
00B0: B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF
00C0: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
00D0: D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
00E0: E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF
00F0: F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE 00
0100: 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
0110: 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
0120: 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30
0130: 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40
0140: 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50
0150: 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60
0160: 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70
0170: 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80
0180: 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90
0190: 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0
01A0: A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0
01B0: B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0
01C0: C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0
01D0: D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0
01E0: E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0
01F0: F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE 00 01
transfer: received packet size:512 len:512 stat:0
/dev/spidev0.0: TEST PASSED
====== Transfer stats ====
Receive:
       total: 512B (0KiB 0MiB)
       total: 1P
        good: 512B (0KiB 0MiB)
        good: 1P
       ioerr: 0P
     dataerr: 0P
 Rate:
        good: 61B/s (0KB/s)
        good: 0P/s
 packet drop: -1/10000

  Total time: 8.353936s

Thank you for your answer. The spidev_test test didn’t work for me. Which test are you using?
The test I use: linux/spidev_test.c at master · torvalds/linux · GitHub

Try this

Hii @csena ,
Does your SPI worked, is spidev_test ran successful.

Thank You.

spidev_test seems to be running on the master device. But it doesn’t work on the slave device. What should I do?

Hii @csena ,
do device tree setup as shown in the

then change pinmux settings as shown using devmem2

and then try running spidev_test on slave 1st and then on master.
use this command on master as well as on slave
./spidev_test -D/dev/spidev1.0 -n1 -s20000 -H -g12 -p4 -zzz

use -H and -O options to set SPI mode just be sure that only on mode 1 & 3 slave can transmit as well as receive the message in mode 0 and 2 slave can only receive message.

Thank You.

You can using my dtb to confirm device tree configure.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.