Linux通用SPI作为Master——回环测试

一、本文以RK3506平台为例进行演示

(1)配置设备树支持使用通用SPI

&spi0 {
        status = "okay";
        pinctrl-0 = <&rm_io31_spi0_clk &rm_io30_spi0_mosi &rm_io29_spi0_miso &rm_io26_spi0_csn0>;
        my_spidev: my-spidev@0 {
                compatible = "rockchip,spidev";
                reg = <0>;
                spi-max-frequency = <1000000>;
                status = "okay";
    };
};

(2)使能Linux配置支持SPI

Master配置支持:

用户层SPI模式支持:

配置完后重新编译内核镜像进行测试

/dev/spidev0.0 表示一个 SPI 总线上的具体设备。0.0 是一个标识符,用于区分系统中的不同 SPI 控制器和设备。这个标识符由两部分组成:

第一个数字 0:表示SPI总线的编号。一个系统中可能有多个SPI控制器,每个控制器对应一个总线编号,从0开始。
第二个数字0:表示连接在该SPI总线上的具体设备编号。一个SPI总线上可以连接多个设备,每个设备通过片选信号(Chip Select, CS)进行区分,设备编号从0开始。

(3)使用Linux自带的SPI应用程序进行回环测试

编译spi工具应用程序

执行以下命令进行编译

make CC=/home/fae/work/czx-fae/3506-v1/rk3506_linux6.1_rkr4_v1/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc LD=/home/fae/work/czx-fae/3506-v1/rk3506_linux6.1_rkr4_v1/prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-ld

(4)测试验证

使用杜邦线将MISO和MOSI短接进行回环测试

./spidev_test -D /dev/spidev0.0 -s 1000000 -v -p 'okay'

关键参数说明:
  • -D /dev/spidevX.Y:指定 SPI 设备节点(必选),如 /dev/spidev0.0(X 为主控制器编号,Y 为从机编号)。
  • -l:启用回环模式(核心参数,必须添加)。
  • -s <速率>:设置 SPI 通信的最大速率(Hz),如 -s 1000000 表示 1MHz(需与设备支持的速率匹配)。
  • -b <位宽>:设置每字的位数(bits per word),通常为 8(即 1 字节),如 -b 8
  • -H <0或1>:设置时钟相位(CPHA),0 表示数据在时钟第一个边沿采样,1 表示第二个边沿采样(需与从机一致)。
  • -O <0或1>:设置时钟极性(CPOL),0 表示空闲时时钟为低电平,1 表示空闲时为高电平(需与从机一致)。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值