焦佳偉 ,石云波 ,鄒 坤
(1.蘇州中盛納米科技有限公司,蘇州 215123;2.中北大學(xué) 電子測試技術(shù)國家重點實驗室,太原 030051)
加速度傳感器在研制后及使用前均需要進行參數(shù)性能的測試和標定,用到加速度傳感器批量標定測試設(shè)備,該設(shè)備在運行過程中,需要下發(fā)數(shù)據(jù)指令進行控制,也需要向上位機反饋運行數(shù)據(jù),實時對工作過程中的位置信號以及工作狀況進行監(jiān)測和在線分析,達到實時監(jiān)測的目的,因此需要系統(tǒng)和上位機進行通信。通常的微處理器都集成有1路或多路硬件UART通道,可以非常方便地實現(xiàn)和上位機進行串行通訊[1]。在工業(yè)控制、智能儀表等領(lǐng)域中,也常常使用簡便易用的串行通訊方式作為數(shù)據(jù)交換的手段。但在工業(yè)控制等環(huán)境中,常會有電氣噪聲干擾傳輸線路,使用RS-232通訊時經(jīng)常因外界的電氣干擾而導(dǎo)致信號傳輸錯誤;另外,RS-232通訊的最大傳輸距離在不增加緩沖器的情況下只可以達到15 m[2]。
本文基于此設(shè)計了一種基于DSP和RS-485串行通信的控制系統(tǒng),該系統(tǒng)選用SP3485芯片進行串行通信,該芯片采用了平衡差分接收的RS-485通信協(xié)議標準,其抗共模干擾能力強,接收靈敏度高,通常被用作為一種相對經(jīng)濟、具有相當高噪聲抑制、相對高的傳輸速率、傳輸距離遠、寬共模范圍的通信平臺。同時,RS-485電路具有控制方便、成本低廉等優(yōu)點。
系統(tǒng)采用TI公司的TMS320F28335芯片,該DSP融合了控制外設(shè)的集成功能和微處理器MCU的易用性,具有強大的控制和信號處理能力以及C語言編程效率,能夠?qū)崿F(xiàn)復(fù)雜的控制算法,內(nèi)部有3路專用的串行通信模塊(SCIA、SCIB、SCIC),每個模塊都有用于通信的I/O引腳:發(fā)送端SCIxTXD和接收端 SCIxRXD (x 分別為 A、B、C)。 SCI模塊支持CPU與其他使用標準不歸零碼格式(NRZ)的異步外圍設(shè)備間的數(shù)字通信。SCI接收器和發(fā)射器是各自擁有一個16級深度FIFO,也各自擁有自己的使能和中斷位。兩者都能獨立進行半雙工通信,或者聯(lián)立進行全雙工通信[3]。
系統(tǒng)中采用SP3485芯片,該芯片是1種+3.3 V低功耗半雙工RS-485收發(fā)器,完全滿足RS-485串行協(xié)議要求,數(shù)據(jù)傳輸速率高達10 Mb/s[4]。
DSP處理器TMS320F28335與SP3485芯片進行連接,構(gòu)成RS-485通信接口電路,如圖1所示。
圖1 RS-485通信接口電路Fig.1 Communication interface circuit
電路通過光耦TLP512-4對DSP處理器TMS320-F28335和RS-485總線電路進行隔離,提高系統(tǒng)的抗干擾能力。
SP3485接收器和發(fā)送器的選擇由DSP的GPIO20引腳控制,通過軟件編程控制GPIO20腳電平,可控制SP3485處于發(fā)送或接收狀態(tài)。
如果DE的邏輯電平為高時,將使能驅(qū)動器的差分輸出;如果為低時,則驅(qū)動器的輸出呈現(xiàn)三態(tài)。
如果RE#腳的邏輯電平為低時,使能接收器輸入,反之,禁止輸入。
DSP的SCI模塊發(fā)送器和接收器可以通過查詢和中斷方式進行控制。在查詢方式下,不使能接收和發(fā)送中斷,CPU通過查詢相應(yīng)標志位,狀態(tài)成立就去執(zhí)行相應(yīng)的動作。這種方式不需要開設(shè)SCI中斷,節(jié)約了CPU的資源,但是在高速通信速率下,有可能導(dǎo)致數(shù)據(jù)丟失,因此只建議在低速率情況下使用。在中斷方式下,CPU在中斷服務(wù)程序中進行數(shù)據(jù)的接收和發(fā)送,可以保證數(shù)據(jù)傳送的及時性和確定性,代價是增加了系統(tǒng)中斷[5]。本設(shè)計采用中斷方式,上位機和下位機采用應(yīng)答方式進行通信,系統(tǒng)的串行通信協(xié)議具體規(guī)定如表1所示。
表1 通信協(xié)議格式Tab.1 Communication frames format
下發(fā)和上傳數(shù)據(jù)指令都包括幀頭、字節(jié)長度、有效指令/數(shù)據(jù)、和校驗、幀尾5個部分,協(xié)議數(shù)據(jù)均采用16進制通信。
(1)幀頭:表示一幀數(shù)據(jù)的開始;
(2)字節(jié)長度:表示一幀數(shù)據(jù)的整個字節(jié)長度;
(3)有效指令/數(shù)據(jù):有效指令表示上位機要讓下位機執(zhí)行的命令;有效數(shù)據(jù)表示下位機向上位機反饋的相關(guān)信息;
(4)和校驗:表示有效指令/數(shù)據(jù)的數(shù)據(jù)相加和,如果相加超出了FF那么就取和的低字節(jié);
(5)幀尾:表示完整的一幀數(shù)據(jù)結(jié)束。
本系統(tǒng)的通信波特率為9600 b/s,每個字節(jié)包括8位數(shù)據(jù)位和l位停止位,無校驗。接收數(shù)據(jù)采用中斷方式,發(fā)送數(shù)據(jù)采用直接寫外設(shè)方式。對SCI初始化,設(shè)置數(shù)據(jù)幀格式、波特率、中斷優(yōu)先級等,SCI初始化程序為
采用中斷方式接收數(shù)據(jù),在接收中斷服務(wù)程序中,讀取SCI接收緩沖寄存器,放在自定義的接收緩沖區(qū)內(nèi)。一條指令信息幀包含多個字節(jié),需要識別完整的一幀數(shù)據(jù),設(shè)計中通過判斷數(shù)據(jù)頭、數(shù)據(jù)尾,對數(shù)據(jù)長度校驗來保證接收到完整的一幀數(shù)據(jù)。除了上述措施外,軟件中也啟用了定時器,進行超時處理,若在一定的時間內(nèi),沒有完整的接收到一組數(shù)據(jù),就將此幀數(shù)據(jù)丟棄,清除相應(yīng)標志以及緩沖區(qū),重新接收新的數(shù)據(jù)指令。具體中斷程序流程圖如圖2所示。
圖2 中斷接收數(shù)據(jù)流程Fig.2 Interrupt receiving data flow chart
為了保證下發(fā)數(shù)據(jù)指令準確有效執(zhí)行,在上述措施的基礎(chǔ)上,還進行了和校驗,和校驗程序放到主函數(shù)中的while(1)里面進行處理,部分程序為
上位機軟件使用 C++語言開發(fā),開發(fā)平臺為Visual Studio 2010,這個版本的Visual Studio提供了對C++新標準的支持,并增加了C++代碼的實時語法錯誤檢查,極大地提高了工作效率[6]。系統(tǒng)控制軟件主要下發(fā)控制指令,實現(xiàn)對測試平臺的控制和實時狀態(tài)顯示,如圖3所示。
圖3 控制界面Fig.3 Control interface
對加速度傳感器批量標定測試設(shè)備平臺進行試驗,上位機下發(fā)數(shù)據(jù)指令,主要對水平、豎直、翻轉(zhuǎn)電機進行操作。通過串口助手下發(fā)不同方位電機運轉(zhuǎn)、停止以及正反運行指令進行測試,測試的部分數(shù)據(jù)指令如圖4所示。
圖4 測試的數(shù)據(jù)指令Fig.4 Test data instructions
通過串口助手軟件調(diào)試穩(wěn)定后,換用編寫的上位機控制軟件下發(fā)數(shù)據(jù)指令進行調(diào)試,經(jīng)過反復(fù)試驗驗證,電機能夠執(zhí)行相應(yīng)的指令,性能穩(wěn)定、運行可靠,滿足了加速度傳感器的自動化批量標定測試方面的要求。
本系統(tǒng)實現(xiàn)了DSP與PC機通過RS-485進行串行通信,并成功應(yīng)用于加速度傳感器批量標定測試設(shè)備中。文中重點介紹了通信電路的設(shè)計以及通信協(xié)議,還詳細地介紹了DSP通信程序的設(shè)計,以及軟件采用的措施,提高系統(tǒng)通信的可靠性。經(jīng)試驗驗證,該系統(tǒng)硬件電路簡單,軟件編寫容易,數(shù)據(jù)通信穩(wěn)定可靠。
[1]王煉紅,章兢.TMS320F2812 DSP與PC機的串口通信設(shè)計[J].微計算機信息,2006,22(20):173-175.
[2]廣州致遠電子有限公司.嵌入式隔離RS-485收發(fā)器產(chǎn)品數(shù)據(jù)手冊[Z],2009.
[3]劉陵順,高艷麗,張樹團.TMS320F28335 DSP原理及開發(fā)編程[M].北京:北京航空航天大學(xué)出版社,2011.
[4]廣州致遠電子有限公司.數(shù)據(jù)手冊[Z],2009.
[5]徐科軍,陶維青,王海寧,等.DSP及其電氣自動化工程應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2010.
[6]邵憲輝.多路加速度傳感器測試系統(tǒng)設(shè)計[D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.