Re: i2c 10-bit address
|
||||
---|---|---|---|---|
資深會員
|
I2C specification
http://www.esacademy.com/faq/i2c/I2C_Bus_specification.pdf 14.2 Formats with 10-bit addresses 10bit address 的第一個byte ,會有一大堆device 回 a1 , 下一個byte 之後,address match 的 device 才會回 a2 重點在於 什麼是 ack 請參考 Fig.6 Data transfer on the I2C-bus. 所謂的 ack 就是當 master 將 scl 由high 變 low 之後,接收的 device 會將 sda 拉low 之後 master 將 scl 拉high 之後,能夠讀到 low 就表示 有 device 回 ack 了。 那在10 bit 的情況下, master 一樣scl 由high 變 low 這時候有許多 device 將 sda 拉 low ,對 master 而言,一樣是將 scl 拉high, 能夠讀到 sda low 就表示有 ack ,至於有多少人回,不重要,重點是有人回就行了 之後第二個byte 的 address ,就只會有一個 address match 的 device 回ack 其它 address 不一樣的,不會有所回應 所以你的問題不存在。只要時序控制好,master scl 拉 low 夠久 , 再拉 high ,讓device有足夠的時間將 sda 拉low 即可。
發表於: 2008/7/1 22:42
|
|||
|
Re: i2c 10-bit address
|
||||
---|---|---|---|---|
中級會員
|
i2c 10BIT 經過這幾天的測試,,,
單1個master和slave,通訊讀寫都OK,, 1個master對2個slave問題就來了,, 每個slave不管位址對不對都會產生中斷,, 所以當master要讀取ACK時就會發生問題,, 位址正確的A-slave還在處理資料,B-slave就已經回ACK,,, 導致master收到錯誤的資料,,, 而且,B-slave不回ACK又會把SCL拉LOW,以致佔住BUS,,, 所以,,,不知道要怎麼用,,,~~~@@@***&&& 救人喔~~
發表於: 2008/7/1 13:52
|
|||
|
Re: i2c 10-bit address
|
||||
---|---|---|---|---|
中級會員
|
我是工廠設備,有150個 slave,所以address就不夠了,我每個slave device都有加一個buffer,所以通訊上還OK,只是位址不夠用真的很麻煩
有別的方案,有什麼通訊協定,位址是可以多一點的呢? 謝謝!!
發表於: 2008/6/30 9:44
|
|||
|
Re: i2c 10-bit address
|
||||
---|---|---|---|---|
資深會員
|
一、SPEC 9.4.3.1 Addressing 已經說得很明白了,10BIT ADDRESS 要自己換
二、在收到 START BIT / STOP BIT 時會產生中斷 三、 I2C 的速度並不是單方面決定的,是要由 MASTER 和 SLAVE 來共同決定 今天 MASTER 能夠用 1MHZ 而 SLAVE 只有 100KHZ ,那整個BUS 系統必需以最慢的device為主 四、當 SSP module 以 高速操作時,就必需 clear,例如以 2Mhz 讀取 24lc02(如果 24lc02 能這麼快操作的話) 或模擬成支援 400khz 的slave device 五、沒看過有人會想不開去用 10bit address
發表於: 2008/6/30 9:43
|
|||
|
Re: i2c 10-bit address
|
||||
---|---|---|---|---|
版主
|
我的天啊 ! 你是怎樣設定 Device Address 的,怎會不夠用呢? I2C 可推不暸那麼多並在一起的元件。有興趣,提供一下你的方案。
發表於: 2008/6/27 19:08
|
|||
|
Re: i2c 10-bit address
|
||||
---|---|---|---|---|
中級會員
|
因為ADDRESS不夠用,
發表於: 2008/6/27 18:08
|
|||
|
Re: i2c 10-bit address
|
||||
---|---|---|---|---|
版主
|
不知是否孤漏寡聞了,我還沒有見過有使用 10-bit I2C 的例子。
I2C的速度與 7-bit or 10-bit 無關,與 SCK 的速度有關。 Slew rate 控制是要符合 SMBus 用的 (=0) , ㄧ般標準 I2C u要設為 1 (Standard SPeed) 沒有 10-bit 的範例,也沒看過,不知道你為什麼要用 10-bit I2C Address Mode?
發表於: 2008/6/27 17:02
|
|||
|
i2c 10-bit address
|
||||
---|---|---|---|---|
中級會員
|
使用PIC16F887 i2c 10-bit address master and slave的問題
有幾個地方不了解: 1, 8bit位址,MCU要等位址正確了才會設定SSPIF,再由該slave發出確認,但master發送10bit 2個byte的位址,MCU都會設定SSPIF,是否使用10bit位址,確認訊號要slave自己判斷address 2, SSPCON 的設定有什麼樣的差別?? 0111 = I2C Slave mode, 10-bit address 1111 = I2C Slave mode, 10-bit address with Start and Stop bit interrupts enabled 3, 使用10bit I2C bus速度是否不能到達400K 4. SSPSTAT 到底有什麼樣的差異,兩樣都設定沒有什麼差異!? In I2 C Master or Slave mode: 1 = Slew rate control disabled for standard speed mode (100 kHz and 1 MHz) 0 = Slew rate control enabled for high speed mode (400 kHz) 5, 有無I2C 10BIT master and slave source code,可以提供參考 謝謝大家!
發表於: 2008/6/27 10:36
|
|||
|