Beaglebone Black SPI0交换D0和D1

时间:2014-08-19 21:24:59

标签: beagleboneblack spi device-tree

elinux.org上提到可以通过改变设备树中引脚的方向并添加该行来使D0成为输出而D1成为SPI1的输入:

ti,pindir-d0-out-d1-in = <1>;

我尝试应用相同的方法,但使用SPI0,它似乎并没有起作用。我正在处理可能存在其他干扰问题的原型PCB。

有人可以确认/否认相同的方法可以与SPI0交换相应的D0和D1吗?

谢谢!

3 个答案:

答案 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上使用。