3

USB-I2C アダプター ( http://www.robot-electronics.co.uk/htm/usb_i2c_tech.htm ) を使用して接続された温度センサーがあります。このデバイスを Linux コンピューター (suse10) に接続しました。dmesgと入力して見ました

usb 3-3: new full speed USB device using ohci_hcd and address 10
usb 3-3: new device found, idVendor=0403, idProduct=6001
usb 3-3: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-3: Product: FT232R USB UART
usb 3-3: Manufacturer: FTDI
usb 3-3: SerialNumber: A7007K93
usb 3-3: configuration #1 chosen from 1 choice
ftdi_sio 3-3:1.0: FTDI USB Serial Device converter detected
drivers/usb/serial/ftdi_sio.c: Detected FT232BM
usb 3-3: FTDI USB Serial Device converter now attached to ttyUSB0

しかし、現在の温度を読み取る方法がわかりません。

更新 1:実際には、I2C バスは最大 127 個のセンサーを接続できます。しかし、利用可能なセンサーのアドレスを一覧表示する方法がわかりません。

誰かヒントを教えてくれませんか?前もって感謝します

4

1 に答える 1

5

アダプタを使用すると、仮想シリアル ポート経由で I2C コマンドを送信できます。シリアル ポートが作成されました。それを開いてコマンドを送信する必要があります。コマンドは、接続しているデバイスに固有です。アイデアを得るために提供したリンクの例を参照してください。

データシートなしで正しい指示を出すことは困難です。ほとんどの場合、デバイスは 1 バイト アドレスを使用し、読み取り手順は次のとおりです。

[I2C_AD1] [Device I2C address + Read bit] [Device Address register] [Number of bytes to read]
0x55 0xXX 0x00 0x01

シリアル ポートに 4 バイトを送信する必要があります。最初のものは、USB から I2C へのコンバーターに読み取りコマンドを送信するように指示します。2 つ目は、I2C バスに接続されているデバイスのアドレスです。I2C デバイスは 7 ビット アドレス (0 ~ 127) を使用します。通常、これらは左に 1 ビットシフトして指定されます。したがって、これらのアドレスをスキャンする必要があります (0 から 127 まで反復し、左に 1 ビットシフトし、bit0 を 1 に設定します)。

([0x00 - 0x7F] << 1) | 1

データシートがないため、最後の 2 バイトについてはわかりません。ダミー値を使用してみることができます。デバイスがスキャンされた I2C アドレスに接続されている場合、存在しないレジスタを読み取ろうとすると NACK で応答する必要があります。実際のデバイスに対応しない I2C アドレスに送信された読み取りコマンドは無視する必要があります。

于 2009-10-13T08:12:29.697 に答える