Contents ...
udn網路城邦
[Arduino 筆記] Arduino I2C 超頻 & I2C 外部擴充 EEPROM
2015/08/26 22:30
瀏覽4,233
迴響0
推薦0
引用0

碎碎念:

最近行程滿滿滿,而且星期天要去高第一宿舍入住了,沒什麼時間可以玩 Arduino 感覺可惜
昨天晚上終於找到了高第一電通系二年級的一位學長,這位學長非常厲害,電通系系排第一然後又成功轉到北科資工系 (還是正取一耶,窩操太強大了)


正文:

Arduino 如果沒特別去設定,預設的 I2C 速度是 100kHz
廢材的用 100kHz 跑 I2C 讀寫 EEPROM 光是要等讀寫動作完成就快等到發瘋了 =A=


在 Arduino UNO 右邊的一顆小 IC 就是 EEPROM,為 ATMEL 的 24C512
要提升 EEPROM 的讀寫速度首先就從 I2C 的速度下手嚕

使用 Arduino 的 I2C 要提升速度,先將 AVR 的 library 裡的 twi.h 中的 TWI_FREQ 常數改一下即可,twi.h 在
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\utility 可以被找到~

預設的 TWI_FREQ 長得這樣:

#ifndef TWI_FREQ

#define TWI_FREQ 100000L

#endif 

那如果要提升速度的話可以將 100000L 改成需要的速度,例如要將 100kHz 改成 400kHz 的話:

#ifndef TWI_FREQ

#define TWI_FREQ 400000L

#endif

只要把常數數值改成 400000L 就可以了,至於 L 的意思就是 long int

廢材的將速度改成 400kHz 後 EEPROM 的讀取速度真的有大幅提升,
然後也有偷偷將速度愈改愈高,發現 EEPROM 最快只能吃 610kHz,
這完全和 datasheet 裡寫最高能支援到 1MHz 根本天差地遠R,感覺被騙 XDD 

這邊有實測值,首先是 100kHz,這速度真的會讓人等到翻桌(平均花費7.5秒):


再來400kHz,EEPROM 讀取速度快很多(平均花費2.7秒):


之後偷偷將速度慢慢往上拉,發現極限是610kHz(平均花費2.3秒):

本篇的範例程式碼 on Github:
https://github.com/awei0905/Arduino-EEPROM-I2C


限會員,要發表迴響,請先登入