[Armadillo:07663] Re: i2cdev ドライバの使用方法

Takenoshita Koyo email@hidden
2011年 10月 28日 (金) 18:05:28 JST


竹之下です。

> I2Cの3チャンネルを利用されるんですか?
> 
> ならば、
> 
> fd = open("/dev/i2c-2", O_RDWR);
> 
> ではなく、
> 
> fd = open("/dev/i2c-3", O_RDWR);
> 
> にしないと。
I2C3(CON11)を使用する場合、/dev/i2c-2で大丈夫です。
分かりにくいですが、I2C1が/dev/i2c-0になるので、一つずれてしまいます。。

(2011年10月28日 17:13), g-kihara wrote:
>> と記載されていますが、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 mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 


-- 
Koyo Takenoshita




armadillo メーリングリストの案内