SPI
配置引脚
找到板子上的spi引脚
为了方便查找,我们加入了一个显示功能引脚位置的功能,运行以下命令,查看板子的40pin引脚上有几个可用spi
gpio pin spi

可以看到这块40pin排针里只有spi1,还有归属于spi1的两根cs引脚。一个spi接口可以同时连着多个模块,然后每个模块都连上不同的cs引脚,通过cs引脚来控制要与哪个模块通信。
启用spi-dev
我们使用set-device指令来使能/关闭指定设备的底层驱动,使能后,引脚就会由gpio模式切换为对应的引脚复用功能。(配置后要重启才能生效)
如果我们要操作spi1,首先需要使能spi1,然后使能一个spidev1_x。例如使能spidev1_0,他对应的是spi1-cs0。重启后就会出现一个/dev/spidev1.0文件,操作这个文件进行spi通信时,就会自动使能spi1的cs0引脚(拉低),并使其他所有cs引脚失效(拉高)。
注意,启用spidev1_0的时候,会使其他使用spi1-cs0的设备驱动全部会失效,比如3.5寸lcd屏。
我这里启用spidev1_0,注意要重启后才能生效
sudo set-device enable spidev1_0

重启后发现出现了/dev/spidev1.0这个文件,因为后续我们需要通过操作这个文件来控制spi1_cs0的通讯
spi读写程序
我们要操作/dev/spidev1.0这个文件。通过open打开,用ioctl进行配置以及触发spi读写,close关闭文件。
1. 打开文件
linux下一切皆是文件,先使用open函数打开我们要操作的设备对应文件,获取文件描述符。
open函数需要这些头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
open设备节点
int fd = open("/dev/spidev1.0", O_RDWR);
if (fd < 0)
{
perror("Fail to Open\n");
return -1;
}