首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >树莓Pi - SPI器件树的变化

树莓Pi - SPI器件树的变化
EN

Stack Overflow用户
提问于 2018-08-23 18:18:37
回答 1查看 1.6K关注 0票数 0

我试图移动一个覆盆子Pi 3上的SPI总线。我想把它从GPIO 7-11到GPIO引脚22-26。文件"bcm2708_common.dtsi“包含spi0总线的节点:

代码语言:javascript
复制
spi0: spi@7e204000 {
    compatible = "brcm,bcm2835-spi";
    reg = <0x7e204000 0x1000>;
    interrupts = <2 22>;
    clocks = <&clk_core>;
    #address-cells = <1>;
    #size-cells = <0>;
    status = "disabled";
    /* the dma channels */
    dmas = <&dma 6>, <&dma 7>;
    dma-names = "tx", "rx";
    /* the chipselects used - <0> means native GPIO
     * add more gpios if necessary as <&gpio 6 1>
     * (but do not forget to make them output!)
     */
    cs-gpios = <0>, <0>;
};

spi配置在顶级dts文件“bcm2710-RPI-3-b.dts”中:

代码语言:javascript
复制
&gpio {
    spi0_pins: spi0_pins {
        brcm,pins = <7 8 9 10 11>;
        brcm,function = <4>; /* alt0 */
    };
};

&spi0 {
    pinctrl-names = "default";
    pinctrl-0 = <&spi0_pins>;
    cs-gpios = <0 0>;

    spidev@0{
        compatible = "spidev";
        reg = <0>;  /* CE0 */
        #address-cells = <1>;
        #size-cells = <0>;
        spi-max-frequency = <500000>;
    };

    spidev@1{
        compatible = "spidev";
        reg = <1>;  /* CE1 */
        #address-cells = <1>;
        #size-cells = <0>;
        spi-max-frequency = <500000>;
    };
};

重新配置spi引脚是否像更改gpio条目一样简单,还是需要做更多的事情?

代码语言:javascript
复制
&gpio {
    spi0_pins: spi0_pins {
        brcm,pins = <22 23 24 25 26>;
        brcm,function = <4>; /* alt0 */
    };
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-26 16:56:31

不是的。你不能只是改变在DTSI中的引脚号码,并使它改变。

很长的答案:brcm,pins字段只是驱动程序要参考的信息,如果硬件不支持你在那里写的引脚,你就不能让它工作。在Rpi 3b上,支持将引脚7、8、9、10、11作为SPI支持,也就是说,它们可以被复用为SPI (字段brcm,function告诉要设置引脚的多路复用模式)。

现在,如果您搜索BCM2835臂外围,您将在第152页中找到以下内容:

BCM2835设备只有一个类型的SPI接口。在所有文档中,它都被称为SPI0。它还有两个额外的迷你SPI接口(SPI1和SPI2)。其特殊性可在2.3通用SPI硕士(2x)下找到。

因此,Rpi上的SoC本身不支持任何其他引脚上的其他spi。

下面是上述引文的第二句。

它还有两个额外的迷你SPI接口(SPI1和SPI2)。这些>的特别化可在2.3通用SPI主(2x)下找到。

如果您深入到bcm283x.dtsi,您将发现这两个迷你spis都名为SPI1和SPI2。分配给它们的gpio引脚被指定为spi1_gpio16spi2_gpio40,它们使用引脚:

代码语言:javascript
复制
spi1_gpio16: spi1_gpio16 {
brcm,pins = <16 17 18 19 20 21>;
brcm,function = <BCM2835_FSEL_ALT4>;
};
spi2_gpio40: spi2_gpio40 {
brcm,pins = <40 41 42 43 44 45>;
brcm,function = <BCM2835_FSEL_ALT4>;
};

所以再一次不要用你想用的别针。

如果你真的在修复并且不能使用其他任何东西的话,你可能会对spi有点兴趣。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51992005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档