对于iic总线的使用,Arduino IDE自带了一个第三方库Wrie。下面介绍Wrie成员函数。
1、begin()
功能:初始化iic连接,并作为主机或者从机设备加入iic总线。
语法:
begin(address)
当没有填写参数时,设备会以主机模式加人IIC总线;
当填写了参数时,设备会以从机模式加入IIC总线,address可以设置为0~127中的任意地址。
begin()
begin(address) // 当没有填写参数时,设备会以主机模式加人IIC总线;当填写了参数时,设备会以从机模式加入IIC总线,address可以设置为0~127中的任意地址。
参数:address,一个7位的从机地址。如果没有该参数,设备将以主机形式加入iic总线
返回值:无。
2、requestFrom()
功能:
主机向从机发送数据请求信号。使用 requestFrom()
后,从机端可以使用 onRequest()
注册一个事件用以响应主机的请求;
主机可以通过available()
和 read()
函数读取这些数据。
语法:
Wire.requestFrom(address, quantity)
Wire.requestFrom(address, quantity, stop)
参数:
address,设备的地址。
quantity,请求的字节数。
stop,boolean型值,当其值为true时,将发送一个停止信息,释放IIC总线;
当为false时,将发送一个重新开始信息,并继续保持IIC总线的有效连接。
返回值:无。
3、beginTransmission()
功能:
设定传输数据到指定地址的从机设备。随后可以使用 write() 函数发送数据,并搭配endTransmission()函数结束数据传输。
语法:
wire.beginTransmission(address)
参数:address,要发送的从机的7位地址。
返回值:无。
4、endTransmission( )
功能:结束数据传输。
语法:
Wire.endTransmission()
Wire.endTransmission(stop)
参数:
stop, boolean型值,当其值为true时将发送一一个停止信息,释放IIC总线,当没有填写stop参数时,等效使用true;当为false时,将发送一个重新开始信息,并继续保持IIC总线的有效连接。
返回值:
byte型值,表示本次传输的状态,取值为:0,成功;1,数据过长,超出发送缓冲区;2,在地址发送时接收到NACK信号,3,在数据发送时接收到NACK信号;4,其他错误。
5、write()
功能:
当为主机状态时,主机将要发送的数据加入发送队列;当为从机状态时,从机发送数据至发起请求的主机。
语法:
Wire.write(value)
Wire.write(string)
Wire.write(data, length)
参数:
value,以单字节发送。
string,以一系列字节发送。
data,以字节形式发送数组。
l ength,传输的字节数。
返回值:byte型值,返回输入的字节数。
6、available( )
功能:
返回接收到的字节数。在主机中,一般用于主机发送数据请求后;在从机中,一般用于数据接收事件中。
语法:Wire. available()
参数:无。
返回值:可读字节数。
7、read( )
功能:
读取1B的数据。在主机中,当使用 requestFrom()
函数发送数据请求信号后,需要使用 read()
函数来获取数据;在从机中需要使用该函数读取主机发送来的数据。
语法:Wire.read()
参数:无。
返回值:读到的字节数据。
8、onReceive( )
功能:该函数可在从机端注册一个事件,当从机收到主机发送的数据时即被触发。
语法:Wire.onReceive(handler)
参数:
handler,当从机接收到数据时可被触发的事件。该事件带有一个int型参数(从主机读到的字节数)且没有返回值,如 void myHandler(int numBytes) 。
返回值:无。
9、 onRequest()
功能:注册一个事件,当从机接收到主机的数据请求时即被触发。
语法:Wire.onRequest(handler)
参数:
handler,可被触发的事件。该事件不带参数和返回值,如 voidmyHandler() 。
返回值:无。