1. 程式人生 > >Arduino Wire.h(IIC/ I2C)語法

Arduino Wire.h(IIC/ I2C)語法

lowest none 數量 ack rst 版權 logs rsquo write

轉自:https://www.cnblogs.com/1996jiwei/p/6561681.html

本文轉自上面鏈接,版權請直接參考原鏈接。

最近在用I2C進行通信交流,發現有兩種方法的頭文件需要開頭宏出來(Wire.h 或 Eeprom.h),即使用了對於的源文件

所以需要了解對應庫文件的語法,首先感謝博主分享

由於時間問題先介紹wire.h 語法

此庫中包含

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()接受 Wire.requrstFrom(addtess,quantity) 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()

描述 向從機發送數據

形式 Wire.write(value) Wire.write(string) Wire.write(data, length)

參數 value :要發送的數值 string :字符組的指針 data :一個字節數組 length :傳輸的數量

例子

#include <Wire.h>  
  
byte val = 0;  
  
void setup()  
{  
   Wire.begin(); // join i2c bus  
}  
  
void loop()  
{  
   Wire.beginTransmission(44); // transmit to device #44 (0x2c)  
                               // device address is specified in datasheet  
   Wire.write(val);             // sends value byte    
   Wire.endTransmission();     // stop transmitting  
  
   val++;        // increment value  
   if(val == 64) // if reached 64th position (max)  
   {  
     val = 0;    // start over from lowest value  
   }  
   delay(500);  
}  

Wire.available()

描述 Wire.requestFrom()請求從機數據後,可以使用available接收

Wire.read()

描述 Wire.requestFrom()請求從機數據後,可以使用read接收

Wire.onReceive()

描述 從機接收主機發來的數據

Wire.onRequest()

描述 從機請求主機發送數據

Arduino Wire.h(IIC/ I2C)語法