全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3078
推到 Plurk!
推到 Facebook!

I2C bus multi mast 問題

答題得分者是:暗黑破壞神
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-16 22:35:47 IP:218.171.xxx.xxx 未訂閱

各位大大

請問I2C bus multi mast 若同時有兩個以上的mast

要傳送資料,則SCL之間的仲裁,的動作是怎樣呢

謝謝

暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-21 03:10:53 IP:210.64.xxx.xxx 未訂閱
多利用 protocol 的方式吧。
比方說共有 A, B, C 而A, B 是你說的 master
那你要做所謂的指揮棒動作。
假設一開始。主在A。
A 發號完,要交棒給B的時候。要跟B說。喂。換你。
B 收到後。跟A 回一句”好,我接手”
然後A就不得主動發話。

但是當A喊出換你是。B有多久沒回應。A就要視做B不存在。繼續發話。
同樣的。B在交還控制棒給A時。也要用相同的機制。

這樣就可以做到你說的動作了。
基本上。這是用作業系統的觀念來解決問題。
詳細的動作可以參考這類書籍
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-23 10:43:53 IP:218.171.xxx.xxx 未訂閱

謝謝 暗黑破壞神 大大 的建議

用protocol 的方式的確是一個解決碰撞好方法

硬體方面也比較好做,不用考慮太多的狀況,反正同一時間只能有一 個mast主控

I2C bus可讓多個mast同時去搶bus,這樣的控制感覺很複雜,想破頭都想不出

它是如何去處理碰撞問題



版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-23 23:29:19 IP:219.70.xxx.xxx 未訂閱

你要不要去找找相關資料?

可以參考 I2C interface EEPROM 的做法. I2C 一為 sck(clock), 一為 sda(data)

每傳 1byte 會 ACK 1次.Start 後會先送 Device address, 多個 device 並在線上會自我判斷. 若第一個 byte(address byte) 送出的是 0, 只有 Device 0 會處理接下來的資料,其他全不管, 直到STOP.

EX: ATMEL AT24C128/256

------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-07-25 21:48:19 IP:218.171.xxx.xxx 未訂閱

===================引 用 文 章===================

你要不要去找找相關資料?

可以參考 I2C interface EEPROM 的做法. I2C 一為 sck(clock), 一為 sda(data)

每傳 1byte 會 ACK 1次.Start 後會先送 Device address, 多個 device 並在線上會自我判斷. 若第一個 byte(address byte) 送出的是 0, 只有 Device 0 會處理接下來的資料,其他全不管, 直到STOP.

EX: ATMEL AT24C128/256

謝謝㊣大大 的回覆

我有下載AT24C128這類的資料來參考

不過AT24C128這些在I2C bus裡是屬slave

關於I2C多mast,mast之間交互作用,在datasheet裡面並沒有講到

暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-07-26 23:53:36 IP:210.64.xxx.xxx 未訂閱
在整個䱉久上。只有一個是絕對的MASTER。
其它人上來時。都得在 listen 狀態。
這樣就不會有碰撞問題。

至於。同時搶LINE的問題。在OS上叫做死結。
就是看誰先沒耐性退出。那死結就打開了。
沒得預防。

所以。你只能用 time out 來放棄你對LINE的使用權。
這是最後的預防措施。

當然在OS裏。最後的動作就是要USER手動解決。
不然怎麼會有”請洽程式設計人員”的對話框出現。^^
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-07-27 00:27:49 IP:218.171.xxx.xxx 未訂閱


===================引 用 文 章===================
在整個䱉久上。只有一個是絕對的MASTER。
其它人上來時。都得在 listen 狀態。
這樣就不會有碰撞問題。

至於。同時搶LINE的問題。在OS上叫做死結。
就是看誰先沒耐性退出。那死結就打開了。
沒得預防。

所以。你只能用 time out 來放棄你對LINE的使用權。
這是最後的預防措施。

當然在OS裏。最後的動作就是要USER手動解決。
不然怎麼會有”請洽程式設計人員”的對話框出現。^^

原來如此,謝謝 暗黑破壞神 大大 的講解喔

系統時間:2024-05-21 4:42:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!