Waveshareを入手するには、Banana Pi BPI-M2 Zeroで動作する必要があります。

Waveshareを入手するには、Banana Pi BPI-M2 Zeroで動作する必要があります。

WaveshareはRaspberry Piのための素晴らしいCAN HATを作ります(参照ここ)、しかし、指示はArmbianではなくRaspberry Pi OSにのみ適用されます。 Banana Pi BPI-M2 ZeroはRaspberry Piと同じピン配置を持っていますが、Armbianを実行しています。 Armbianのオーバーレイシステムを使用してWaveshare CAN HATを設定するには?

ベストアンサー1

オーバーレイはRaspberry Pi OSとArmbianで少し異なる動作をします。これを行うには、2つのことを行う必要があります。まず、SPIバスゼロを有効にする必要があります。これはファイルを編集することによって行うことができます/boot/armbianEnv.txt。ファイルに次の2行を追加します。

overlays=spi-spidev
param_spidev_spi_bus=0

overlays=同じ行に追加する必要があることを示す行がすでにある場合は、spi-spidevすべてのシステムオーバーライドを同じコマンドに割り当てる必要があります。

次に、デフォルトでは、さまざまなドライバパラメータを使用しているボードの特定の実装にマッピングするDTSファイルが必要です。使ったこのファイル(以下のコピー) Waveshareが提供する特定のボードと一致しているようです。ファイル名はでなければなりませんspi-mcp251x.dts。このファイルはこのコマンドを使用してコンパイルしてインストールできarmbian-add-overlay spi-mcp251x.dts/boot/armbianEnv.txt再起動後に機能するCANドライバが必要です。

ファイルの内容はspi-mcp251x.dts次のとおりです。

/dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun4i-a10", "allwinner,sun7i-a20", "allwinner,sun8i-h3", "allwinner,sun50i-a64", "allwinner,sun50i-h5";
    fragment@0 {
        target-path = "/clocks";
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <1>;
            can0_osc_fixed: can0_osc_fixed {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency  = <12000000>;
            };
        };
    };

    fragment@1 {
        target = <&pio>;
        __overlay__ {
            can0_pin_irq: can0_pin_irq {
                pins = "PA2";
                function = "irq";
                bias-pull-up;
            };
        };
    };

    fragment@2 {
        target = <&spi0>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";
            mcp2515 {
                reg = <0>;
                compatible = "microchip,mcp2515";
                pinctrl-names = "default";
                pinctrl-0 = <&can0_pin_irq>;
                spi-max-frequency = <2000000>;
                interrupt-parent = <&pio>;
                interrupts = <0 2 8>; /* PA2 IRQ_TYPE_LEVEL_LOW */
                clocks = <&can0_osc_fixed>;
                status = "okay";
            };
        };
    };
};

おすすめ記事