1.IIC简介
IIC:Inter-Integrated Circuit(内部集成电路)
需要两个管脚:SDA、SCL
SPI协议:一个主设备对多个从设备,每增加一个从设备,需要增加一个端口CS*
特点:速度较快,1~100M
IIC协议:可以多对多,速度分类:100K 400K 3.4M 5M,传输速度没有SPI快,所以在利用显示屏显示数据时常用SPI通讯协议来提高刷新率。(TFT用SPI,LCD OLED使用IIC协议就可以满足需求。)
IIC使用时需要在SDA SCL上接上拉电阻,常用4.7K,电阻跟速度成反比,跟功耗成正比,也可以用10K的上拉电阻
2.IIC从设备地址查询
IIC总线最多可以挂多少个设备由IIC地址决定,8位地址,减去1位广播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127个地址, 所以理论上可以挂127个从器件。
#include <Arduino.h>
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(115200);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for (address = 1; address < 127; address++)
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address < 16)
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");
nDevices++;
}
else if (error == 4)
{
Serial.print("Unknow error at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000);
}