DebianでI2Cを有効にする - i2cDetectはデバイスを表示しません。

DebianでI2Cを有効にする - i2cDetectはデバイスを表示しません。

USB-I2Cインターフェースを使用して、ラップトップがSRF02センサーと通信できるようにします。私のラップトップにはDebian Jessieが動作しています。

質問:

実行中は、sudo i2cdetect -y 0どのデバイスもまったく表示されません。これはポート1と同じですが、それ以外は多くのデバイスがランダムな場所に表示されます(たとえば、ポート4にはほぼ完全なテーブルが表示されます)。 EX70は、デバイスのデフォルト位置である3つ未満のポートを占有しません。

起動時にi2c-devを自動的にロードしようとしましたが、問題は解決しません。モジュール文書にはFTDI VCPドライバーが必要であることが示されていますが、これはLinuxカーネルに含める必要があります。

私はまったく同じデバイスと設定を使用してWindows 8を実行しているコンピュータからデータを取得できたので、これはソフトウェアの問題であると確信しています。

これに関する投稿はたくさんありましたが、どちらも特にRaspberry Piに基づいており、USBの代わりにRaspbianとGPIOピンを使用しています。

編集:以下は、デバイスを接続した後のdmesg出力へのリンクです。ログが大きすぎてここに投稿できません。 :P http://pasted.co/38dc9292

よろしくお願いします。

最高

ベストアンサー1

関連する行はdmesg次のとおりです。

[  518.172735] usb 1-3: new full-speed USB device number 4 using xhci_hcd
[  518.306677] usb 1-3: New USB device found, idVendor=0403, idProduct=6001
[  518.306686] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  518.306689] usb 1-3: Product: FT232R USB UART
[  518.306692] usb 1-3: Manufacturer: FTDI
[  518.306695] usb 1-3: SerialNumber: AK04P01W
[  518.309382] ftdi_sio 1-3:1.0: FTDI USB Serial Device converter detected
[  518.309442] usb 1-3: Detected FT232RL
[  518.309445] usb 1-3: Number of endpoints 2
[  518.309448] usb 1-3: Endpoint 1 MaxPacketSize 64
[  518.309450] usb 1-3: Endpoint 2 MaxPacketSize 64
[  518.309453] usb 1-3: Setting MaxPacketSize 64
[  518.309771] usb 1-3: FTDI USB Serial Device converter now attached to ttyUSB0

これは、デバイスが接続されたときに何が起こったかに応じて、タイムスタンプに基づいて一緒に属し、接続がないという開始メッセージの後に十分に長い間発生するため、関連する行です。

ご覧のように、新しいUSBデバイスが検出されると、デバイスの詳細を取得し、それに応答してftdi_sio特別なデバイスファイルを提供するモジュールがロードされます/dev/ttyUSB0。カーネルドライバがロードされていない場合は、grepベンダー/製品の組み合わせ(0403:6001、にも表示されていますlsusb)を検索(Googleやカーネルソースを使用)など、デバイス用のカーネルドライバを参照できます。

他の回答に記載されているドライバはbcm2708まったく関係ありません。これはラップトップではなく、Raspberry PiのようなI2Cバス用のドライバです。

しかし、私たちはすでにシリアルインターフェイスのみを提供しており、カーネルI2Cインフラストラクチャへの接続は提供していない動作するドライバを持っています。だからlmsensorsちょっとi2detect待ってください。このうち何も機能しません(追加のドライバを作成または見つけない限り)。

これウェブサイトあなたのコメントで述べたUSB-I2Cコンバータは、シリアルリンクを介して使用されるプロトコルを説明します。つまり、一連のバイトを送信し、オプションで応答として一連のバイトを受け取ります。コマンドの順序は次のとおりです。

<command-byte> <address> <register (0-2 bytes)> <data byte count (0-1 bytes)> <write data>

そしてウェブページSRF 02センサーチップのレジスタがどのように見えるかを説明します。読み取ることができるレジスタ6個、書き込み可能なコマンドレジスタ1個。

たとえば、01レジ​​スタからバイトを読み取る必要があるバージョンを読み取るには、デフォルトのチップアドレスがあり、LSBはR / Wビットであるため、00asアドレスを使用でき、USB-I2Cに必要なコマンドを使用できます。アダプタは。したがって、シリアルに送信されるシーケンス全体は、バイトを応答として読み取ることです。E0E15555 E1 00 01

コマンドラインからこれを行うことができます。

$ printf '\x55\xE1\x00\x01' > /dev/ttyUSB0
$ hexdump -n 1 -e '"%02x \n"' < /dev/ttyUSB0

あるいは、/dev/ttyUSB0目的の言語で開き、その言語で提供されるコマンドを使用してバイトを読み書きできます。

おすすめ記事