趙驍+周斌+趙華
摘 要: 為了便于具有SPI串行總線接口設(shè)備的調(diào)試,使用美國國家儀器公司(NI)的標準模塊化設(shè)備模擬SPI串行總線接口信號;采用圖形化編程語言LabVIEW得到數(shù)字波形格式的SPI信號,并設(shè)計程序?qū)Υ烁袷降男盘栠M行解析,利用NI公司的硬件設(shè)備實現(xiàn)該信號的輸入與輸出。經(jīng)過實驗測試,輸出SPI接口信號的頻率范圍是0.5 Hz~500 kHz,輸入的頻率范圍是0.5 Hz~900 kHz,誤差小于10 ns,該方法可以用于SPI串行總線接口設(shè)備的調(diào)試中。
關(guān)鍵詞: SPI接口; 串行總線接口; LabVIEW; 測試
中圖分類號: TN710?34; TP319 文獻標識碼: A 文章編號: 1004?373X(2014)14?0138?04
Implementation of SPI serial bus interface based on LabVIEW
ZHAO Xiao1, ZHOU Bin2, ZHAO Hua2
(1. Nanjing University of Aeronautics and Astronautics, Nanjing 210016, China; 2. National Space Science Center, Beijing 100190, China)
Abstract: In order to debug the device with SPI serial bus interface conveniently, the standard modular device of National Instruments (NI) was used to simulate SPI serial bus interface signals, LabVIEW was used to get the SPI signals in digital waveform format, a program was designed to analysis these signals, and the hardware equipments of NI was utilized to realize the input and output of these signals. The experimental testing result shows that the frequency range of the output signal from the SPI interface is 0.5 Hz to 500 kHz, the input frequency range is 0.5 Hz to 900 kHz, the error is less than 10 ns. This method can be used to debug SPI serial bus interface device.
Keywords: SPI interface; serial bus interface; LabVIEW; testing
SPI(Serial Peripheral Interface)[1]總線技術(shù)是Motorola公司提出的一種同步串行外設(shè)接口,是接線簡單、通信效率高、全雙工、同步的通信總線。美國國家儀器公司(NI)開發(fā)了一種基于LabVIEW的、可用于實驗室或現(xiàn)場信號的、使用網(wǎng)絡(luò)接口與計算機進行相連的cDAQ平臺,采用高速I/O通用模塊可進行數(shù)字I/O的輸入和輸出。本文使用NI公司的cDAQ平臺和高速I/O模塊實現(xiàn)了SPI信號的通信,以便于SPI接口的調(diào)試。
1 SPI接口的調(diào)試系統(tǒng)的總體設(shè)計
SPI總線主要應(yīng)用在FLASHRAM,A/D或D/A轉(zhuǎn)換器、網(wǎng)絡(luò)控制器、MCU、實時時鐘、EEPROM,還有數(shù)字信號處理器和數(shù)字信號解碼器之間[2]。一般由四個信號組成:時鐘信號(SCLK);從機選擇使能信號(CS),數(shù)據(jù)輸出信號(SDO);數(shù)據(jù)輸入信號(SDI)[3]。典型結(jié)構(gòu)如圖1所示。當CS有效時,在SCLK上升沿t0時刻(或者下降沿t1時刻)SDO上的電平數(shù)據(jù)被發(fā)送出去,SCLK下降沿t1時刻(或者上升沿t0時刻)SDI上的電平被接收進來,其基本時序如圖2所示[4]。
圖1 SPI的典型結(jié)構(gòu)
圖2 SPI信號基本時序
本文的調(diào)試系統(tǒng)的總體實現(xiàn)框圖如圖3所示。硬件驅(qū)動函數(shù)構(gòu)成的硬件控制程序,用于控制硬件接口輸入/輸出SPI信號,輸出的SPI信號由LabVIEW產(chǎn)生,輸入的SPI信號使用LabVIEW進行解析。
圖3 調(diào)試系統(tǒng)的總體實現(xiàn)框圖
2 SPI信號的硬件設(shè)計
本文的測試平臺如圖4所示,計算機與cDAQ平臺相連,cDAQ平臺的數(shù)字I/O口與外部SPI接口相連[5]。通過軟件實現(xiàn)把串行SPI信號轉(zhuǎn)變成并行信號進行輸入/輸出,如圖5所示。
圖4 測試平臺
圖5 串行信號轉(zhuǎn)變成并行信號
選用NI公司的NI CompactDAQ硬件平臺的機箱NI 9184,模塊是可配置成8路數(shù)字輸入或者8路數(shù)字輸出或者4路數(shù)字輸入、4路數(shù)字輸出的NI 9401高速I/O模塊,它的8路I/O口并行進行傳輸,自身具有同步性好的優(yōu)點,特點如表1所示。
表1 NI9401的特點
由表1可知它的速率最高為100 MHz,即最快10 ns采樣1次,理論上,如果2位為1個周期,那么它的最高輸入與輸出頻率為5 MHz,可以滿足大多數(shù)信號對頻率的要求;輸入/輸出電平是基本的TTL電平;工作溫度范圍廣。
NI 9401的驅(qū)動采用NI公司針對這種模塊提供的官方驅(qū)動接口DAQmx。DAQmx驅(qū)動函數(shù)[6]是以下5個:DAQmx創(chuàng)建虛擬通道、DAQmx開始任務(wù)、DAQmx寫入、DAQmx讀取及DAQmx停止,如圖6所示。各個函數(shù)功能如表2所示。利用DAQmx驅(qū)動接口可以構(gòu)建SPI輸入和輸出的底層硬件驅(qū)動模塊。
圖6 DAQmx接口驅(qū)動函數(shù)
表2 DAQmx接口函數(shù)功能
3 SPI信號的軟件處理
3.1 SPI信號的LabVIEW實現(xiàn)
本文使用NI公司的LabVIEW軟件進行編程實現(xiàn)。LabVIEW是NI公司提出的一種圖形化編程語言,使用各種函數(shù)模塊代替?zhèn)鹘y(tǒng)的文本形式進行編程,分為前面板和程序框圖,前面板放置直觀顯示的控件,程序框圖使用內(nèi)部的函數(shù)庫實現(xiàn)數(shù)據(jù)流方式的編程[7]。LabVIEW具有強大的庫函數(shù),本文使用SPI庫函數(shù)實現(xiàn)SPI信號,主要使用的函數(shù)有3個,初始化、發(fā)送和關(guān)閉,如圖7所示。編程時需要對函數(shù)的變量進行設(shè)置,變量的意義如表3所示。
圖7 SPI主要庫函數(shù)
表3 SPI函數(shù)變量功能
“初始化”函數(shù)實現(xiàn)了兩個功能,它使輸入的時間值轉(zhuǎn)換成需求的采樣時鐘并強制使參數(shù)符合輸入的SPI時鐘頻率,創(chuàng)建了具有SPI波形成分的波形簇;“發(fā)送”函數(shù)模擬數(shù)據(jù)向外傳輸,可以自動匹配即將輸出的無符號整型數(shù)據(jù)的位數(shù);“關(guān)閉”函數(shù)將SPI波形簇轉(zhuǎn)換成數(shù)字波形進行輸出。程序需要對變量進行設(shè)置,其中采樣率是SCLK頻率的n倍,輸出的數(shù)字波形的位數(shù)是輸入數(shù)據(jù)位數(shù)的n倍。假設(shè)產(chǎn)生SPI信號的數(shù)據(jù)位數(shù)是16位,采樣率是SCLK頻率的2倍,數(shù)字波形產(chǎn)生的流程圖如圖8所示。
圖8 SPI數(shù)字波形產(chǎn)生流程圖
如圖8所示,第一個時鐘周期,首先按要求生成CS信號位,并按上升沿還是下降沿生成SCLK信號位,改變輸出的第1個數(shù)據(jù)位,延時1位;改變SCLK信號位,延時1位;第2~16個時鐘周期,首先改變SCLK信號位和數(shù)據(jù)位,延時1位,之后改變SCLK信號位,延時1位,數(shù)據(jù)輸出完成;最后改變SCLK信號位和CS信號位,輸出結(jié)束。使用SPI庫函數(shù)實現(xiàn)的SPI信號的前面板和程序框圖如圖9所示,圖中顯示了生成的SPI信號。
3.2 數(shù)字波形格式的SPI信號的解析
解析數(shù)字波形SPI信號中的數(shù)據(jù)信息的設(shè)計思路如圖10所示。由圖10可知,首先檢測CS信號是否有效,然后檢測SCLK信號的上升沿,在上升沿到來時存儲DATA數(shù)據(jù),直到CS信號無效,結(jié)束存儲,程序框圖如圖11所示,測試結(jié)果如圖12所示。
圖9 SPI信號LabVIEW實現(xiàn)
圖10 解析數(shù)字波形格式的SPI信號的設(shè)計思路
圖11 數(shù)字波形格式的SPI信號解析程序
圖12 數(shù)字波形格式的SPI信號的解析結(jié)果
3.3 SPI信號的硬件控制程序
SPI信號的硬件控制程序的設(shè)計思路如圖13所示[8?10]。輸出SPI信號的硬件控制程序如圖14所示,輸入SPI信號的如圖15所示。
4 SPI通信接口的測試
測試分為SPI信號的輸出和SPI信號的輸入,如圖16和圖17所示。
圖13 硬件控制程序的設(shè)計思路
圖14 輸出SPI信號的硬件控制程序
圖15 輸入SPI信號的硬件控制程序
圖16 500 kHz的SPI波形
圖17 接收SPI信號結(jié)果
4.1 SPI信號輸出
測試所使用的程序如圖14所示,通過改變采樣率的大小設(shè)置輸出頻率,示波器采集的最大頻率輸出波形如圖16所示,其中通道1是CS信號,通道2是SCLK信號,通道3是SDO信號。
NI 9401理論上輸出的最大頻率范圍為0.5 Hz~5 MHz,實際輸出的結(jié)果不僅由NI9401的采樣率決定,還與PC機的內(nèi)存、寫入模塊的速率、模塊的緩存等有關(guān),需要測量實際輸出的頻率范圍。改變采樣頻率,測試硬件可以輸出的頻率范圍,結(jié)果為0.5 Hz~500 kHz,由圖16中可以看到,在輸出最大頻率時,SPI信號的同步性依然非常好,誤差小于10 ns,所以生成的信號可以很好地應(yīng)用在工程實際中。
4.2 SPI信號輸入
測試所用的程序如圖15所示,使用3路數(shù)字I/O接收3路SPI信號,通過改變采樣率接收不同頻率的SPI信號,測試結(jié)果如圖17所示,接收到的SPI信號是數(shù)字波形的數(shù)據(jù)格式,然后使用圖11所示的解析程序進行解析。通過改變輸入信號的頻率,測試程序可以接收到的頻率范圍,測試結(jié)果頻率范圍為500 mHz~900 kHz,這也是由于硬件的傳輸速率、緩存等因素造成的。
5 結(jié) 論
為了便于具有SPI信號的接口的調(diào)試,本文在LabVIEW開發(fā)環(huán)境下采用SPI庫函數(shù),使用NI9184和NI9401實現(xiàn)了SPI信號的輸入和輸出。使用本文的方法,輸出頻率范圍是0.5 Hz~500 kHz,誤差小于10 ns,輸入頻率范圍是0.5 Hz~900 kHz。本方法方便進行功能擴展,對cDAQ的輸入/輸出模擬具有參考價值,可以很好地應(yīng)用于實際工程開發(fā)。
參考文獻
[1] 易志明,林凌,郝麗宏,等.SPI串行總線接口及其實現(xiàn)[J].自動化與儀器儀表,2002(6):45?48.
[2] 左東廣,魏瑞軒.SPI接口技術(shù)及應(yīng)用[J].工業(yè)控制計算機,2001,14(2):9?10.
[3] 任志斌,車長征.串行外設(shè)接口SPI的應(yīng)用[J].電子技術(shù)應(yīng)用,2002,29(10):20?22.
[4] 孫豐軍,余春暄.SPI串行總線接口的Verilog實現(xiàn)[J].現(xiàn)代電子技術(shù),2005,28(16):105?106.
[5] 白云,高育鵬,胡小江.基于LabVIEW的數(shù)據(jù)采集與處理技術(shù) [M].西安:西安電子科技大學(xué)出版社,2009.
[6] 張?zhí)m勇,孫健,孫曉云,等. LabVIEW程序設(shè)計基礎(chǔ)與提高[M].北京:機械工業(yè)出版社,2013.
[7] 李慶亮,司徒忠,鄭瑩娜,等.基于LabVIEW和通用I/O卡的數(shù)據(jù)采集系統(tǒng)的實現(xiàn)[J].機械開發(fā),1998(4):69?70.
[8] 呂向鋒,高洪林,馬亮,等.基于LabVIEW串口通信的研究[J].理論與方法,2009,28(12):27?30.
[9] 孟武勝,朱劍波,黃鴻,等.基于LabVIEW數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].電子測量技術(shù),2008,31(11):63?65.
[10] 廖傳書,韓屏.基于LabVIEW的USB數(shù)據(jù)采集系統(tǒng)的實現(xiàn)[J].工業(yè)控制計算機,2004,17(17):23?24.
測試所用的程序如圖15所示,使用3路數(shù)字I/O接收3路SPI信號,通過改變采樣率接收不同頻率的SPI信號,測試結(jié)果如圖17所示,接收到的SPI信號是數(shù)字波形的數(shù)據(jù)格式,然后使用圖11所示的解析程序進行解析。通過改變輸入信號的頻率,測試程序可以接收到的頻率范圍,測試結(jié)果頻率范圍為500 mHz~900 kHz,這也是由于硬件的傳輸速率、緩存等因素造成的。
5 結(jié) 論
為了便于具有SPI信號的接口的調(diào)試,本文在LabVIEW開發(fā)環(huán)境下采用SPI庫函數(shù),使用NI9184和NI9401實現(xiàn)了SPI信號的輸入和輸出。使用本文的方法,輸出頻率范圍是0.5 Hz~500 kHz,誤差小于10 ns,輸入頻率范圍是0.5 Hz~900 kHz。本方法方便進行功能擴展,對cDAQ的輸入/輸出模擬具有參考價值,可以很好地應(yīng)用于實際工程開發(fā)。
參考文獻
[1] 易志明,林凌,郝麗宏,等.SPI串行總線接口及其實現(xiàn)[J].自動化與儀器儀表,2002(6):45?48.
[2] 左東廣,魏瑞軒.SPI接口技術(shù)及應(yīng)用[J].工業(yè)控制計算機,2001,14(2):9?10.
[3] 任志斌,車長征.串行外設(shè)接口SPI的應(yīng)用[J].電子技術(shù)應(yīng)用,2002,29(10):20?22.
[4] 孫豐軍,余春暄.SPI串行總線接口的Verilog實現(xiàn)[J].現(xiàn)代電子技術(shù),2005,28(16):105?106.
[5] 白云,高育鵬,胡小江.基于LabVIEW的數(shù)據(jù)采集與處理技術(shù) [M].西安:西安電子科技大學(xué)出版社,2009.
[6] 張?zhí)m勇,孫健,孫曉云,等. LabVIEW程序設(shè)計基礎(chǔ)與提高[M].北京:機械工業(yè)出版社,2013.
[7] 李慶亮,司徒忠,鄭瑩娜,等.基于LabVIEW和通用I/O卡的數(shù)據(jù)采集系統(tǒng)的實現(xiàn)[J].機械開發(fā),1998(4):69?70.
[8] 呂向鋒,高洪林,馬亮,等.基于LabVIEW串口通信的研究[J].理論與方法,2009,28(12):27?30.
[9] 孟武勝,朱劍波,黃鴻,等.基于LabVIEW數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].電子測量技術(shù),2008,31(11):63?65.
[10] 廖傳書,韓屏.基于LabVIEW的USB數(shù)據(jù)采集系統(tǒng)的實現(xiàn)[J].工業(yè)控制計算機,2004,17(17):23?24.
測試所用的程序如圖15所示,使用3路數(shù)字I/O接收3路SPI信號,通過改變采樣率接收不同頻率的SPI信號,測試結(jié)果如圖17所示,接收到的SPI信號是數(shù)字波形的數(shù)據(jù)格式,然后使用圖11所示的解析程序進行解析。通過改變輸入信號的頻率,測試程序可以接收到的頻率范圍,測試結(jié)果頻率范圍為500 mHz~900 kHz,這也是由于硬件的傳輸速率、緩存等因素造成的。
5 結(jié) 論
為了便于具有SPI信號的接口的調(diào)試,本文在LabVIEW開發(fā)環(huán)境下采用SPI庫函數(shù),使用NI9184和NI9401實現(xiàn)了SPI信號的輸入和輸出。使用本文的方法,輸出頻率范圍是0.5 Hz~500 kHz,誤差小于10 ns,輸入頻率范圍是0.5 Hz~900 kHz。本方法方便進行功能擴展,對cDAQ的輸入/輸出模擬具有參考價值,可以很好地應(yīng)用于實際工程開發(fā)。
參考文獻
[1] 易志明,林凌,郝麗宏,等.SPI串行總線接口及其實現(xiàn)[J].自動化與儀器儀表,2002(6):45?48.
[2] 左東廣,魏瑞軒.SPI接口技術(shù)及應(yīng)用[J].工業(yè)控制計算機,2001,14(2):9?10.
[3] 任志斌,車長征.串行外設(shè)接口SPI的應(yīng)用[J].電子技術(shù)應(yīng)用,2002,29(10):20?22.
[4] 孫豐軍,余春暄.SPI串行總線接口的Verilog實現(xiàn)[J].現(xiàn)代電子技術(shù),2005,28(16):105?106.
[5] 白云,高育鵬,胡小江.基于LabVIEW的數(shù)據(jù)采集與處理技術(shù) [M].西安:西安電子科技大學(xué)出版社,2009.
[6] 張?zhí)m勇,孫健,孫曉云,等. LabVIEW程序設(shè)計基礎(chǔ)與提高[M].北京:機械工業(yè)出版社,2013.
[7] 李慶亮,司徒忠,鄭瑩娜,等.基于LabVIEW和通用I/O卡的數(shù)據(jù)采集系統(tǒng)的實現(xiàn)[J].機械開發(fā),1998(4):69?70.
[8] 呂向鋒,高洪林,馬亮,等.基于LabVIEW串口通信的研究[J].理論與方法,2009,28(12):27?30.
[9] 孟武勝,朱劍波,黃鴻,等.基于LabVIEW數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].電子測量技術(shù),2008,31(11):63?65.
[10] 廖傳書,韓屏.基于LabVIEW的USB數(shù)據(jù)采集系統(tǒng)的實現(xiàn)[J].工業(yè)控制計算機,2004,17(17):23?24.