ARM技术william hill官网
直播中

行走的小派

5年用户 366经验值
擅长:嵌入式技术 接口/总线/驱动 控制/MCU
私信 关注
[经验]

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

`香橙派4这款电脑开发板前面已介绍过,不再赘述,详细参数可以看下图↓↓↓

Pi-4淘宝详情页_21.jpg Pi-4淘宝详情页_22.jpg
本篇介绍下香橙派4在linux系统下如何使用SPI接口
1、首先安装下wiringOP,以下操作可能会用到
图1-安装wiringOP.png

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

图片2.png

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


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


插上SD卡,执行ls /dev/sd*
csy@ubuntu:~$ 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
图片3.png

输入/dev/sdb
图片4.png

更新完成。
图片5.png

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

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

回车。
图片8.png

SD卡插入OrangePi 4,启动系统。Spi已经启用
图片9.png

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

图片10.png

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

图片11.png

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

图片12.png

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

运行测试程序。

图片13.png


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

` Pi-4淘宝详情页_20.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分