嵌入式系統(tǒng)設(shè)計中的串行總線解碼測試
PicoTechnology胡為東
圖1所示為一個典型的嵌入式系統(tǒng),包含有微處理器、外圍接口、內(nèi)存、電源等主要部件。微處理器上有多種串行總線信號,如CAN、UART、LIN、SPI、I2C等,不同總線有不同的用途,如CAN信號主要用于微處理器與微處理器之間進(jìn)行互連,I2C、SPI等信號主要用于微處理器與外網(wǎng)接口進(jìn)行互連。
圖1 典型的嵌入式系統(tǒng)
圖2 串行總線數(shù)據(jù)的二進(jìn)制、十六進(jìn)制、數(shù)據(jù)信息包形式
串行通信中傳輸?shù)男盘柤礊榇锌偩€數(shù)據(jù)。圖2所示為NRZ編碼數(shù)據(jù),高電平代表二進(jìn)制數(shù)據(jù)“1”,低電平代表二進(jìn)制數(shù)據(jù)“0”,信號波形中傳輸?shù)氖且贿B串的“0”和“1”信息,這些數(shù)據(jù)信息也可以用十六進(jìn)制表示。對于特定的串行數(shù)據(jù)標(biāo)準(zhǔn),這些信息的組合代表了特定的數(shù)據(jù)信息包,每個數(shù)據(jù)信息包都具有不同的含義,如圖2中所示,Addr=50表示的是地址信息,Start=0表示數(shù)據(jù)傳輸?shù)拈_始。如果信號波形受到干擾或者編碼方式出現(xiàn)問題,都有可能導(dǎo)致信息發(fā)生錯誤,不能夠被接收端芯片進(jìn)行正確的識別,從而導(dǎo)致系統(tǒng)工作出現(xiàn)故障。因此,無論是嵌入式系統(tǒng)硬件工程師,還是嵌入式系統(tǒng)軟件工程師,都需要對波形信號進(jìn)行解碼分析,以驗證是否存在軟件或者硬件方面的錯誤,理解總線上所傳輸?shù)男畔⑶闆r。
許多工程師可能會通過手動測量的方法,從物理波形上獲得“0”、“1”信息,然后再通過計算獲取數(shù)據(jù)包信息,如圖3所示。這種方法不僅非??菰?、費時,而且極其容易出錯,特別是當(dāng)有多個連續(xù)“1”電平或有多個連續(xù)“0“電平時,工程師往往更難以準(zhǔn)確地測量出波形中所包含的高低電平信息。
圖3 手動方法獲取數(shù)據(jù)包信息
其實,目前大部分示波器都已經(jīng)具備對采集到的串行數(shù)據(jù)進(jìn)行解碼分析的功能,可以方便地將串行總線數(shù)據(jù)解碼成二進(jìn)制、十進(jìn)制、十六進(jìn)制、ASCII、數(shù)據(jù)幀信息,甚至直接顯示應(yīng)用層信息。
圖4所示為英國比克科技(Pico Technology)的PicoScopes對CAN總線信號的解碼示例。解碼信息在屏幕上分別以總線形式或者以表格形式顯示,不同的數(shù)據(jù)包信息會以不同的顏色進(jìn)行標(biāo)注,非常清晰。表格中的每一條解碼信息與模擬波形是關(guān)聯(lián)的,便于工程師查看某一個數(shù)據(jù)信息包所對應(yīng)的模擬波形信息。表格中的信息包也可以進(jìn)行相關(guān)的設(shè)置,工程師可以選擇查看數(shù)據(jù)信息包的全部內(nèi)容或感興趣的部分內(nèi)容,可以對數(shù)據(jù)信息包進(jìn)行搜索、過濾,也可以對數(shù)據(jù)信息包進(jìn)行保存等等。
圖4 PicoScopes對CAN信號的解碼
實際情況中,由于購買一臺示波器(尤其是進(jìn)口的設(shè)備)價格不菲,而且解碼軟件往往不是免費提供的,通常一個串行總線解碼軟件選項可能需要幾百上千美金,而嵌入式系統(tǒng)中總線數(shù)量很多,如果都要配齊解碼軟件,將會是一筆不小的開支。這也導(dǎo)致很多嵌入式系統(tǒng)工程師或者嵌入式系統(tǒng)專業(yè)的學(xué)生無法使用上先進(jìn)的工具來提升他們的工作或?qū)W習(xí)效率。英國比克科技(Pico Technology)的基于PC的便攜式示波器是適合于嵌入式系統(tǒng)總線解碼的高性價比方案,特別是所有的軟件(包括解碼軟件)都是標(biāo)準(zhǔn)配置,而且將來還可以免費升級使用最新的軟件和新增加的解碼選項,圖5所示為PicoScope 2000及其標(biāo)配的解碼軟件選項。