在elinux.org上提到可以通过改变设备树中引脚的方向并添加该行来使D0成为输出而D1成为SPI1的输入:
ti,pindir-d0-out-d1-in = <1>;
我尝试应用相同的方法,但使用SPI0,它似乎并没有起作用。我正在处理可能存在其他干扰问题的原型PCB。
有人可以确认/否认相同的方法可以与SPI0交换相应的D0和D1吗?
谢谢!
答案 0 :(得分:2)
我已经在SPI0上测试了它,它也在工作
例如我在am33xx.dtsi中更改了(内核3.8后不支持dts覆盖)
spi0: spi@48030000 {
compatible = "ti,omap4-mcspi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x48030000 0x400>;
interrupts = <65>;
ti,spi-num-cs = <2>;
ti,hwmods = "spi0";
//added to swap d0 and d1 in spi0
ti,pindir-d0-out-d1-in = <1>;
dmas = <&edma 16
&edma 17
&edma 18
&edma 19>;
dma-names = "tx0", "rx0", "tx1", "rx1";
status = "disabled";
};
答案 1 :(得分:0)
我已经使用spidev_test环回程序测试了此方法,其结果与未更改的固件相同。我想我还有其他需要解决的SPI问题。
这是&#34;倒置&#34;的来源。 BB-SPIDEV0-00A0.dts:
/*
* Copyright (C) 2013 CircuitCo
*
* Virtual cape for SPI0 on connector pins P9.22 P9.21 P9.18 P9.17
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
/dts-v1/;
/plugin/;
/ {
compatible = "ti,beaglebone", "ti,beaglebone-black";
/* identification */
part-number = "BB-SPI0";
version = "00A0";
/* state the resources this cape uses */
exclusive-use =
/* the pin header uses */
"P9.17", /* spi0_cs0 */
"P9.18", /* spi0_d1 */
"P9.21", /* spi0_d0 */
"P9.22", /* spi0_sclk */
/* the hardware ip uses */
"spi0";
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
/* default state has all gpios released and mode set to uart1 */
bb_spi0_pins: pinmux_bb_spi0_pins {
pinctrl-single,pins = <
0x150 0x30 /* spi0_sclk.spi0_sclk, INPUT_PULLUP | MODE0 */
0x154 0x10 /* spi0_d0.spi0_d0, OUTPUT_PULLUP | MODE0 */
0x158 0x30 /* spi0_d1.spi0_d1, INPUT_PULLUP | MODE0 */
0x15c 0x10 /* spi0_cs0.spi0_cs0, OUTPUT_PULLUP | MODE0 */
>;
};
};
};
fragment@1 {
target = <&spi0>; /* spi0 is numbered correctly */
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&bb_spi0_pins>;
ti,pindir-d0-out-d1-in = <1>;
channel@0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "spidev";
reg = <0>;
spi-max-frequency = <16000000>;
spi-cpha;
};
channel@1 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "spidev";
reg = <1>;
spi-max-frequency = <16000000>;
};
};
};
};
答案 2 :(得分:-2)
您所指的文档仅涉及SPI1 D0和D1引脚交换。
据我所知,SPI0上没有引脚交换功能,只能在SPI1上使用。