三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

RK3568 --- SPI主从模式配置

RK3568 --- SPI主从模式配置

文章目录

  • 一、连接
  • 二、内核配置
  • 三、设备树
  • 四、测试
    • (一)主发从收
    • (二)主收从发

一、连接

使用rk3568的SPI0 和 SPI2,SPI0设置为从设备,SPI2设置为主设备

主设备 SPI2 从设备 SPI0 ============= ============= MOSI ───► MOSI [主出 → 从入] MISO ◄─── MISO [主入 ← 从出] CLK ───► CLK [主时钟输出] CS0 ───► CS0 [主片选输出] GND ──── GND

二、内核配置

CONFIG_SPI=y CONFIG_SPI_ROCKCHIP_SLAVE=y CONFIG_SPI_SLAVE=y

三、设备树

&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"; spi@0 { compatible = "rockchip,spidev"; reg = <0>; spi-max-frequency = <50000000>; }; spi@1 { 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; slave@0 { compatible = "rockchip,spidev"; reg = <0>; spi-max-frequency = <33000000>; status = "okay"; }; };
  • 注意: 当 master 速率超过⼀定频率后,建议传输过程设置 performance 模式,避免传输过程 DRAM 变频导致控
    制器缓存溢出

四、测试

(一)主发从收

第一步:执行从机read,阻塞等待主机ddif=/dev/spidev0.0of=/tmp/slave_rx.binbs=16count=1iflag=fullblock 第二步:主机发送16字节printf'ABCDEFGHABCDEFGH'|ddof=/dev/spidev2.0bs=16count=1第三步:验证从设备收到数据 hexdump /tmp/slave_rx.bin

注 : hexdump是小端显示,以下述收到内容为例
root@OK3568-C-buildroot:/# hexdump /tmp/slave_rx.bin
0000000 6548 6c6c 536f 4950 5330 616c 6576 736c
实际收到的是
4865 6c6c 6f53 5049 3053 6c61 7665 6c73
ASCII码转化即HelloSPI0Slave!!

(二)主收从发

第一步:执行从机write,阻塞等待主机printf'ABCDEFGHABCDEFGH'|ddof=/dev/spidev0.0bs=16count=1iflag=fullblock 第二步 主设备触发ddif=/dev/spidev2.0of=/tmp/master_rx.binbs=16count=1iflag=fullblock 第三步:查看主设备端RX收到的数据是否一致 hexdump /tmp/master_rx.bin
← 返回列表