2013-10-17 14 views
8

私は組み込みLinuxデバイス(olimex imx233 micro)でカーネル3.12.rc4を使用しています。私の目的は、/dev/spidevを使って別のSPIデバイスと通信できるようにすることです。spidevはチップセレクト信号を制御できません

私はとしてarch/arm/boot/dts/imx23-olinuxino.dtsを編集します。

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

    spidev: [email protected] { 
    compatible = "spidev"; 
    spi-max-frequency = <1000000>; 
    reg = <1>; 
    }; 
}; 

arch/arm/boot/dts/imx23.dtsi:結合この設定

spi2_pins_a: [email protected] { 
    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で何かを変更する必要があるのだろうか?どうすれば解決できますか?プロセッサ

+0

が、それはハードウェアではありませんあなたは確かであるが、spidevは1を選択するチップに接続されているが、多分あなたのデバイスは、だから、0チップセレクトに接続されていることをSPIコアに伝える知っているよう

問題?ピンをGPIOとして設定してみてください。 – stdcall

答えて

3

ため

The reference manual私は、デバイスツリーを使用することはありませんが、私はとにかくあなたを助けるためにしてみてください。 spidevがSPIバス1、1選択チップに接続されるように

カーネルは、デバイス/dev/spidev1.1を作成します。チップセレクト番号は0から始まり、SPIバス1に関連するデバイスはありません。私の知る限りreg = <1>reg = <0>

+0

私の問題は解決しませんでしたが、100ポイントを無駄にするのではなく、誰かに与える方がいいです:) – sven

+0

ありがとう;動いていない? – Federico

関連する問題