Wednesday, April 18, 2007

I2C Bus Arbitration

如果只有一個master,data corruption的情況比較難遇到
不過因為I2C是multi-master bus, 所以可能會有不只一個master的情形
假設有兩個MCU,CPU1發出START condition,
這時CPU2跟其他device會是SLAVE,不會有什麼問題發生。
但是如果CPU1發出START condition(SDA LOW, SCL LOW)時,
CPU2錯過這個訊息或是剛reset而誤以為bus目前沒人使用而拉HIGH時,
會發現line還是LOW的(CPU1還未釋放bus),
這時CPU2就會知道bus並非idle而BACK-OFF,
一直等到CPU1發出STOP condition,再去爭取主控權。

0 comments: