您现在的位置是:网站首页> 硬件

I2C通讯 ARDUINO的I2C通信详解

  • 硬件
  • 2021-03-28
  • 854人已阅读
摘要

I2C是非常普通的通信方式,Arduino单片机集成了I2C库,可以直接调用几个函数实现I2C通信。Arduino MEGA2560开发板I2C接口,在班上对应的20--SDA 21--SCL

Arduino的I2C库是Wire.h。常用库函数如下:

  Wire.beginTransmission(Addr);

  Wire.write(data);

  Wire.endTransmission(void);

  Wire.requestFrom(Addr, num);

  Wire.available();

  Wire.read()。

  每个数据发出后,都必须有应答,只有在等到应答后,才能发出下一个数据或者指令。

  下面是一段代码:

  Wire.beginTransmission(0x01);

  Wire.write(0xAA);

  如果0x01发出后I2C器件没有应答,那么0xAA就不能发送,这时候用示波器或者逻辑分析仪看,就只能看到发出了Start信号和数据0x01。

  Wire.beginTransmission(Addr)只发送起始信号和I2C地址,Addr是I2C总线地址。

  Wire.write(data)只发送数据,data就是希望发送的数据,而且是发一次,地址就自动加一。

  Wire.endTransmission(void)发送停止信号。

  Wire.requestFrom(Addr, num)向已知地址器件获取连续num个数据,这时候需要注意,数据只是存起来了,并没有真正返回。

  Wire.read()就是用来读回前面那些存起来的数据,而且是读一次地址自动加一。

  Wire.available()则返回已经存了多少个数据。



上一篇:Ardunio PWM频率库

下一篇:Ardunio 中断

Top