文章目录一、连接二、内核配置三、设备树四、测试一主发从收二主收从发一、连接使用rk3568的SPI0 和 SPI2SPI0设置为从设备SPI2设置为主设备主设备 SPI2 从设备 SPI0 MOSI ───► MOSI [主出 → 从入] MISO ◄─── MISO [主入 ← 从出] CLK ───► CLK [主时钟输出] CS0 ───► CS0 [主片选输出] GND ──── GND二、内核配置CONFIG_SPIy CONFIG_SPI_ROCKCHIP_SLAVEy CONFIG_SPI_SLAVEy三、设备树spi2 { pinctrl-names default, high_speed; pinctrl-0 spi2m1_cs0 spi2m1_cs1 spi2m1_pins; pinctrl-1 spi2m1_cs0 spi2m1_cs1 spi2m1_pins_hs; status okay; spi0 { compatible rockchip,spidev; reg 0; spi-max-frequency 50000000; }; spi1 { compatible rockchip,spidev; reg 1; spi-max-frequency 50000000; }; }; spi0 { pinctrl-names default, high_speed; pinctrl-0 spi0m1_cs0 spi0m1_pins; pinctrl-1 spi0m1_cs0 spi0m1_pins_hs; status okay; spi-slave; slave0 { compatible rockchip,spidev; reg 0; spi-max-frequency 33000000; status okay; }; };注意 当 master 速率超过⼀定频率后建议传输过程设置 performance 模式避免传输过程 DRAM 变频导致控制器缓存溢出四、测试一主发从收第一步执行从机read,阻塞等待主机ddif/dev/spidev0.0of/tmp/slave_rx.binbs16count1iflagfullblock 第二步主机发送16字节printfABCDEFGHABCDEFGH|ddof/dev/spidev2.0bs16count1第三步验证从设备收到数据 hexdump /tmp/slave_rx.bin注 : hexdump是小端显示以下述收到内容为例rootOK3568-C-buildroot:/# hexdump /tmp/slave_rx.bin0000000 6548 6c6c 536f 4950 5330 616c 6576 736c实际收到的是4865 6c6c 6f53 5049 3053 6c61 7665 6c73ASCII码转化即HelloSPI0Slave!!二主收从发第一步执行从机write,阻塞等待主机printfABCDEFGHABCDEFGH|ddof/dev/spidev0.0bs16count1iflagfullblock 第二步 主设备触发ddif/dev/spidev2.0of/tmp/master_rx.binbs16count1iflagfullblock 第三步查看主设备端RX收到的数据是否一致 hexdump /tmp/master_rx.bin