劉擘,梁哲興
?
基于NI虛擬儀器和nRF9E5單片機(jī)的串口通訊
劉擘1,梁哲興2
(1. 海軍駐712所軍代室,武漢 430064;2. 武漢船用電力推進(jìn)裝置研究所,武漢 430064)
針對(duì)多通道、長距離的數(shù)據(jù)傳輸,本文采用串口通訊方式,基于NI工控機(jī)和nRF9E5單片機(jī)硬件平臺(tái),并通過試驗(yàn)驗(yàn)證。
串口通訊 NI虛擬儀器 nRF9E5單片機(jī)
單片機(jī)與上位PC機(jī)的通訊方式有并行通訊和串行通訊。與并行通信相比,串行通信速度比較慢,不過由于其硬件連接占用硬件資源較少(只需兩根線),信號(hào)傳輸距離遠(yuǎn),使得串行通訊應(yīng)用廣泛。
本項(xiàng)目要求實(shí)現(xiàn)對(duì)多個(gè)檢測通道數(shù)據(jù)的遠(yuǎn)距離傳輸處理,故采用串行通訊。
串口通訊由硬件平臺(tái)和軟件平臺(tái)兩部分組成。硬件平臺(tái)是由NI虛擬儀器和nRF9E5單片機(jī)組成,其中NI虛擬儀器作為串口通訊的上位機(jī),nRF9E5單片機(jī)作為串口通訊的下位機(jī)。
nRF9E5單片機(jī)是系統(tǒng)級(jí)無線射頻收發(fā)芯片,內(nèi)嵌高性能8051MCU,4通道12位ADC信號(hào)采集。內(nèi)置nRF905收發(fā)器,包括所有nRF905芯片特性,可以工作在shockburstTM模式下(自動(dòng)處理前綴,地址和CRC),最大程度的抑制了噪聲,工作電壓范圍為1.9~3.6 V。
其原理框圖如下圖所示。
所謂虛擬儀器,是以PC機(jī)為基礎(chǔ),配以相應(yīng)測試功能的硬件作為信號(hào)輸入/輸出的接口,完成信號(hào)的采集、測量與調(diào)理,從而實(shí)現(xiàn)各種測試功能的一種計(jì)算機(jī)化儀器系統(tǒng)。
NI虛擬儀器由通用儀器硬件平臺(tái)和應(yīng)用軟件兩大部分構(gòu)成,如圖2所示。
通用儀器硬件平臺(tái)是虛擬儀器工作的基礎(chǔ),主要由PC機(jī)和信號(hào)采集調(diào)理裝置組成,用于完成輸入信號(hào)的采集、放大、模/數(shù)轉(zhuǎn)換和信號(hào)輸出控制等,其中PC機(jī)用來提供實(shí)時(shí)高效的數(shù)據(jù)處理性能,信號(hào)采集調(diào)理裝置主要用來采集、傳輸信號(hào),本項(xiàng)目采用性價(jià)比高、通用性強(qiáng)的PXI系統(tǒng),PXI系統(tǒng)主機(jī)為NI PXI 1042,數(shù)據(jù)采集設(shè)備選用了一塊PXI 6229多功能數(shù)據(jù)采集卡,它有32路16 Bit模擬量采集口和48路雙向數(shù)字量接口,最大采樣率為240 kS。
應(yīng)用軟件是虛擬儀器的核心,虛擬儀器可以在相同的硬件平臺(tái)下,通過不同的測試功能軟件模塊的組合,實(shí)現(xiàn)功能完全不同的各種儀器。目前應(yīng)用最為廣泛的虛擬儀器軟件開發(fā)工具就是美國NI公司推出的實(shí)驗(yàn)室虛擬儀器工程平臺(tái)LabVIEW,它是一種基于G語言的32位編譯型圖形化編程語言,它采用模塊化、結(jié)構(gòu)化的設(shè)計(jì)思想,提高了編程效率,增強(qiáng)了軟件的可維護(hù)性和可擴(kuò)展性。
NI虛擬儀器具備GPIB,串口,以太網(wǎng),USB等多種接口,可實(shí)現(xiàn)各種信號(hào)的采集、分析處理和數(shù)據(jù)傳輸?shù)裙δ堋?/p>
nRF9E5單片機(jī)內(nèi)嵌8051系列微控制器,可在Keil C51調(diào)試軟件平臺(tái)上用C語言編程,編譯完成后通過仿真器將程序下載到單片機(jī)ROM中。
NI虛擬儀器軟件采用Labview 8.2版本,進(jìn)行圖形化程序編輯處理。
由于nRF9E5單片機(jī)具有無線收發(fā)功能,所以在本項(xiàng)目中,由1個(gè)nRF9E5單片機(jī)作為通訊管理單元,其他每個(gè)nRF9E5單片機(jī)作為單個(gè)信號(hào)檢測通道,共計(jì)16個(gè)通道。通訊管理單元與NI虛擬儀器采用串口通訊方式,與16個(gè)信號(hào)檢測通道采用無線通訊方式,在本文中,主要論述的是通訊管理單元與NI虛擬儀器的串口通訊。原理如圖3。
通訊采用被動(dòng)方式,即通訊管理單元不會(huì)主動(dòng)向NI虛擬儀器傳送數(shù)據(jù),必須由NI虛擬儀器向通訊管理單元發(fā)出讀寫指令,通訊管理單元才會(huì)做出相應(yīng)的反應(yīng)。
NI虛擬儀器與通訊管理單元進(jìn)行串口通訊,通訊采用輪流查詢等方式,每路無線收發(fā)單元的地址都不相同。根據(jù)需要,無線收發(fā)單元的地址用三個(gè)ASCII字符表示,地址范圍從000~015,即可有16路單片機(jī)通過通訊管理單元與上位機(jī)進(jìn)行串口通訊。通訊管理單元與上位機(jī)應(yīng)設(shè)置相同的通訊速率,在此設(shè)定為19 200 bit/s。
下位機(jī)和上位機(jī)的程序流程框圖如圖4和圖5所示。
上位機(jī)每向單片機(jī)發(fā)一指令,單片機(jī)在0~500 ms內(nèi)做出應(yīng)答,而上位機(jī)也必須等單片機(jī)返回?cái)?shù)據(jù)后,才能發(fā)新的指令,上位機(jī)接收轉(zhuǎn)發(fā)送應(yīng)至少延時(shí)10 ms。如果單片機(jī)超過最大響應(yīng)時(shí)間仍沒有應(yīng)答,或應(yīng)答數(shù)據(jù)不齊,則原因可能無效指令、通訊線路故障,單片機(jī)沒有開機(jī),通訊地址錯(cuò)誤等。
上位機(jī)發(fā)出寫數(shù)據(jù)指令后,如果單片機(jī)返回“NAK”,可能是數(shù)據(jù)傳輸錯(cuò)誤,也可能是上位機(jī)發(fā)送的數(shù)據(jù)無效,單片機(jī)不能接收此數(shù)據(jù)。
上位機(jī)發(fā)送命令和接收數(shù)據(jù)的程序。
對(duì)于讀采集通道的數(shù)據(jù)操作,上位機(jī)首先向單片機(jī)發(fā)送讀數(shù)據(jù)的命令。單片機(jī)接收到指令后,首先進(jìn)行校驗(yàn),若不正確則進(jìn)行相應(yīng)處理,若正確則判別上位機(jī)讀數(shù)據(jù)的地址是否和該單片機(jī)的地址相同,相同則發(fā)送數(shù)據(jù),不同則輪詢。當(dāng)上位機(jī)接收到這組數(shù)據(jù)后,上位機(jī)就把該組數(shù)據(jù)和發(fā)送給單片機(jī)的數(shù)據(jù)作比較,如果兩者一致,上位機(jī)開始準(zhǔn)備接收數(shù)據(jù)串。數(shù)據(jù)串的個(gè)數(shù),單片機(jī)在返回上位機(jī)的命令后會(huì)跟著一個(gè)關(guān)于數(shù)據(jù)量的字符,將該字符轉(zhuǎn)化為數(shù)字量后就是數(shù)據(jù)串的大小。若比較結(jié)果不一致,上位機(jī)則會(huì)采取措施將錯(cuò)誤的代碼進(jìn)行保存,供操作者識(shí)別。
串口通訊連續(xù)運(yùn)行15小時(shí),沒有出現(xiàn)通訊錯(cuò)誤。通訊錯(cuò)誤在程序設(shè)計(jì)中分為兩大類:一類是發(fā)送和接收數(shù)據(jù)長度一致,但在通訊過程中由于某些因素出現(xiàn)數(shù)據(jù)不一致;另一類是發(fā)送和接收數(shù)據(jù)長度不一致,或者是接收不到數(shù)據(jù)(數(shù)據(jù)丟失現(xiàn)象),原因可能是通訊暫時(shí)中斷或其它。這兩類錯(cuò)誤在程序設(shè)計(jì)中分別用不同代碼表示。通訊錯(cuò)誤與正確數(shù)據(jù)一樣,都保存在同一文件,且通訊錯(cuò)誤的出現(xiàn)不會(huì)影響程序的正常運(yùn)行。
模擬試驗(yàn)結(jié)果表明,通訊管理單元與NI虛擬儀器的串口通訊設(shè)計(jì)是正確的。
[1] nRF9E5中文手冊2006版. 迅通科技.
[2] 陳興華, 梁哲興, 陳樹衡. 虛擬儀器及其應(yīng)用. 船電技術(shù),2006(增刊).
Serial Communication Based on NI Virtual Instrument and nRF9E5 Single Chip Microcontroller
Liu Bo1, Liang Zhexing2
(1. Naval representatives Office in 712th Institute, Wuhan 430064, China; 2. Wuhan Institute of Marine Electric Propulsion, Wuhan 430064, China
TN915
A
1003-4862(2013)12-0052-03
2013-07-18
劉擘(1980-),男,工程師。研究方向:通訊工程。