邏輯分析儀為I2C信號(hào)量測(cè)提供完整方案
I2C 匯流排在電子產(chǎn)品中,很常見(jiàn)的一種匯流排,它的好處就是只需要兩條線,就可以并聯(lián)很多 IC 進(jìn)行控制。但因?yàn)槎嘌b置(Device) 及開(kāi)路集極(Open drain)的架構(gòu),常使I2C 匯流排除錯(cuò)工作變得困難. 本文將提出一些實(shí)際的應(yīng)用案例,并使用邏輯分析儀(Logic Analyzer)之各項(xiàng)功能,來(lái)協(xié)助排除問(wèn)題。
本文引用地址:http://cafeforensic.com/article/193693.htm使用轉(zhuǎn)態(tài)儲(chǔ)存進(jìn)行長(zhǎng)時(shí)間資料紀(jì)錄
在 I2C匯流排訊號(hào)發(fā)生異常時(shí),常無(wú)法明確的知道是哪個(gè)裝置出錯(cuò)。因此,無(wú)法用設(shè)定觸發(fā)的方式來(lái)做問(wèn)題點(diǎn)的定位。使用者多半會(huì)考慮先把所有的波形都擷取回來(lái)再慢慢分析。但邏輯分析儀基本是以采樣的方式擷取訊號(hào),不管訊號(hào)有沒(méi)有改變,都會(huì)隨著采樣擷取動(dòng)作的進(jìn)行,而不斷地消耗記憶體。而轉(zhuǎn)態(tài)儲(chǔ)存(Transitional Storage)功能是一種波形資料的儲(chǔ)存模式,只在波形轉(zhuǎn)態(tài)(Transition)的時(shí)候才將波形資料儲(chǔ)存起來(lái),這樣當(dāng)資料不轉(zhuǎn)態(tài)時(shí),邏輯分析儀就可以持續(xù)的等候且不存任何資料到記憶體內(nèi)。相對(duì)于每個(gè)采樣點(diǎn)都存一次資料的作法,轉(zhuǎn)態(tài)儲(chǔ)存將可以記下更多的資料。由于I2C 的傳輸速度如下表一,整體來(lái)看速度都不會(huì)很快。 因此會(huì)非常地適合使用轉(zhuǎn)態(tài)儲(chǔ)存,來(lái)拉長(zhǎng)可儲(chǔ)存的時(shí)間。
表一I2C 個(gè)模式傳輸速度。
利用I2C觸發(fā)來(lái)定位問(wèn)題點(diǎn)
舉例來(lái)說(shuō),電路板上I2C 匯流排連接了裝置 A 與裝置 B,但在長(zhǎng)時(shí)間燒機(jī)測(cè)試(Burn-In Test)的過(guò)程中,I2C 匯流排發(fā)生錯(cuò)誤的問(wèn)題。已知的現(xiàn)象是當(dāng)發(fā)生錯(cuò)誤時(shí),I2C 匯流排上會(huì)出現(xiàn)無(wú)效的位址(Address),并且燒機(jī)的過(guò)程中會(huì)出現(xiàn)數(shù)次。 如何能利用邏輯分析儀來(lái)做做問(wèn)題厘清? 這樣的問(wèn)題,若想把所有的波形資料都抓下來(lái),其實(shí)是有困難的。 因?yàn)槌霈F(xiàn)問(wèn)題的時(shí)間點(diǎn)及次數(shù)都很不一定,且長(zhǎng)達(dá)好幾天的燒機(jī)測(cè)試也使得把所有的資料都 Log 下來(lái)顯得不切實(shí)際,又必須在大量的資料中尋找問(wèn)題點(diǎn)。也是相當(dāng)費(fèi)時(shí)費(fèi)力的工作。
因此,可采用邏輯分析儀中的I2C 觸發(fā)功能來(lái)進(jìn)行定位。首先,先把裝置 A(Addr:12h) 與裝置 B (Addr:34h)的有效位址輸入。 然后讓邏輯分析儀找出不符合上述兩個(gè)條件的地址。實(shí)際設(shè)定如圖一所示。
圖一 利用I2C 觸發(fā)功能進(jìn)行無(wú)效位址定位。
然后再搭配邏輯分析儀擷取波形后自動(dòng)儲(chǔ)存功能,就很在燒機(jī)的過(guò)程中,每次觸發(fā)成功就存檔,之后再檢視存檔波形之觸發(fā)點(diǎn)即可。善用I2C 觸發(fā)功能可以快速的協(xié)助波形定位,會(huì)比資料抓得多來(lái)的有意義很多。同樣的,善用整個(gè)使用I2C 參數(shù)來(lái)做為觸發(fā)條件,例如地址符合或資料符合或多階式的觸發(fā)來(lái)指定更精準(zhǔn)的觸發(fā),這些都是單純使用邊緣觸發(fā)(Edge Trigger)所無(wú)法做到的功能。
I2C 觸發(fā)檢查時(shí)間違反(Timing violation)的問(wèn)題點(diǎn)
I2C 匯流排會(huì)規(guī)范 SCL與 SDA 必須按規(guī)定時(shí)間送出,不然整個(gè)匯流排的行為將會(huì)發(fā)生錯(cuò)誤,導(dǎo)致通訊失敗。有時(shí)候?qū)嶋H波形的時(shí)間已經(jīng)超出規(guī)格,但卻無(wú)法在開(kāi)發(fā)及驗(yàn)證被挑出來(lái),因?yàn)橛袝r(shí)候時(shí)間誤差都不大,使得產(chǎn)品仍可正常使用。 但常常問(wèn)題會(huì)流到量產(chǎn)時(shí)才爆發(fā)出來(lái),造成量產(chǎn)不良率攀升。甚至到使用者手上才出現(xiàn)問(wèn)題。這都是產(chǎn)品開(kāi)發(fā)所不樂(lè)于見(jiàn)到的結(jié)果。
以圖二所示,可啟用邏輯分析儀之時(shí)間違反檢查當(dāng)作觸發(fā)條件,設(shè)定所需檢查的時(shí)間值,再讓邏輯分析儀協(xié)助挑出時(shí)間違反的地方。邏輯分析儀系統(tǒng)采用 200MHz 采樣率來(lái)進(jìn)行采樣。 因此,可檢查之最小時(shí)間寬度為 5ns。這樣,就可以輔助使用者,利用觸發(fā)來(lái)做時(shí)間違反檢查。非常適合于燒機(jī)測(cè)試時(shí),用這個(gè)方式檢測(cè)I2C 匯流排的訊號(hào)時(shí)間。
圖二 時(shí)間違反觸發(fā)功能之設(shè)定畫面。
采用舒密特觸發(fā)電路架構(gòu)擷取品質(zhì)良好的I2C 訊號(hào)
使用邏輯分析儀進(jìn)行量測(cè)時(shí),常會(huì)看到一些雜訊。但使用示波器看的時(shí)候似乎又沒(méi)有,是甚么原因? 要如何排除? 這是因?yàn)镮2C 匯流排是開(kāi)路集極架構(gòu),匯流排上又同時(shí)接了很多裝置,還有一些靜電防護(hù)零件等等??赡苁沟肐2C波形不見(jiàn)得會(huì)是很好的方波。 常見(jiàn)的I2C 波形如圖三、四所示。但這樣的波形在I2C 規(guī)范里面,是正??山邮艿?,并沒(méi)有問(wèn)題。
圖三 常見(jiàn)的I2C 匯流排訊號(hào)(一), 上方為 SCL, 下方為 SDA。
圖四 常見(jiàn)的I2C 匯流排訊號(hào)(二), SDA 訊號(hào)。
也因?yàn)檫@樣,一般I2C晶片,都會(huì)規(guī)范在訊號(hào)輸入腳位必須要有舒密特觸發(fā)(Schmitt trigger)電路,以便于完善的解決訊號(hào)輸入后能正確的處理邏輯訊號(hào)。為此,邏輯分析儀也可循此法做較完善的訊號(hào)解擷取動(dòng)作。圖五為一般邏輯分析儀,此用單一個(gè)觸發(fā)準(zhǔn)位的方式來(lái)做邏輯0與邏輯1 的區(qū)分。這樣的作法,很容易在待測(cè)訊號(hào)經(jīng)過(guò)觸發(fā)準(zhǔn)位(Threshold)附近時(shí),產(chǎn)生很多不可預(yù)期的邏輯變化。 使得擷取出來(lái)的訊號(hào)像是雜訊或彈跳的現(xiàn)象。
圖五 邏輯分析儀采單一觸發(fā)準(zhǔn)位模式示意圖。
若采用低通濾波(Low-pass filter)的做法,是可以濾除雜訊,但又使得可能造成線路問(wèn)題的高頻雜訊也同時(shí)被濾掉了。無(wú)論如何,這都不是適當(dāng)?shù)慕鉀Q方案。
評(píng)論