2

dtb で次の行を使用して、ビーグル ボーン ブラックで I2C バス 2 を有効にしました。

i2c2: i2c@4819c000 {
    pinctrl-names = "default";
    pinctrl-0 = <&i2c2_pins>;
    status = "okay";
    clock-frequency = <100000>;
};    

i2c2_pins: pinmux_i2c2_pins {
    pinctrl-single,pins = <
        0x178 0x73  
        0x17c 0x73
    >;
};

しかし、以下のコードを使用して I2C バス 1 を有効にするのと同じ場合

i2c1: i2c@4802a000 {
    pinctrl-names = "default";
    pinctrl-0 = <&i2c1_pins>;
    status = "okay";
    clock-frequency = <100000>;
};

i2c1_pins: pinmux_i2c1_pins {
    pinctrl-single,pins = <
        0x154 0x72  /* i2c1_scl.i2c1_scl */
        0x15c 0x72  /* i2c1_sda.i2c1_sda */
    >;
};

バスはi2cdetect -lコマンドにリストされます。i2cdetect -r 1しかし、コマンドを使用してバスをプローブすると、次のエラーが表示されます

 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          [   18.322700] omap_i2c 4802a000.i2c: timeout waiting for bus ready
-- [   19.342694] omap_i2c 4802a000.i2c: timeout waiting for bus ready
-- [   20.362695] omap_i2c 4802a000.i2c: timeout waiting for bus ready

AM3359チップのZCZパッケージを使用しています。私がdtbファイルで犯した間違いを指摘してもらえますか?

4

3 に答える 3

1

問題が解決しました 間違った行を有効にしました。間違ったデータシートを参照しています。そのはず

+               i2c1_pins: pinmux_i2c1_pins {
+                       pinctrl-single,pins = <
+                               0x158 0x72      /* uart1_ctsn.i2c2_sda, SLEWCTRL_SLOW | INPUT_PULLUP | MODE2 */
+                               0x15c 0x72      /* uart1_rtsn.i2c2_scl, SLEWCTRL_SLOW | INPUT_PULLUP | MODE2 */
+                       >;
+               };
于 2014-07-23T08:00:42.480 に答える