[转载]Arduino Wire库的使用
(2016-07-28 23:14:31)
标签:
转载 |
分类: Arduino |
I2C总线也是主从方式通讯,I2C总线允许连接多个微控制器,显然不能同时存在两个主器件,先控制总线的器件成为主器件,这就是总线竞争。在竞争过程中数据不会被破坏、丢失。数据只能在主、从器件中传送,结束后,主、从器件将释放总线,退出主、从器件角色。
首先,arduino中的Wire库主要包含以下函数:
1、Wire.begin() 和 Wire.begin(address)
描述
初始化wire库 ,并且加入到I2C网络,作为主机 或 从机,并且只能调用一次。
参数
address :7位的器件地址(可选),有地址则为从机地址,没有地址,则为主机
2、Wire.requestFrom()
描述
主设备 请求 从设备 的一个字节,这个字节可以被主设备用 read()或available()接收。
Wire.requrstFrom(addtess,quantity)
Wire.requrstFrom(addtess,quantity,stop)
参数
addtess : 7位的器件地址
quantity : 请求得到的数量
stop :布尔形,‘1’ 则在请求结束后发送一个停止命令,并释放总线。‘0’则继续发送请求保持连接。
返回
字节形 ,即 主设备 从 从设备 上接收到的字节数目
3
描述
开始一次传输数据,开始给从机发送一个地址
参数
address : 器件的7位地址
返回值 无
4、
描述
结束一个由beginTransmission()开始的并且由write()排列的从机的传输。在Arduino中 endTransmission()接受到
一个布尔形变量,如果为1 则endTransmission()发送一个停止信息;如果为0 则发送开始信息
返回值
0 成功
1 数据溢出
2 发送addtess时 从机
接收到NACK
3 发送数据时接受到
NACK
4 其他错误
5、Wire.write()
描述
向从机发送数据
形式
Wire.write(value)
Wire.write(string)
Wire.write(data, length)
参数
value :要发送的数值
string :字符组的指针
data :一个字节数组
length :传输的数量
6、
7、Wire.receive()//接收数据
8、
9、
e.g
主机代码:(从编译器串口监视器发送数字从编译器串口监视器发送数字1,2,3,4来控制从机的LED亮与灭亮与灭))
#include
void
loop()
{
从机A代码代码:(接收到主机发送的接收到主机发送的1点亮LEDLED,,接收到0关掉LEDLED))
void receiveEvent(int howMany)

加载中…