PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
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:33 PM 被 Mr. RC 編輯.
舊 2018-10-16, 11:24 PM #161
回應時引用此文章
Mr. RC離線中  
lifaung
Senior Member
 

加入日期: Aug 2001
您的住址: 台中or桃園
文章: 1,108
引用:
作者Mr. RC
那個....可以先問一下哪顆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去達到所要...


1. multi master的裝置通常是一堆MCU群組比較常見, 你可以看看MSP430F5529的programming guide會有比較詳細的描述(也有實作硬體), 會搞I2C master而且可擴展的, 老實說, 除了CPLD和FPGA以外, 也只剩下MCU了, 所以MCU是這類搞法的大宗(STM和Ambicom最近都有滿省電的東西出現, 特別是STM的U系列)
2. 時序上根本無法避開, 只能夠承受碰撞以後, 決定優先權, 可以reference to 上面那個文件, 關鍵字是Arbitration, 通常自己寫的code會"禮讓"其他產生衝撞的方式, 你應該要假定其他裝置不會對衝撞產生反應(所以這時候要順便利用time out機制, 看看clock stretch多久以後你應該去當救世主release這個bus)
3. 還是那句, 看了datasheet並理解你就會知道該怎麼幹, 經常翻翻.h檔裡面有描述但是datasheet裡面根本沒提到的register也會對你有幫助

只要你會Arbitration, 基本上, Multi Master也不是太大的問題
但是現實層面來說, 台灣會搞Multi Master而且搞得正常的工程師, 我在業界數不到十個, 因為大多數都是直接撈人家寫好的來用

關於bus reset, 可以找找Analog device的文件

會有Multi Master通常就表示你的系統可能是個小型可擴展的系統, 所以A和B系統間傳輸可能會共用到這個multi master的架構
會搞到這程度, 軟體工程師是幹不來的, 通常是有硬體底子的軟體工程師, 或著是硬體工程師兼職軟體才會想到這招
這搞法可以有效節省系統的電力並減少wake up time, 但也同時需要硬體和軟體的搭配

誰搞過? HP某些不太正常用途機器有(不能說project name), Lenovo也有
 

此文章於 2018-10-17 01:30 AM 被 lifaung 編輯.
舊 2018-10-17, 01:20 AM #162
回應時引用此文章
lifaung離線中  
NTC_TW_IT
Regular Member
 

加入日期: Jul 2014
文章: 89
引用:
作者lifaung
先要提到, 還是那句, Multi master的I2C或是SM BUS是存在的, 而且在需要擴展的系統中經常實際的存在

SMBUS跟BMC掛在同一線路上很常見,主要應該是為了inband+oob混合應用(常見是FRU-EEPROM ACCESS)
如果不是PCH上SMBUS的部分同時有master跟slave角色同時存在,對BMC而言,應該掃不出現路上有其他controller吧?
相反的,其實SMBUS根本也不清楚BMC的i2c controller也在同一條線路上

引用:
作者lifaung
要找到新裝置被放上bus的話大致上有3個方式,
1. 輪尋已知可能位址(但是要考慮到現在的系統位址短的話是7bit, 長的是10bit, 輪循完成要很久, 而且位址也不是唯一, 如果是對付已知的系統應該可以用輪尋方式來做)
2. 偷聽線上有誰存在
3. 等待有人衝撞封包

1: 10bit很少見,一般都7bit為主,常見的100HZ來看,只是probe來說,應該一秒上下就可以搞定,所以應該還好吧?
slave address必須是唯一吧?
當預期發生衝突時,一般都是掛i2c expander,然後再由軟體/韌體去切通道不是?
2: 抓很乖的client就沒問題, 死不回你的就兩手一攤了~至於master,沒得玩
3: 運氣阿~基本上i2c又不是多穩定的東西,retry也司空見慣了

不過multi master device跟一個線路上有多個master是兩回事吧?
可以請教有更實際的做法,找出現路上有沒有被偷掛master?
小弟對i2c大概有一點點了解~偏軟體
舊 2018-10-18, 12:50 AM #163
回應時引用此文章
NTC_TW_IT離線中  
lifaung
Senior Member
 

加入日期: Aug 2001
您的住址: 台中or桃園
文章: 1,108
引用:
作者NTC_TW_IT
1: 10bit很少見,一般都7bit為主,常見的100HZ來看,只是probe來說,應該一秒上下就可以搞定,所以應該還好吧?
slave address必須是唯一吧?
當預期發生衝突時,一般都是掛i2c expander,然後再由軟體/韌體去切通道不是?
2: 抓很乖的client就沒問題, 死不回你的就兩手一攤了~至於master,沒得玩
3: 運氣阿~基本上i2c又不是多穩定的東西,retry也司空見慣了

不過multi master device跟一個線路上有多個master是兩回事吧?
可以請教有更實際的做法,找出現路上有沒有被偷掛master?
小弟對i2c大概有一點點了解~偏軟體


1. 商用系統至少都得保證要有400KHz的回應速度....有些picky的客戶會挑1MHz, Slave address是否唯一要看情況, 有可能某裝置存在有數個Slave address(但不應該重複, 我也曾經犯蠢搞過重複的狀況, 這時候系統還是可能運作正常, 但是slave裝置的回應可能會很微妙, 畢竟是open drain的架構, ACK照樣會回Orz); 設計者不應該預期他是否會發生衝突, 通常設計的時候就要考慮這問題, 所以error control的手段要準備, I2C expander? 要是有這個功夫, 還不如寫個code切回GPIO模式敲到bus release比較實在
2. 假設你預期你是唯一的master的情況下才能偷聽別的master發起的傳送, 通常這會是保安系統的一部分
3. I2C不穩定你應該回去問你的硬體工程師, 阻抗匹配和上拉電阻電流量有沒有正常; 如果都正常的情況下, 你應該回去看看你的code是不是有問題; 我個人寫的driver會對這些都做handle, 但是實際上, 根據一年多來log住的資訊, 會啟動error handling機制大概在0.1ppm以下的機率(用發起和接收的指令數量來計算, 如果你算的是byte數可能還要低很多)

Multi master就是指你的單條I2C或是SM Bus上存在多個master裝置, 還是那句, 這個是標準規範
只是這些master裝置可能同時也存在有slave 模式

其實這些玩法應該都很"正常", 你看看無線系統的封包碰撞的時候該怎麼處理, I2C就是秉持基本的精神處理就是了(但順序應該倒過來, 因為I2C比起那些WiFi或是BT, Zigbee出現的時間都要早)

被裝了多餘的master的情況下, 你只能"知道"而很難逮到他對應的slave address.....
但是當你知道的時候就應該記錄error log來讓管理者來找問題了
--
基本上, 你需要一個系統RTC, 以及各個master都應該要有自己的mailbox來提供被查詢何時發起甚麼活動的功能
但是基本上你也只能"知道"有異物存在在你的bus上而已
舊 2018-10-18, 02:18 AM #164
回應時引用此文章
lifaung離線中  
Hermit Crab
Golden Member
 

加入日期: Oct 2017
您的住址: 世紀公園
文章: 2,541
不了了之後的UPDATE...

才剛宣布投資台灣 美超微傳棄「中國製」零件

出版時間:2019/04/30 19:54

美國伺服器製造商美超微電腦(SUPERMICRO) 因應美國客戶對網路間諜風險感到憂心,
據傳已指示零組件供應商把生產線移出中國。

《彭博商業周刊》去年10月指控,美超微在中國生產的主機板被植入惡意晶片,
這些晶片會攻擊蘋果公司(Apple Inc.)和亞馬遜(amazon.com)等大型科技客戶,
但美超微強烈否認這項指控。不過,《日本經濟新聞》引述美超微主管說法報導,
美超微美國客戶出於安全疑慮,已要求美超微停止供應在中國生產的主機板。

除了要求供應商遷移生產線,美超微為降低知覺風險也正在擴建自家製造設施。
美超微伺服器系統大多由該公司組裝,但美超微把主機板生產外包給許多供應商。
美超微主管說:「我們必須提高自我依賴而非僅依賴這些外包夥伴,
過去這些夥伴生產線大多位於中國。」

美超微斥資20億元台幣在桃園興建的新工廠周一動土,
美超微正評估在台灣進一步投資100億元台幣。
另外,美超微也正在矽谷拓展事業版圖。(林文彬/綜合外電報導)
舊 2019-05-03, 01:45 PM #165
回應時引用此文章
Hermit Crab離線中  
healthfirst.
Golden Member
 
healthfirst.的大頭照
 

加入日期: Apr 2017
您的住址: 陣亡者的靈堂
文章: 3,124
引用:
作者Hermit Crab
美超微斥資20億元台幣在桃園興建的新工廠周一動土,
美超微正評估在台灣進一步投資100億元台幣。
另外,美超微也正在矽谷拓展事業版圖。(林文彬/綜合外電報導)

台灣因為假新聞撿到100億元投資
假新聞還是蠻好的嘛
__________________
舊 2019-05-03, 01:55 PM #166
回應時引用此文章
healthfirst.離線中  
7788168
Major Member
 

加入日期: Dec 2010
您的住址: Usa
文章: 211
引用:
作者healthfirst.
台灣因為假新聞撿到100億元投資
假新聞還是蠻好的嘛

去年還因為這件事被笑很大聲, 唸文組錯了嗎?
https://www.pcdvd.com.tw/showpost.p...3&postcount=125
引用:
作者冰的啦魔王大人
我就問你,你知道這是啥?
你是唸文組的還是發正唸組的?

引用:
作者小欣
那BIOS有沒有64+N隻腳?
USB有沒有64+N隻腳?
I2C 2支就夠了
SPI不要EN 3支就夠了....

文組別裝了

引用:
作者seiws
自己給的連結不是有說明嗎?


說明:
訊號調節 FILTER BANDPASS 3.5GHz WIMAX SMD

連什麼是IC 什麼是 Filters 都沒搞清楚, 還要討論 CPU ALU IO 這麼複雜的東西嗎?
舊 2019-05-03, 06:58 PM #167
回應時引用此文章
7788168離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是06:45 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2024。