這裡介紹如何更改 Arduino 內建的 Wire 函式庫,提高 I2C 傳輸協定的 baud rate 到 400 KHz,增加資料傳輸的速度。
一般市面上的感測器(sensors)中,如果傳輸的資料量不大的話,大概都會使用 I2C 這種傳輸協定,而 Arduino 內建的 Wire 函式庫本身就有支援 I2C,這種傳輸協定的特色就是接線簡單,它只需要串列資料(SDA)及串列時脈(SCL)兩條線就可以進行資料的傳輸,再加上供應電源的 VCC 與 GND,總共只需要接四條線,不過缺點就是資料傳輸的速率比較慢一些。
I2C 有好幾種傳輸模式(也就是 baud rate),在標準上有 100KHz、400KHz、1MHz、3.4MHz、5MHz 等這幾種,而在 Arduino 的 Wire 函式庫中預設是使用最慢的 100KHz,如果您的感測器需要比較快的傳輸速度,可以稍微修改一下 Wire 的 twi.h 標頭檔,將 baud rate 提高以加速資料的傳輸。
twi.h 標頭檔在各種不同的系統中路徑有些小差異,Windows 中的路徑為
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\utility\twi.h
在 Mac OS X 中如果您是直接按照正常的安裝方式將 Arduino 拖進 Applications 中的話,路徑就是
/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/Wire/utility/twi.h
若在 Linux 系統之下,twi.h 的路徑則為 Arduino 的安裝路徑再加上
hardware/arduin