9

組み込み Linux デバイス (olimex imx233 micro) でカーネル 3.12.rc4 を使用しています。私の目的は/dev/spidev、別の spi デバイスと通信できるようにすることです。

私は次のように編集arch/arm/boot/dts/imx23-olinuxino.dtsします:

ssp1: ssp@80034000 {
  #address-cells = <1>;
  #size-cells = <0>;
  compatible = "fsl,imx23-spi";
  pinctrl-names = "default";
  pinctrl-0 = <&spi2_pins_a>;
  clock-frequency = <1000000>;
  status = "okay";

  spidev: spidev@0 {
    compatible = "spidev";
    spi-max-frequency = <1000000>;
    reg = <1>;
  };
};

arch/arm/boot/dts/imx23.dtsi:この構成を持っています

spi2_pins_a: spi2@0 {
  reg = <0>;
  fsl,pinmux-ids = <
    0x0182 /* MX23_PAD_GPMI_WRN__SSP2_SCK */
    0x0142 /* MX23_PAD_GPMI_RDY1__SSP2_CMD */
    0x0002 /* MX23_PAD_GPMI_D00__SSP2_DATA0 */
    0x0032 /* MX23_PAD_GPMI_D03__SSP2_DATA3 */
  >;
  fsl,drive-strength = <1>;
  fsl,voltage = <1>;
  fsl,pull-up = <1>;
};

デバイス バインドは正しいようです。カーネルをコンパイルすると、/dev/spidev1.1. その後、spidev_test.cを使用して、オシロスコープでピンを監視します。SCK と MOSI は正しく信号を出力しますが、チップセレクトはデータ転送中でも論理ハイに設定されます。

送信中に spidev が論理ローに設定できない理由を特定する方法はありますか? 追加のものをカーネルに渡す必要があるか、チップ選択を制御できないspidevに問題があるようです。カーネルの driver/spi ディレクトリにある spidev.h または spidev.c を変更する必要があるのでしょうか? またはどうすれば解決できますか?

プロセッサのリファレンスマニュアル

4

1 に答える 1

6

私はデバイス ツリーを使用したことはありませんが、とにかくあなたを助けようとします。

カーネルがデバイス/dev/spidev1.1を作成するので、spidev はSPI バス 1チップセレクト 1に接続されます。チップ選択の番号は から始まり、SPI バス 10に関連付けられた他のデバイスはありません。

私の知る限りreg = <1>、spidev はチップセレクト 1 に接続されていることを SPI コアに伝えますが、デバイスはチップセレクト 0 に接続されている可能性があります。reg = <0>

于 2013-10-23T18:51:45.400 に答える