此库中包含

  1. Wire.begin()
  2. Wire.requestFrom()
  3. Wire.beginTransmission()
  4. Wire.endTransmission()
  5. Wire.write()
  6. Wire.available()
  7. Wire.read()
  8. Wire.onReceive()
  9. Wire.onRequest()

Wire.begin() 和 Wire.begin(address)


描述
初始化wire库 ,并且加入到I2C网络,前者作为Master 或 Slaver,并且只能调用一次
参数**
address :7位的器件地址(可选),如果没有输入,则以Master的形式加入到I2C网络

Wire.requestFrom()


描述**
主设备请求从设备一个字节,这个字节可以被主设备用 read()或available()接受

  1. Wire.requrstFrom(addtess,quantity);
  2. Wire.requrstFrom(addtess,quantity,stop);

参数
addtess : 7位的器件地址
quantity : 请求得到的数量
stop :布尔形,‘1’ 则在请求结束后发送一个停止命令,并释放总线。‘0’则继续发送请求保持连接

返回**
字节形 ,从从机接受到的字节数目

Wire.beginTransmission(address)

描述
开始一次传输数据,发送一个I2C开始字符
参数
address : 器件的7位地址
返回
none

Wire.endTransmission()和Wire.endTransmission(stop)

描述
结束一个由beginTransmission()开始的并且由write()排列的从机的传输。在Arduino中 endTransmission()接受到一个布尔形变量,如果为1 则endTransmission()发送一个停止信息;如果为0 则发送开始信息

返回**
0 成功
1 数据溢出
2 发送addtess时从机接受到NACK
3 发送数据时接受到 NACK
4 其他错误

Wire.write()

描述
向从机发送数据

形式

  1. Wire.write(value);
  2. Wire.write(string);
  3. Wire.write(data, length);

参数
value :要发送的数值
string :字符组的指针
data :一个字节数组
length :传输的数量

例子**

  1. #include <Wire.h>
  2. byte val = 0;
  3. void setup()
  4. {
  5. Wire.begin(); // join i2c bus
  6. }
  7. void loop()
  8. {
  9. Wire.beginTransmission(98); // transmit to device #98 (0x62)
  10. // device address is specified in datasheet
  11. Wire.write(val); // sends value byte
  12. Wire.endTransmission(); // stop transmitting
  13. val++; // increment value
  14. if(val == 64) // if reached 64th position (max)
  15. {
  16. val = 0; // start over from lowest value
  17. }
  18. delay(500);
  19. }

Wire.available()

描述
Wire.requestFrom()请求从机数据后,可以使用available接收

Wire.read()

描述
Wire.requestFrom()请求从机数据后,可以使用read接收

Wire.onReceive()

描述
从机接收主机发来的数据

Wire.onRequest()

描述
从机请求主机发送数据