Re: 老鳥的問題

作者 jason680 於 2017年03月11日 07:49:27
這個I2C Address是一個容易出錯的問題...

原因在於I2C 7bits slave Address
(還有10bits slave address跟本問題不相關)

I2C 7bits slave Address在通信時是與 R/W(讀/寫)
合在一起,成為 8bits 送出.

因為只有1bits的差異,所以....
0xA0 1010000- (8bits, R/W以0看待)
0x50 1010000 (7bits,不含R/W)
都有人使用...
且不同的函數(副程式),也是有的要用0xA0,有的0x50
所以常常會出錯.

但有一點比較不會出錯
當你聽到/看到 slave address 是 0xA0
一般只是
0xA0 1010000- (8bits, R/W以0看待)

當你聽到/看到 slave address 是 0x50
可能是
0xA0 1010000- (8bits, R/W以0看待)
0x50 1010000 (7bits,不含R/W)
或者是
0x50 0101000- (8bits, R/W以0看待)
0x28 0101000 (7bits,不含R/W)


http://www.totalphase.com/support/art ... -bit-I2C-Slave-Addressing

...
Some vendors incorrectly provide 8-bit addresses which include the read/write bit.


以上是經驗談...
雖然 slave address 0xA0 的稱呼是錯的

註:7bits slave address範圍只在0x00~0x7F,
(且有效範圍在0x08~0x77)
那來的0xA0,但早期大家都是這樣來看待
所以到現在應該還是有一堆人搞不懂??
到底是0xA0? 還是0x50?
雖然是0x50才是對的,但如果廠商與其他人
都"告訴"你是0xA0,甚至規格書與電路圖上
都標成0xA0,你示波器也量出來,是0xA0(含R/W)...

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=2&topic_id=20337&post_id=74536