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

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
http://www.jsqmd.com/news/1348141/

相关文章:

  • 如何使用vulkan_best_practice_for_mobile_developers构建高效移动端渲染系统
  • 3个颠覆性理由:为什么你的下一个看板必须是Nullboard
  • 2026上半年培训系统有哪些呢?新手小白们看过来啦!
  • 如何让Firefox性能飙升47%:3个颠覆性技巧告别卡顿
  • Zulip iOS Legacy性能优化技巧:提升消息加载速度与UI响应的10个方法
  • 终极指南:TencentDB Agent Memory如何打造分层记忆系统,彻底解决AI对话上下文丢失难题
  • CCS开发中Flash与RAM程序加载的配置与切换实战指南
  • TOML全栈工具Tombi:一站式解决格式化、 linting与语言服务的终极方案
  • Tauthon未来路线图:探索Python 2.7升级版的5大核心增强功能
  • 为什么bulma-extensions是Bulma.io用户的必备工具?10个理由告诉你
  • OpenHFT安全最佳实践:漏洞响应流程与商业支持方案指南
  • 2026年实时转文字工具怎么选?这份靠谱推荐指南帮你不踩雷
  • 重庆两江新区驾校推荐!博邦驾校 C1/C2 一站式驾培 - 市场沸点
  • Voice Builder pipeline工作流解析:从语音数据到合成模型的自动化流程
  • 终极指南:保护系统免受CVE-2022-29072漏洞攻击的5种方法
  • MiroFish:为什么选择这个群体智能引擎来预测万物?
  • Modbus Monitor监视器,获取监控数据分析
  • 如何快速搭建Zulip iOS Legacy开发环境:从源码到运行的完整指南
  • Sonic测试用例全解析:如何确保语音变速功能的稳定性
  • 为什么说Magellan是最适合测试的Android导航库?Plain Objects设计理念详解
  • 《分布式系统服务拆分策略 线上高并发排障实战》
  • T3MP3ST 90.1% 漏洞检测率背后:XBOW 基准测试与真实 CVE 狩猎实战揭秘
  • Kodemo Player 核心功能解析:让技术文档焕发新生的 7 大特性
  • 如何快速解决网易云音乐NCM格式限制:ncmdump完整解密指南
  • 两江新区学车怎么选?推荐老牌博邦驾校多场地交通便利 - 市场沸点
  • 2026网校系统哪家好,Everybody看过来啦!
  • 试卷手写文字消除3:深度学习PmrNet神经网络实现图片修复(含训练代码、数据集和GUI交互界面)
  • MCP端到端流程
  • Cesium 实战 26 - 自定义纹理材质 - 六边形旋转(图片纹理)
  • Unity中代码替换Button当前、选中的图片