[Armadillo:07658] Re: i2cdev ドライバの使用方法
g-kihara
email@hidden
2011年 10月 28日 (金) 17:13:18 JST
> と記載されていますが、I2C3でDAC制御を行う場
I2Cの3チャンネルを利用されるんですか?
ならば、
fd = open("/dev/i2c-2", O_RDWR);
ではなく、
fd = open("/dev/i2c-3", O_RDWR);
にしないと。
以上
(2011/10/28 14:53), email@hidden wrote:
>
> 小林と申します。
>
> I2Cの使用方法について教えてください。
>
> 【現象】
> I2C3をi2cdevドライバーを用いて使用するとwriteでリモートI/Oエラー
> となり、SCL,SDA共に信号が出力されない。
>
> 【構成】
> 品名 :Armadillo-440
> 型番 :A4400-U00Z
> OS :Linux armadillo440-0 2.6.26-at15
> その他:RTC未搭載
> I2C3の接続先は、DAC(AD5337)
>
> 【設定】
> ・I2C コンフィギュレーション
> I2C y (デフォルト)
> I2C_CHARDEV y (デフォルト)
> I2C_MXC y (デフォルト)
> ARMADILLO400_I2C3_CON11 y (デフォルト)
>
> ・リアルタイムクロック選択コンフィギュレーション
> ARMADILLO400_I2C3_CON11_S35390A n (デフォルトから変更)
>
> 【詳細】
> Armadillo 実践開発ガイド
> 〜組み込みLinux の導入から製品化まで〜
> 第3 部
> 上記ドキュメントの「2.2.4. i2cdev ドライバー」を参考に
> ソフト(アプリケーション)を実装しています。
> Armadillo440のI2C3(CON11_48,49)にDAC(AD5337)を接続しています。
> アプリケーション上の手順は以下のとおりです。
>
> (1) デバイスファイルのオープン
>
> fd = open("/dev/i2c-2", O_RDWR);
>
> (2) スレーブデバイスのアドレス設定
>
> ioctl(fd, I2C_SLAVE, [DAC(AD5337)のアドレス]);
>
> (3) I2C スレーブデバイスへのデータ書込
>
> write(fd, [3byteデータ], 3);
>
> 上記手順でソフトを動作させると、(3)のwriteでerrnoが121(リモートI/O
> エラー)となります。
> コンソール上から直接"/dev/i2c-2"を参照しようとcatコマンドを実行しても
>
> cat: Read error: Remote I/O error
>
> と出力されます。上記現象からデバイスファイルのアクセスができない
> 状態になっているようです。
>
> 上記ドキュメントには、
>
>> i2cdev ドライバーを使用すると、デバイスファイルインターフェースを
>> 経由して、ユーザーランドで動作するアプリケーションプログラムから
>> デバイスの制御をおこなうことができます。Armadillo-400 シリーズでは、
>> 標準のカーネルでi2cdev ドライバーが有効になっているため、特に何も
>> 設定しなくとも使用可能です。
>
> とあり、
>
>> I2C スレーブデバイスとのデータ転送をおこなうには、単純にread/write
>> システムコールを実行するだけです。スタート/ストップコンディションの
>> 発行、アドレスバイトの生成と送信、アクノリッジの処理などは、全て
>> ドライバーがおこなってくれるので、アプリケーションプログラム側では
>> それらを意識する必要はありません。
>
> と記載されていますが、I2C3でDAC制御を行う場合、他に何か必要な手順が
> ありますでしょうか。
>
> 以上、よろしくお願いいたします。
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
armadillo メーリングリストの案内