您好!
我已经在许多论坛上搜索了几个星期的问题答案。 我正在为 BeagleBone Balck (AM3358 Sitara 处理器)使用内置器件。 我正在尝试在没有顶层 Cape 管理器的情况下使用 SPI0、因此我要编写自己的器件树。 从内核构建开始。
sudo make linux-menuconfig
[]设备驱动程序
[*]SPI 支持
<*> SPI 驱动程序的调试支持
用于 OMAP 的<*>McSPI 驱动程序
<*>用户模式 SPI 设备驱动程序支持
SPI 环回测试框架支持
其次、我将 AM335x-bonebblack.dTB 编辑为:
spi0_pins:pinmux_spi0_pins{
pinctrl-single、pins =<
0x150 (PIN_INPUT_PULLUP | MUX_MODE0)/* spi0_SCLK.spi0_SCLK
0x154 (PIN_INPUT_PULLUP | MUX_MODE0)/* spi0_d0.spi0_d0 *
0x158 (PIN_OUTPUT PULLUP | MUX_MODE0)/* spi0_D1.spi0_D1 *
0x15C (PIN_OUTPUT PULLUP | MUX_MODE0)/* spi0_cs0.spi0_cs0 *
>;
};
然后编辑了 am33xx.dtsi 中的以下行
spi0:SPI@48030000{
兼容="ti、omab4-mcspi"、"rohm、dh2228fv";
#address-cells =<1>;
#size-cells =<0>;
REG =<0x48030000 0x400>;
中断=<65>;
TI、SPI-num-cs =<2>;
pinctrl-names ="default";
pinctrl-0 =<&spi0_PINs>;
ti、hwmods ="spi0";
TI、PIO 模式=<1>;
状态="正常";
spiddev:spidev@0{
兼容="spidev";
reg =<0>;
SPI-max-frequency =<1000000>;
};
};
最后、我使用构建我的内核和映像
sudo make linux-rebuild
sudo make
我复制了 SDCard 上的所有这些元素、该 SDCard 用于引导 BeagleBone Black。 在启动时,我遇到第一条消息:
[...] spidev 1.0:spidby dT:spidev 直接列在 DT 中
[...] ------ [在此处剪切]-----
(笑声)
启动后、我可以在/dev/spidev1.0.下看到我的不同器件 我使用 spidev_test.c 在 spi0引脚上运行环回、这些引脚由 MOSI 和 MISO 之间的电缆短接。 测试未成功完成、Rx 返回值全部为00、但发送 TX 信号。 我能够在逻辑分析仪上看到它们。 在大多数论坛中、他们说只需更改 SCLK 引脚的引脚配置、我可以将其更改为输入或输出、这不会改变任何东西。 此消息将会发出
#./spidev_test -D /dev/spidev1.0
[...]spidev spi1.0:不对 McSPI 使用 DMA (-19)
[...]spidev spi1.0:不对 McSPI 使用 DMA (-19)
[...]spidev spi1.0:不对 McSPI 使用 DMA (-19)
SPI 模式:0
每字位数:8.
最大速度:500000Hz (500KHz)
00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00
00 00 00 00 00 00 00
00
我的问题是、我的声明/设置中是否缺少某些内容、或者其他地方是否存在某些内容? 我正在使用 Linux 4.9.13。
任何帮助都很好! 谢谢你