本期應用指南摘要
混合訊號示波器具有數模混合測量功能。本文以
MSO6B系列示波器
為主要測量儀器,
從UART協議入手,介紹了匯流排解碼的基本概念和示波器具體操作方法
。文中還介紹了I2C和SPI協議,並對比手動解析和示波器自動解碼的過程和結果,充分展現了現代化混合訊號示波器的混合測量能力。對於訊號失真的場景,從數字和模擬訊號2個角度,進一步闡述了混合除錯的思想。
以下影片先為大家簡單介紹
MSO6B示波器的測試功能
。(友情提示:本期乾貨內容較多,採用文字與影片結合方式,建議以先影片後文字的順序,耐心觀看學習喔~)
本文內容主要包括:
■
1。 使用示波器測量混合訊號
■
2。 匯流排解碼快速上手
2。1 UART協議解析
2。2 示波器設定
2。3 示波器解碼結果
■
3。 常見協議的解碼
3。1 I2C協議
3。2 SPI協議
■
4。 混合除錯
■
5。 總結
■
參考文獻
1. 使用示波器測量混合訊號
泰克的MSO系列示波器,是混合訊號示波器,顧名思義,除了具有良好的模擬訊號捕捉還原能力外,還具有數字訊號採集和分析能力。
因此MSO系列示波器,不僅可以作為一臺專業的高速邏輯分析儀,還能同步處理模擬和數字訊號,實現數模混合測量功能。
以MSO68B示波器為例,它具有8個通道的輸入。對於每個通道而言,它不僅僅是可以輸入1路模擬訊號的傳統模擬通道,而是名為FlexChannel的數模混合通道。對於每一個FlexChannel,可以配置為1個模擬輸入,或者8個數字輸入。
因此8個FlexChannel,可以最多配置為8乘以8共64個數字通道。
進一步的,得益於泰克自研的ASIC晶片,這些邏輯通道的取樣率最高可以達到模擬取樣相同的速率,例如25GSa/s,完全可以勝任高速邏輯訊號的分析。
以觀察一個數字模擬轉換器(DAC)的輸入和輸出為例。我們的目標是同時看到8個數字輸入和1個模擬輸出訊號,這對於軟硬體設計、除錯和驗證都是非常有用的。為了將數字訊號輸入示波器,我們需要使用TLP058邏輯探頭,每個邏輯探頭佔用一個FlexChannel,提供8個數字輸入。出於演示的目的,我們在通道1和2上各插入一個TLP058邏輯探頭,示波器上顯示了16路數字輸入,其中C1通道的8路數字輸入連線到DAC的數字輸入。剩餘6個FlexChannel依然作為模擬訊號的輸入,我們在通道3上插入一個標配無源探頭(TPP1000),連線到DAC的模擬輸出。
硬體連線全貌如圖1所示。
圖1。 示波器測量混合訊號的硬體連線
簡單設定水平、垂直通道引數和觸發後,就可以在螢幕上觀察到數字和模擬訊號了,
如圖2所示,示波器螢幕的波形顯示分成了多個部分,數字波形、模擬波形都可以同屏展示。
這裡的模擬訊號是一個正弦波,因此簡單使用模擬訊號的上升沿進行觸發,實際上觸發也可以在全部通道上進行按需靈活設定。
圖2。 混合訊號測量結果
細心的朋友還可以看到圖2中添加了一條匯流排,把8個數字通道作為一個並行輸入,從而解碼出具體數值。
為了觀察匯流排的細節,可以使用示波器的縮放功能,如圖3所示。
這裡數字和模擬訊號會同步放大,總線上的資料也可以看清了,充分發揮了大螢幕的優勢。
圖3。 使用縮放功能檢視混合訊號的細節
本節展示了一個典型的混合訊號的測量和分析過程。下文將重點講解數字訊號的分析方法,特別是匯流排解碼相關的知識和操作方法。
2. 匯流排解碼快速上手
這裡以常見的串列埠(UART)訊號為例,介紹使用混合訊號示波器進行匯流排解碼的基本流程。
2。1
UART協議解析
通用非同步收發傳輸器(UART)也就是大家常見的串列埠,大部分帶微控制器的嵌入式裝置都可以支援。一個完整的UART一般至少需要3根線,除了地線(GND)外,一根線用來接收(RX)、一根線用來發送(TX),實現資料雙向傳輸。
UART的資料幀如圖4所示,包含起始位,資料位和停止位。
圖4。 UART資料幀[1]
一個UART波形的示例如圖5所示。
圖中UART訊號線空閒為高電平,起始位透過拉低電平實現。之後透過高低電平變化來傳輸8個bits的資料。由於UART協議非常簡單,我們手動就可以把資料解碼出來。圖中左邊的資料直譯為10100010(LSB在左),通常記錄時會習慣先寫MSB,因此逆序為01000101(MSB在左),轉換為常用的16進位制就是0x45。同理,右邊的資料解碼的結果是0x6E。
圖5。 UART波形和手動解析示例
2。2
示波器設定
本節描述如何用示波器捕捉UART波形,並使用示波器自帶的匯流排解碼功能完成自動解碼。以Raspberry Pi Pico 的UART作為例子,在控制器裡燒錄一個往UART0傳送資料的程式,透過示波器捕捉並解碼。
圖6。 Raspberry Pi Pico的UART[2]
如圖6所示,Raspberry Pi Pico的UART0的TX線與GP0複用
,在1號引腳上。因此1號引腳的訊號需要輸入示波器。示波器的垂直系統可以在某個通道連上邏輯探頭,當然這是一個普通的共模訊號,使用無源探頭直接捕捉也是可以的。如果使用邏輯探頭,需要注意門限電壓的設定,Raspberry Pi Pico的低電平為0V,高電平為3。3V,門限電壓設為1。6V左右。水平系統方面,已知波特率是115200 bps,每個bit的傳輸時間約為8。7 us,可先設為100us /div,甚至1ms /div,等觀察到訊號後再做微調。
觸發系統的設定和模擬訊號有所不同,我們可以設定為專用的匯流排觸發。
以演示訊號為例,首先新增匯流排,設定如圖7所示。
UART的一個常見物理層介面是RS-232,因此示波器裡的匯流排型別選擇“RS-232”。位速率即波特率,常用的有9600、115200bps等,根據實際情況設定。資料位數常用的是8位,“極性”用來設定數字“1”用高電平或低電平表示,此例中是高電平表示1。解碼格式不影響解碼結果,只是顯示的格式,這裡選“十六進位制”。其它選項根據實際情況設定,或者預設即可。匯流排設定完成後,就可以用匯流排觸發了,我們選擇“開始”,即匯流排開始資料傳輸的位置,這樣只要總線上有資料傳輸,就會被觸發。
圖7。 UART匯流排設定
2。3
示波器解碼結果
如果設定準確,
波形檢視的總線上就會出現實時的解碼結果,如圖8所示。
其中0x45和0x6E的解碼結果,和前文手動解析的結果是一致的。
圖8。 UART匯流排解碼結果
接下來更換為邏輯探頭,來檢視Raspberry Pi Pico的UART輸出,如圖9所示。
這裡做了2個小的改動:一是打開了匯流排解碼結果的表格(點選介面右邊的“結果表”),二是把解碼結果用字元形式顯示。我們可以從結果表或者波形檢視中發現,Raspberry Pi Pico輸出的是一個字串“Hello2021”。並且結果表和波形檢視是聯動的,點選某個資料,就會跳轉到波形的對應位置,可以快捷查詢資料,並放大對應的波形,操作十分方便。
圖9。 UART解碼結果的進階展示
此外,匯流排觸發也有多種選擇,例如可以選擇透過特定的資料去觸發,這樣就實現了示波器自動找資料的功能。
3. 常見協議的解碼
3。1
I²C協議
I²C是一種積體電路匯流排,硬體連線主要有2根線,一根是時鐘(SCLK),一根是資料(SDA)。
協議標準上規定了在時鐘高電平取樣,因此解碼比較固定,但資料格式需要區分地址、讀寫標誌和資料,在一個位元組內還要留意起始條件(S)、應答(ACK)和停止條件(P),如圖10所示。
根據電平可以解析出二進位制資料流為“10100001 00011000”。根據標準,前7位是地址,轉換為16進位制是0x50,讀寫標誌是1,表示“讀”,記為“R”,之後是資料,轉換為16進位制是0x18。
圖10。 I²C波形和手動解析示例(協議格式來自[3])
使用示波器匯流排解碼的設定也比較固定,如圖11所示。
只要指定好時鐘和資料的來源和門限電壓就可以了。
圖11。 I²C匯流排設定
解碼結果如圖12所示,可以驗證前2個位元組與手動解析的結果是相同的。
圖12。 I²C匯流排解碼結果
3。2
SPI協議
SPI是序列外設介面的縮寫,也是一種常見的晶片之間通訊的介面協議。標準的SPI會用到4根線:1根時鐘(SCLK),2根資料收發,分別是主出從入(MOSI)和主入從出(MISO),1根片選(SS)。與I2C不同的是,SPI是一種事實標準,因此配置比較靈活,每一根線上的訊號都有多種可能的配置選項。例如時鐘訊號可能是上升沿或下降沿有效;資料訊號(MOSI和MISO)可能是低電平或高電平有效;片選訊號可能是低電平或高電平有效。在資料解析方面,也有多種配置:資料字長4-32位都有可能,位順序可能是MSB在前或LSB在前。
因此實際解析時,需要查閱相關文件或者編寫測試程式來確認用到的SPI具體配置如何,否則解析可能不準確。
如圖13所示的一個波形,是時鐘SCLK上升沿有效,MOSI資料是高電平有效(MISO同理,略去),片選訊號SS是低電平有效。
資料方面,字長是8位,位順序是MSB在前。綜合上述配置,不難找出圖中波形代表的訊號是1個位元組,二進位制表示為10010011,轉換到16進製表示為0x93。
圖13。 SPI波形和手動解析示例
示波器匯流排解碼的設定也提供了豐富的選項,需要我們仔細選擇正確,如圖14所示。
SCLK設定為上升沿,SS輸入設定為“低態有效”,資料輸入設定為“高態有效”,字大小設為“8 bits”,位順序設為“MS居前”。
圖14。 SPI匯流排設定
解碼結果如圖15所示,可以驗證這個位元組與手動解析的結果是相同的。
注意SPI沒有額外的校驗機制,因為匯流排配置錯誤也能夠解碼,但是結果是錯的,在實際操作時一定要注意確認配置。
圖15。 SPI匯流排解碼結果
4. 混合除錯
上述UART、I2C、SPI協議的解析,我們預設一個前提是訊號是準確無誤的。因此無論用模擬探頭或者邏輯探頭,只要配置準確,解碼的結果一定是正確的。實際應用時,數字訊號和模擬訊號一樣會存在失真的問題。當數字訊號失真到超過閾值時,邏輯探頭是無法正確解析的,此時會出現資料錯誤。
如圖16就是一個失真的訊號舉例。
除了紅框內的片段,其它位置的電壓在0V和3。3V之間跳變,按協議解碼是16進位制的0xE9。但是紅框內有一個脈衝幅度較低,解碼就出錯了。
圖16。 訊號失真舉例
為了找到這樣的失真訊號,可以從2個角度利用混合訊號示波器的相關功能。
(1)
數字角度。
由於資料出錯,可以使用匯流排觸發,搜尋錯誤的值,就能找到這個失真的訊號了。
(2)
模擬角度。
這是一個欠幅訊號,可是使用示波器的欠幅觸發功能。
如圖17所示,示波器的欠幅觸發作用於任意模擬訊號,當該訊號越過下限兩次但未越過上限時觸發。
我們把上限和下限分別設為2。8V和0。2V,就能找到介於二者之間的失真脈衝了。圖17中,觸發位置正是失真脈衝的下降沿。
圖17。 欠幅觸發的設定
從這個例子中,我們可以發現:混合訊號示波器同時可以解析模擬和數字訊號,因此我們也可以根據需要靈活選擇觸發方法,查詢訊號問題,實現板級實時的混合除錯。
5. 總結
使用混合訊號示波器,可以同步處理模擬和數字訊號,實現數模混合測量功能。
本文從常見的UART協議出發,輔以多種匯流排協議的解析,介紹了匯流排解碼的基本概念和具體操作方法,並對比手動解析和示波器自動解碼的過程和結果,充分展現了現代化混合訊號示波器的混合測量能力。
對於訊號失真的場景,從數字和模擬訊號2個角度,進一步闡述了混合除錯的思想。全文全部資料和波形都由實測和實拍得到,貼近應用實際,具有工程參考價值。
參考文獻
[1]https://en。wikipedia。org/wiki/Universal_asynchronous_receiver-transmitter
[2]https://datasheets。raspberrypi。org/pico/pico-datasheet。pdf
[3]https://en。wikipedia。org/wiki/I%C2%B2C