瀏覽單個文章
Mr. RC
Major Member
 

加入日期: Jan 2008
文章: 195
引用:
作者lifaung
1. 其實寫code, 認真點你就會想去考慮multi master的狀況(所以repeated start的應用現在比較主流, 因為可以佔據住bus, 避免其他裝置占用)
2. 考慮multi master的時候, 你就會想知道是否可以偵測系統上是否存在"別的"住客, 這時候招數就很多了
3. Multi master是符合規範的作法, 有興趣可以找找TI 和STM的文件(但是我知道不少工程師根本忘記這回事......)
4. 實際上的應用來說, multi master的狀況下, 有可能有晶片同時是master又是slave的, 這時候寫起來會很精彩(建議要搞硬體化啦, 不然光是一些異常判斷就要消耗掉很高的cycle數, 有機會會造成部分特別是台灣廠商的晶片異常)

附帶一提的是, 如果是multi master和非multi master的晶片一起運作, 有機會導致Bus Hang, 這時候你只好用GPIO模式敲到系統有回應為止, 這也是很有趣的除錯經驗
--
不過, 還是那句, 這種大小的晶片, 考慮到封裝的話...

那個....可以先問一下哪顆IC I2C可以同時當master or slave? 方便給料號參考一下嗎? 我只看過HW strap pin選擇interface為mater or slave, 還沒看過可以動態切換的。就算可以動態切換,是用什麼interface去acess register? 還是用GPIO + reset來做到選擇?

I2C multi master其實只是用法的問題,因為slave device只會收他自己address的資料,加上有開始、結束位元,所以可以判定一個master的行為是否結束。而在這之後由另一個master開始動作。簡單的說,可以利用時序來避開兩個master同時動作的狀況。這是你說的避開access collision做法嗎?
Multi master理論上看起來用法很簡單,但實際的系統面我自己的經驗來看,並沒有想像中那麼好達到。
現在系統例如sensor與driver偵測行為無時無刻都在動作,I2C上master一直在戳slave看slave狀態,這種狀態下就不適合。比較多的作法就是利用多組I2C bus去達到所要的目的。小弟以前經驗,Intel SMBus在datasheet就有特別說明那些device放在第二組SMBus比較好,那時放第一組device chip function fail....

對於你說的可以偵測I2C上的device, I2C error handling與利用GPIO敲醒兩個master碰撞的狀態,這點方便分享一下經驗嗎? 小弟硬體的,先前有大略K了一下PHILIPS, TI的I2C BUS SPEC, 所以還蠻好奇在非SPEC規範下的行為發生問題時要怎麼處理。希望兄臺分享~~
     
      
舊 2018-10-16, 11:24 PM #161
回應時引用此文章
Mr. RC離線中