香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

香橙派4是一款开源的单板电脑,使用Rockchip RK3399主控芯片,拥有双通道4GB LPDDR4内存 ,板载16GB EMMC flash存储,支持运行Android 8.1、Ubuntu 16.04、Debian 9等操作系统,具备MIPI-CSI双摄像头接口,HDMI2.0视频输出接口,麦克风端口,3.5mm和HDMI2.0音频输出口,千兆以太网口,USB3.0,USB2.0,Type-C等常规标准接口,还有调试串口,40pin树莓派兼容扩展口。本篇介绍下香橙派4在Linux系统下如何使用SPI接口:

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

1、首先安装下wiringOP,以下操作可能会用到

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

2、修改dts以启用SPI

SPI和UART4共享相同的引脚。官网镜像不支持SPI,需要修改内核的DTS文件以启用SPI。

首先按照用户手册方法下载Linux源代码。

修改dts以启用SPI
cd OrangePiRK3399_Pi4/
vi kernel/arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts

找到spi的定义
&spi1 {
        status = "disable";        //将disable改为okay

找到uart4的定义
&uart4 {
        status = "okay";           //将okay改为disable


3、编译内核
./build.sh

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

4、内核替换
编译完成后,需要将内核更新到SD卡中。准备一张烧录有OrangePi 4 Linux镜像的SD卡。通过读卡器插到PC的usb接口。

首先确定SD卡的设备节点。
拔出SD卡,执行ls /dev/sd*
[email protected]:~$ ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5

插上SD卡,执行ls /dev/sd*
[email protected]:~$ ls /dev/sd*
/dev/sda   /dev/sda2  /dev/sdb   /dev/sdb2  /dev/sdb4
/dev/sda1  /dev/sda5  /dev/sdb1  /dev/sdb3

可知SD卡对应的设备节点是/dev/sdb

执行build.sh
./build.sh

选择5 Update Kernel Image

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

输入/dev/sdb 

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明


更新完成。

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

 

内核模块最好也更新下。选择6 Update Module

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

 

SD卡的rootfs分区挂载点是/media/csy/rootfs,每个人的环境会有所不同

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

回车。

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

 

SD卡插入OrangePi 4,启动系统。Spi已经启用

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

5、wiringOP提供了一个w25q64_test.c用于测试SPI。
需要用到W25QXX 模块。
硬件接线如下,具体引脚定义可查看OrangePi 4的原理图
VCC -  1
CS  - 24
DO  - 21
GND -  6
CLK - 23
DI  - 19
注:左边为W25QXX 模块的引脚,右边为40pin的物理编号

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

编译测试程序
cd wiringOP/examples/
make w25q64_test


运行测试程序。

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

出现以上报错的原因是wiringOP对于spi通道0访问的设备节点是
/dev/spidev0.0。

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

 

而RK3399平台名称是/dev/spidev1.0.
所以创建一个软链接即可。
ln -s /dev/spidev1.0 /dev/spidev0.0

运行测试程序。

香橙派开发板Orange Pi 4在Linux系统下SPI接口的使用说明

 

能读取ef 40 17 说明SPI通信正常。