迅为RK3568驱动指南|如何在Linux中使用模拟SPI

        瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。


【公众号】迅为电子

【粉丝群】258811263(加群获取驱动文档+例程)

【视频观看】嵌入式学习之Linux驱动(第十六篇 SPI_全新升级)_基于RK3568

第194章 如何在Linux中使用模拟SPI
在讲解SPI基础的时候提到过SPI可以分为硬件SPI和软件SPI,在前面的章节中使用的都是硬件SPI,当硬件SPI不够用时,可以使用GPIO来模拟SPI,在本节课将对软件SPI进行讲解。

与I2C协议相比,SPI通信协议比较简单,没有起始信号、应答信号和终止信号,所以不会从零编写模拟SPI的驱动代码,直接使用Linux源码中已经写好的驱动程序即可。

194.1 内核和设备树配置
首先将模拟SPI驱动编译进内核,在make menuconfig图形化配置界面中选中如下选项

Device Drivers --->

[*]SPI support -->

<*> GPIO-based bitbanging SPI Master //选中

 

 软件SPI选定的引脚为开发板背面的4个GPIO,具体引脚功能图如下所示:

 

 

 

设备树修改步骤如下所示:

首先对rk3568-evb1-ddr4-v10.dtsi设备树进行修改,在根节点添加SPI5节点,具体内容如下所示:

spi5: spi@gpiol {
compatible = "spi-gpio";
#address-cells = <1>;
gpio-sck = <&gpio0 RK_PB0_GPIO_ACTIVE_LOW>;
gpio-miso = <&gpio1 RK_PB0_GPIO_ACTIVE_LOW>;
gpio-mosi = <&gpio1 RK_PB1_GPIO_ACTIVE_LOW>;
cs-gpios = <&gpio1 RK_PB2_GPIO_ACTIVE_LOW>;
num-chipselects = <1>;
pinctrl-names = "default";
pinctrl-0 = <&spi5_gpios>;
status = "disabled";
};

 


然后对pinctrl节点进行追加,追加内容如下所示:

 

spi5_gpios: gpios {
rockchip,pins = <0 RK_PB0 0 &pcfg_pull_none>,
<1 RK_PB0 0 &pcfg_pull_none>,
<1 RK_PB1 0 &pcfg_pull_none>,
<1 RK_PB2 0 &pcfg_pull_none>,
>;
};


最后修改之前编写的mcp2515节点,修改之后的内容如下所示:

&spi5 {
status = "okay";
mcp2515:mcp2515@0 {
compatible = "rockchip,spidev";
reg = <0>;
spi-max-frequency = <10000000>;
status = "okay";
};
};

 


修改完成之后保存,然后重新编译内核镜像,编译完成的内核镜像存放路径为“iTOP-3568开发板\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动程序\120_soft_spi\01_修改好的内核”。

194.2 运行测试
首先要确保烧写的是上一小节编译出来的内核,烧写完成开发板启动之后,使用“ls /dev/spidev5.0”查看是否存在spidev5.0节点,如下图所示:

 

 

修改完成之后保存,然后重新编译内核镜像,编译完成的内核镜像存放路径为“iTOP-3568开发板\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动程序\120_soft_spi\01_修改好的内核”。

194.2 运行测试
首先要确保烧写的是上一小节编译出来的内核,烧写完成开发板启动之后,使用“ls /dev/spidev5.0”查看是否存在spidev5.0节点,如下图所示:

 

 

可以看到TX和RX收发的数据是一样,证明SPI回环成功,至此模拟SPI测试就完成了。

 

posted on   topeet  阅读(248)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2022-08-01 迅为RK3568开发Android12系统烧写 Android 固件
2019-08-01 迅为LORA与S5P6818开发板物联网通讯方案
2018-08-01 迅为IMX6核心板开发平台智能交通解决方案

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示