当前位置: 首页 > news >正文

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 表示空闲时为高电平(需与从机一致)。

    http://www.lryc.cn/news/606878.html

    相关文章:

  • 多屏混合KVM Dock扩展坞 如何打造极致高效生产力
  • 9.1无法恢复的错误与 panic!
  • Codeforces Round 1040 (Div. 2) A - D题详细题解
  • 第13届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2021年10月24日真题
  • 项目上传到github中
  • Web3.0如何塑造互联网的未来
  • Spring AI MCP:解锁大模型应用开发新姿势
  • GitLab Docker Compose 迁移后 Redis 权限问题排查与解决
  • Linux中Docker Swarm介绍和使用
  • 深度学习-梯度爆炸与梯度消失
  • 宝塔服务器挂载数据盘
  • Hive SQL (HQL) 编辑指南
  • Jupyter Notebook 使用指南
  • 深度解析:Nginx的卓越性能
  • Java 24 新特性解析与代码示例
  • 理想I8对撞乘龙卡车,AI基于数学和物理的角度如何看?
  • macOS卸载.net core 8.0
  • 基于OpenCV的cv2.solvePnP方法实现头部姿态估计
  • STM32-ESP8266Wi-Fi模块使用USART实现通信/创建AP和STA模式配置教程(寄存器版)
  • 预测性维护之温振传感器选型与应用秘籍
  • ubuntu22.04系统入门 linux入门(二) 简单命令 多实践以及相关文件管理命令
  • Node.js的用途和安装方法
  • CS231n2017-Lecture9经典CNN架构笔记
  • 关于继承的一些知识(C++)
  • visual studio 2015 编写C++ 静态库和动态库、调用静态库和动态库
  • C++--多态
  • 20257月29日-8月2日训练日志
  • 软件测试测评公司关于HTTP安全头配置与测试?
  • 用 Ubuntu 22.04 (Jammy) 的 MongoDB 源
  • Java 学习笔记:常用类、String 与日期时间处理