修改 /boot/env.txt, SPI 开启后,找不到设备

按照这个方法

修改 /boot/env.txt ,并且 Short-circuit PIN35 and PIN37 了。
关掉机器,重新打开,还是没找到/dev/spidev1.1 设备。

overlays=uart3 pwm_f i2c3 os08a10 → overlays=i2c3 os08a10 spi
这里写错了。

应该是
overlays=uart3 pwm_f i2c3 os08a10 → overlays=i2c3 os08a10 spi1

表示对khadas 官方文档的极其不满。

@ideafold 抱歉,文档已经修复,感谢反馈。

即使Short-circuit PIN35 and PIN37 了,
按照

文档操作,./spi_out.txt 也没数据。

@ideafold Hello,修改后的文档是可以运行的

你的spi_in.txt是有内容的么

khadas@Khadas:~/projects/Localization/source/c&c++/embedded/app/spi/spi_test$ cat spi_in.txt
Amazing Khadas!

是由内容的。

另外我系统的spi是这个
ll /dev/spidev1.0
crw-rw---- 1 root root 153, 0 Nov 17 12:06 /dev/spidev1.0

合理吗?

请问下,你系统的overlays 是怎么设置的呢?

@ideafold 你的系统应该没有更新,spi1.0也是可以的.

overlays=i2c3 i2s os08a10 watchdog spi1

你测试时,除了Short-circuit PIN35 and PIN37 之外,gpio口还需要做什么接线吗?


接线应该没有错把

不需要,如我上图,就是只接这两个就可以。

那我是没有接错。
dmesg 能看到spi口的log之类的吗?
本人对i2c、spi不熟悉

@ideafold

khadas@Khadas:~$ dmesg | grep spi
[    2.541648] meson-spicc ffd15000.spi: registered master spi1
[    2.541737] spi spi1.1: setup mode 0, 8 bits/w, 100000000 Hz max --> 0
[    2.542016] meson-spicc ffd15000.spi: registered child spi1.1
[  218.910522] spidev spi1.1: setup mode 0, 8 bits/w, 100000000 Hz max --> 0
[  218.910531] spidev spi1.1: spi mode 0
[  218.910541] spidev spi1.1: setup mode 0, 8 bits/w, 100000000 Hz max --> 0
[  218.910546] spidev spi1.1: 8 bits per word
[  218.910554] spidev spi1.1: setup mode 0, 8 bits/w, 500000 Hz max --> 0

你这边看看你的dmesg有没有报SPI的错

看起来没有错:

@ideafold

这里应该修改成1.0.你修改完重新编译测试下

我已经改为1.0了的。 -----------------------------------

@ideafold 你有示波器么?量一下发送时,有没有数据从SPI口出来,需要控制的东西不多,就这么几个,从你提供的信息来看,应该是没有问题的

手头上暂时没有示波器。这个问题看起来比较复杂。后面有空再看一下。

@ideafold 你这边使用spi是有什么需求么?如果你着急使用,我这边可以给一个我的固件给你测试,不知道会不会存在这方面的差异