1

Arduino EEPROM に関しては、特定の EEPROM デバイスへの書き込みおよび読み取り時に、次の形式の送信を要求します。

Wire.beginTransmission(ADDR);
Wire.write(highADDR);
Wire.write(lowADDR);
Wire.write(data);
Wire.endTransmission();

上位アドレスと下位アドレスの意味は何ですか? アドレス 4 のバイトに書き込むように指示できないのはなぜですか。ハイとローを証明する必要があるのはなぜですか?

4

1 に答える 1

1

あなたはI2Cを使用しているように見えます。私はその仮定を立て、それに基づいて答えを出します. おそらく、使用している EEPROM を明確にする必要があります。

I2C の仕組みは、同じ I2C バス上で 1 つのマスター (Arduino) が複数のスレーブ (たとえば、EEPROM) と通信できるようにすることです。複数のスレーブを同じバスに接続できるため、I2C プロトコルでは通信相手のスレーブ デバイスを指定する必要があります。これが Wire.beginTransmission(ADDR) の機能です。通信を開始するデバイスを選択しています。EEPROM と通信したい場合は、EEPROM のアドレスを送信する必要があります (EEPROM データシートでアドレスを見つけることができるはずです)。

次に、アクセスしたい EEPROM 内のメモリ位置を指定する必要があります。これは、highADDR と lowADDR の 2 バイトを使用して行われます。たとえば、アドレス 0x01AB にアクセスする場合は、highADDR を 0x01 に、lowADDR を 0xAB に設定します。

残りはかなり単純です。データを送信してから、送信を終了します。

要約する:

通信するデバイスを選択 (EEPROM を選択)

Wire.beginTransmission(ADDR);

書き込みたいメモリアドレスをEEPROMに伝えます

Wire.write(highADDR);      // Send the most significant address bits
Wire.write(lowADDR);       // Send the least significant address bits

書き込むデータを送信します。

Wire.write(data);

送信を終了する

Wire.endTransmission();

I2C プロトコルの仕組みについて詳しく読むことを強くお勧めします。http://en.wikipedia.org/wiki/I%C2%B2C#Message_protocols

于 2014-06-08T01:35:18.580 に答える