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