1 關(guān)于 SPI 總線
串行外設(shè)接口(SPI, Serial Peripheral Interface)總線最早由 Motorola 開(kāi)發(fā),用于其微控制器產(chǎn)品。由于其結(jié)構(gòu)簡(jiǎn)單、實(shí)現(xiàn)直接,隨后被其它廠商廣泛采用,目前已在嵌入式系統(tǒng)領(lǐng)域的各類(lèi)器件中得到普及。
SPI總線通常用于微控制器或 CPU 與外設(shè)之間的芯片級(jí)通信,例如顯示模塊、ADC 和 DAC、EEPROM、SD 卡及其它存儲(chǔ)器件。
SPI 總線是一種主從式、四線制串行通信總線,包含以下四條信號(hào)線:MOSI(主輸出 / 從輸入)、MISO(主輸入 / 從輸出)、SCLK 或 SCK(串行時(shí)鐘)、SS(從設(shè)備選擇)或 CS(片選)。
圖 1 SPI 總線架構(gòu)
在 SPI 通信系統(tǒng)中,各設(shè)備以主從關(guān)系運(yùn)行。主設(shè)備通過(guò)生成共享的串行時(shí)鐘信號(hào)來(lái)發(fā)起并控制所有數(shù)據(jù)傳輸。
SPI 是一種全雙工通信協(xié)議,這意味著在每一個(gè)時(shí)鐘周期內(nèi),主設(shè)備和從設(shè)備都可以同時(shí)發(fā)送和接收數(shù)據(jù)。為了與多個(gè)從設(shè)備進(jìn)行通信,主設(shè)備通常為每個(gè)從設(shè)備提供一根獨(dú)立的片選(CS)信號(hào)線。
為了保證 SPI 總線的正常工作,主設(shè)備在任意時(shí)刻只能與一個(gè)從設(shè)備通信。這一機(jī)制通過(guò) CS 信號(hào)來(lái)實(shí)現(xiàn)。任何未被選中的從設(shè)備都必須忽略來(lái)自主設(shè)備的 SCK 和 MOSI 信號(hào),同時(shí)不得驅(qū)動(dòng) MISO 信號(hào)線,其輸出應(yīng)保持高阻態(tài),以避免總線沖突。
SPI 通信通常包括以下幾個(gè)步驟:
?初始化:主設(shè)備首先將 SCK 時(shí)鐘頻率配置為目標(biāo)從設(shè)備所支持的范圍內(nèi)(通常為幾 MHz 到幾十 MHz)。
?從設(shè)備選擇:主設(shè)備將對(duì)應(yīng)從設(shè)備的 CS 信號(hào)拉低(通常為邏輯低電平,即 0 V),以選中該從設(shè)備。
?數(shù)據(jù)交換:在每一個(gè)時(shí)鐘周期內(nèi)都會(huì)發(fā)生一次全雙工數(shù)據(jù)傳輸。主設(shè)備通過(guò) MOSI 信號(hào)線輸出一位數(shù)據(jù),從設(shè)備進(jìn)行采樣;同時(shí),從設(shè)備通過(guò) MISO信號(hào)線輸出一位數(shù)據(jù),主設(shè)備進(jìn)行采樣。
?通信結(jié)束:數(shù)據(jù)交換完成后,主設(shè)備停止輸出時(shí)鐘信號(hào),并將 CS 信號(hào)拉高,取消對(duì)從設(shè)備的選中。
圖 2 SPI 總線中的數(shù)據(jù)傳輸機(jī)制
SPI 的數(shù)據(jù)傳輸依賴(lài)于主設(shè)備和從設(shè)備內(nèi)部位寬相同的移位寄存器(例如 8 位)。這些寄存器通過(guò) MOSI 和 MISO 信號(hào)線相互連接,形成一個(gè)環(huán)形緩沖結(jié)構(gòu)。其工作原理如下:
?在每一個(gè)時(shí)鐘沿,主設(shè)備和從設(shè)備都會(huì)將寄存器中的一位數(shù)據(jù)(通常是最高有效位 MSB)移出到各自的輸出線上。同時(shí),它們也會(huì)從對(duì)方的輸出線上采樣一位數(shù)據(jù),并移入自身寄存器的最低有效位(LSB)。
?當(dāng)時(shí)鐘脈沖數(shù)量達(dá)到寄存器位寬時(shí),主設(shè)備和從設(shè)備寄存器中的原始數(shù)據(jù)就完成了一次完整交換。
?如果需要繼續(xù)傳輸數(shù)據(jù),只需重新加載移位寄存器,并重復(fù)該過(guò)程即可。
圖 3 SPI 在時(shí)鐘上升沿采樣的時(shí)序圖
2 Pico 串行總線解碼與協(xié)議分析解決方案簡(jiǎn)介
PicoScope示波器標(biāo)配有超過(guò)40種串行通信協(xié)議解碼功能。隨著 PicoScope 軟件的持續(xù)免費(fèi)升級(jí),未來(lái)還將支持更多協(xié)議解碼功能。
目前支持的協(xié)議包括:
1-Wire、ARINC 429、BroadRReach、CAN、CAN FD、CAN J1939、CAN XL、DALI、DCC、DMX512、Ethernet 10BASE-T、擴(kuò)展 UART、Fast Ethernet 100BASE-TX、FlexRay、I2C、I2S、I3C BASIC v1.0、LIN、Manchester、MIL-STD-1553、MODBUS ASCII、MODBUS RTU、NMEA-0183、并行總線、PMBus、PS/2、PSI5(傳感器)、Quadrature、RS232/UART、SBS Data、SENT Fast、SENT Slow、SENT SPC、SMBus、SPI-MISO/MOSI、SPI-SDIO、USB(1.0/1.1)以及風(fēng)速傳感器協(xié)議等。
圖 4 PicoScope 支持的串行協(xié)議解碼器
解碼后的數(shù)據(jù)通過(guò)兩種互補(bǔ)的方式進(jìn)行顯示,便于高效分析。
圖形顯示方式:解碼數(shù)據(jù)以十六進(jìn)制、二進(jìn)制、十進(jìn)制或 ASCII 格式顯示在波形下方,并與原始波形共用同一時(shí)間軸。錯(cuò)誤幀會(huì)自動(dòng)以紅色高亮顯示,便于快速識(shí)別。用戶(hù)可以對(duì)任意數(shù)據(jù)幀進(jìn)行放大,以進(jìn)一步分析信號(hào)完整性或噪聲問(wèn)題。
圖 5 PicoScope 中的圖形解碼顯示方式
表格顯示方式:表格視圖提供所有解碼數(shù)據(jù)幀的完整列表,包括數(shù)據(jù)內(nèi)容、標(biāo)識(shí)符和標(biāo)志位。用戶(hù)可以對(duì)數(shù)據(jù)進(jìn)行篩選,僅顯示感興趣的幀,也可以通過(guò)搜索功能查找具有特定屬性的數(shù)據(jù)幀。統(tǒng)計(jì)功能還可顯示更詳細(xì)的物理層信息,例如幀時(shí)間和電壓電平。
圖 6 PicoScope 中的表格解碼顯示方式
這兩種視圖是相互聯(lián)動(dòng)的:在表格中點(diǎn)擊任意一幀,示波器界面會(huì)自動(dòng)縮放并定位到對(duì)應(yīng)的波形位置。
為了進(jìn)一步提升分析效率,“Link File(鏈接文件)”功能允許用戶(hù)將數(shù)據(jù)字段與自定義的、易于理解的文本字符串進(jìn)行關(guān)聯(lián)。此外,PicoScope 還支持將所有解碼數(shù)據(jù)導(dǎo)出為電子表格,用于后續(xù)分析。
圖 7 顯示解碼數(shù)據(jù)的可讀文本
3 使用 PicoScope 捕獲 SPI 信號(hào)的測(cè)試設(shè)置
使用 PicoScope 對(duì) SPI 總線通信進(jìn)行有效解碼,首要前提是精確的捕獲到原始數(shù)據(jù),這要求示波器具有足夠的帶寬和采樣率。
SPI 信號(hào)的工作頻率范圍較廣。基于實(shí)踐經(jīng)驗(yàn)建議:
? 示波器帶寬為 SPI 時(shí)鐘頻率的3~5 倍。
? 采樣率確保在單個(gè)數(shù)據(jù)位的上升沿或下降沿至少采集 5 個(gè)采樣點(diǎn),從而實(shí)現(xiàn)準(zhǔn)確的數(shù)字信號(hào)重構(gòu)。
為了進(jìn)行全面分析,理想情況下應(yīng)采集以下信號(hào):
? SCK(串行時(shí)鐘):用于同步,是必需信號(hào)
? MOSI(主輸出 / 從輸入):主設(shè)備發(fā)送的數(shù)據(jù)
? MISO(主輸入 / 從輸出):從設(shè)備返回的數(shù)據(jù)
所需的示波器通道數(shù)量取決于具體的分析需求:
? 使用兩通道示波器時(shí):必須將其中一個(gè)通道用于采集 SCK,因此一次只能解碼一條數(shù)據(jù)線(MOSI 或 MISO)。
? 使用四通道或更多通道時(shí):可同時(shí)采集 SCK、MOSI、MISO 以及 CS 信號(hào),從而對(duì)指定從設(shè)備的通信進(jìn)行完整分析。
下圖 8 展示了使用 PicoScope 進(jìn)行 SPI 測(cè)試的測(cè)試設(shè)置:
? 一臺(tái) PicoScope示波器3418E (500MHz,5GS/s,2GS)通過(guò) USB Type C 連接至 PC,用于控制和數(shù)據(jù)采集。
? 四個(gè)無(wú)源探頭連接至被測(cè)設(shè)備,用于采集 SCK、MOSI、MISO 和 CS 信號(hào)。
? PC 上運(yùn)行 PicoScope 7 軟件,用于控制示波器、顯示波形并執(zhí)行 SPI 協(xié)議解碼。
圖 8 使用 PicoScope 3418E 捕獲 SPI 信號(hào)的測(cè)試設(shè)置
4 使用 PicoScope 解碼 SPI 信號(hào)
按照以下步驟在 PicoScope 7 中完成 SPI 數(shù)據(jù)的采集與解碼。
步驟 1:在 PicoScope 7 的通道菜單中為各通道命名,便于后續(xù)操作和識(shí)別。
步驟 2:打開(kāi)“Views”,添加四個(gè)示波視圖窗口,每個(gè)窗口顯示一條波形,并為每個(gè)窗口命名為所顯示的SPI信號(hào)。
步驟 3:根據(jù)實(shí)際信號(hào)情況設(shè)置合適的垂直量程、時(shí)基和采樣率。
步驟 4:設(shè)置觸發(fā)條件以穩(wěn)定顯示 SPI 數(shù)據(jù),推薦使用針對(duì) SCK 信號(hào)的脈沖觸發(fā)。
完成以上步驟后,即可獲得如圖 9 所示的 SPI 波形。
圖 9 PicoScope 7中的 SPI 波形顯示
步驟 5:點(diǎn)擊 “Serial decoding”,選擇 “SPI – MISO/MOSI”.
圖 10 在 PicoScope 7 中選擇 SPI 解碼器
步驟 6:將各通道分配到解碼器中對(duì)應(yīng)的解碼信號(hào)。若之前已正確命名通道,該過(guò)程會(huì)更加直觀。閾值和遲滯參數(shù)會(huì)被自動(dòng)識(shí)別,但仍可根據(jù)需要手動(dòng)調(diào)整。其它 SPI 參數(shù)按照?qǐng)D 11 進(jìn)行配置。
圖 11 在 PicoScope 7 中配置 SPI 解碼器
步驟 7:點(diǎn)擊 “Next”,為解碼器命名,并選擇解碼數(shù)據(jù)顯示格式。同時(shí)還可以限制解碼的時(shí)間范圍,以便僅采集和分析關(guān)注的數(shù)據(jù)。
圖 12 在 PicoScope 7 中選擇 SPI 解碼顯示格式
步驟 8:點(diǎn)擊 “Finish” 后,解碼結(jié)果表格將顯示在屏幕上。該表格既可以與示波器視圖聯(lián)動(dòng)縮放,也可以像其它圖表一樣單獨(dú)顯示。
圖 13 PicoScope 7 中的 SPI 解碼結(jié)果
更多功能和設(shè)置:
?解碼數(shù)據(jù)上方的工具欄提供了多種實(shí)用功能,可通過(guò)“Export”或“Data to Text”導(dǎo)出數(shù)據(jù)。
?使用“Fields”可以選擇需要顯示的數(shù)據(jù)字段,并重新配置解碼內(nèi)容。
?搜索功能在深存儲(chǔ)應(yīng)用中尤為重要。由于 PicoScope 支持捕獲大量數(shù)據(jù)包,借助搜索功能可以?xún)H顯示所需數(shù)據(jù),從而大幅節(jié)省分析時(shí)間。
?將鼠標(biāo)懸停在任意數(shù)據(jù)包上,即可查看該數(shù)據(jù)包的詳細(xì)內(nèi)容。
圖 14 PicoScope 7 中 SPI 解碼器的更多功能
儀集科技作為英國(guó)比克(Pico Technology)官方授權(quán)的中國(guó)區(qū)代理商,為客戶(hù)提供Picoscope示波器、Picoscope示波器探頭、PIco數(shù)據(jù)記錄儀等產(chǎn)品銷(xiāo)售,技術(shù)支持,二次開(kāi)發(fā)和系統(tǒng)集成一站式服務(wù),如需了解Pico示波器更多相關(guān)應(yīng)用或者申請(qǐng)樣機(jī)演示,歡迎關(guān)注儀集科技http://www.k-tv.cn。
技術(shù)支持:凌灝 13391292632 linghao@yijiceshi.com商務(wù)聯(lián)系人:杜康態(tài) 19929920718 19929920718@yijiceshi.com
商務(wù)聯(lián)系人:薛春妮 15389062268 15389062268@yijiceshi.com公司網(wǎng)址:www.k-tv.cn
公司地址:陜西省西安市長(zhǎng)安區(qū)航天基地東長(zhǎng)安街501號(hào)運(yùn)維國(guó)際大廈B座7層