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 的工作方式是您可以让一个主机(您的 Arduino)与同一 I2C 总线上的多个从机(例如您的 EEPROM)通信。由于可以在同一总线上连接多个从设备,因此 I2C 协议要求您指定要与之通信的从设备。这就是 Wire.beginTransmission(ADDR) 所做的。它正在选择要与哪个设备启动通信。如果您想与您的 EEPROM 通信,您需要发送您的 EEPROM 的地址(您应该能够在 EEPROM 数据表中找到该地址)。

接下来,您需要在 EEPROM 中指定要访问的内存位置。这是使用两个字节 highADDR 和 lowADDR 完成的。例如,如果您想访问地址 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 回答