我在使用SPI工作Beagle Bone green方面遇到了一些麻烦。 首先,我正在运行内核版本4.4.9。
xgate@beaglebone:~/spitest$ uname -a
Linux beaglebone 4.4.9-ti-r25 #1 SMP Thu May 5 23:08:13 UTC 2016 armv7l GNU/Linux
现在,我确实将SPIDEV0配置添加到/ sys / devices / platform / bone_capemgr / slots:
xgate@beaglebone:/lib/firmware$ echo BB-SPIDEV0 > /sys/devices/platform/bone_capemgr/slots
xgate@beaglebone:~/spitest$ cat /sys/devices/platform/bone_capemgr/slots
0: PF---- -1
1: PF---- -1
2: PF---- -1
3: PF---- -1
4: P-O-L- 0 Override Board Name,00A0,Override Manuf,BB-SPIDEV0
5: P-O-L- 1 Override Board Name,00A0,Override Manuf,BB-SPIDEV1
现在当我打开/dev/spi1.0,它应该是带有SPI0_CS0的P9头上的SPI0,并使用linux write()函数写入文件时,引脚上没有任何反应(我尝试与之通信)一个SPI设备,我的逻辑分析仪也显示没有发生任何事情。)
我在这里遗漏了什么吗?我现在已经用了很长一段时间了,我很惊讶没有那么多可以找到的东西。让我觉得我很不走运,它不起作用。
任何人都可以请教我这个吗? 在此先感谢:)
编辑: 看到我不清楚我是如何测试的,这是我用来测试SPI的程序:
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
int main()
{
int fd;
unsigned char buf = 0xA1;
fd = open("/dev/spidev1.0", O_RDWR);
if(fd < 0) printf("spi failed to open\n");
while(1)
{
write(fd,&buf,1);
}
close(fd);
return 0;
}
EDIT2:已修复!通过将此行添加到/boot/uEnv.txt:
解决了该问题cape_enable=bone_capemgr.enable_partno=BB-SPIDEV0
显然,SPI在启动后手动添加到插槽后不起作用。