焦佳偉 ,石云波 ,鄒 坤
(1.蘇州中盛納米科技有限公司,蘇州 215123;2.中北大學 電子測試技術國家重點實驗室,太原 030051)
加速度傳感器在研制后及使用前均需要進行參數性能的測試和標定,用到加速度傳感器批量標定測試設備,該設備在運行過程中,需要下發數據指令進行控制,也需要向上位機反饋運行數據,實時對工作過程中的位置信號以及工作狀況進行監測和在線分析,達到實時監測的目的,因此需要系統和上位機進行通信。通常的微處理器都集成有1路或多路硬件UART通道,可以非常方便地實現和上位機進行串行通訊[1]。在工業控制、智能儀表等領域中,也常常使用簡便易用的串行通訊方式作為數據交換的手段。但在工業控制等環境中,常會有電氣噪聲干擾傳輸線路,使用RS-232通訊時經常因外界的電氣干擾而導致信號傳輸錯誤;另外,RS-232通訊的最大傳輸距離在不增加緩沖器的情況下只可以達到15 m[2]。
本文基于此設計了一種基于DSP和RS-485串行通信的控制系統,該系統選用SP3485芯片進行串行通信,該芯片采用了平衡差分接收的RS-485通信協議標準,其抗共模干擾能力強,接收靈敏度高,通常被用作為一種相對經濟、具有相當高噪聲抑制、相對高的傳輸速率、傳輸距離遠、寬共模范圍的通信平臺。同時,RS-485電路具有控制方便、成本低廉等優點。
系統采用TI公司的TMS320F28335芯片,該DSP融合了控制外設的集成功能和微處理器MCU的易用性,具有強大的控制和信號處理能力以及C語言編程效率,能夠實現復雜的控制算法,內部有3路專用的串行通信模塊(SCIA、SCIB、SCIC),每個模塊都有用于通信的I/O引腳:發送端SCIxTXD和接收端 SCIxRXD (x 分別為 A、B、C)。 SCI模塊支持CPU與其他使用標準不歸零碼格式(NRZ)的異步外圍設備間的數字通信。SCI接收器和發射器是各自擁有一個16級深度FIFO,也各自擁有自己的使能和中斷位。兩者都能獨立進行半雙工通信,或者聯立進行全雙工通信[3]。
系統中采用SP3485芯片,該芯片是1種+3.3 V低功耗半雙工RS-485收發器,完全滿足RS-485串行協議要求,數據傳輸速率高達10 Mb/s[4]。
DSP處理器TMS320F28335與SP3485芯片進行連接,構成RS-485通信接口電路,如圖1所示。

圖1 RS-485通信接口電路Fig.1 Communication interface circuit
電路通過光耦TLP512-4對DSP處理器TMS320-F28335和RS-485總線電路進行隔離,提高系統的抗干擾能力。
SP3485接收器和發送器的選擇由DSP的GPIO20引腳控制,通過軟件編程控制GPIO20腳電平,可控制SP3485處于發送或接收狀態。
如果DE的邏輯電平為高時,將使能驅動器的差分輸出;如果為低時,則驅動器的輸出呈現三態。
如果RE#腳的邏輯電平為低時,使能接收器輸入,反之,禁止輸入。
DSP的SCI模塊發送器和接收器可以通過查詢和中斷方式進行控制。在查詢方式下,不使能接收和發送中斷,CPU通過查詢相應標志位,狀態成立就去執行相應的動作。這種方式不需要開設SCI中斷,節約了CPU的資源,但是在高速通信速率下,有可能導致數據丟失,因此只建議在低速率情況下使用。在中斷方式下,CPU在中斷服務程序中進行數據的接收和發送,可以保證數據傳送的及時性和確定性,代價是增加了系統中斷[5]。本設計采用中斷方式,上位機和下位機采用應答方式進行通信,系統的串行通信協議具體規定如表1所示。

表1 通信協議格式Tab.1 Communication frames format
下發和上傳數據指令都包括幀頭、字節長度、有效指令/數據、和校驗、幀尾5個部分,協議數據均采用16進制通信。
(1)幀頭:表示一幀數據的開始;
(2)字節長度:表示一幀數據的整個字節長度;
(3)有效指令/數據:有效指令表示上位機要讓下位機執行的命令;有效數據表示下位機向上位機反饋的相關信息;
(4)和校驗:表示有效指令/數據的數據相加和,如果相加超出了FF那么就取和的低字節;
(5)幀尾:表示完整的一幀數據結束。
本系統的通信波特率為9600 b/s,每個字節包括8位數據位和l位停止位,無校驗。接收數據采用中斷方式,發送數據采用直接寫外設方式。對SCI初始化,設置數據幀格式、波特率、中斷優先級等,SCI初始化程序為


采用中斷方式接收數據,在接收中斷服務程序中,讀取SCI接收緩沖寄存器,放在自定義的接收緩沖區內。一條指令信息幀包含多個字節,需要識別完整的一幀數據,設計中通過判斷數據頭、數據尾,對數據長度校驗來保證接收到完整的一幀數據。除了上述措施外,軟件中也啟用了定時器,進行超時處理,若在一定的時間內,沒有完整的接收到一組數據,就將此幀數據丟棄,清除相應標志以及緩沖區,重新接收新的數據指令。具體中斷程序流程圖如圖2所示。

圖2 中斷接收數據流程Fig.2 Interrupt receiving data flow chart
為了保證下發數據指令準確有效執行,在上述措施的基礎上,還進行了和校驗,和校驗程序放到主函數中的while(1)里面進行處理,部分程序為


上位機軟件使用 C++語言開發,開發平臺為Visual Studio 2010,這個版本的Visual Studio提供了對C++新標準的支持,并增加了C++代碼的實時語法錯誤檢查,極大地提高了工作效率[6]。系統控制軟件主要下發控制指令,實現對測試平臺的控制和實時狀態顯示,如圖3所示。

圖3 控制界面Fig.3 Control interface
對加速度傳感器批量標定測試設備平臺進行試驗,上位機下發數據指令,主要對水平、豎直、翻轉電機進行操作。通過串口助手下發不同方位電機運轉、停止以及正反運行指令進行測試,測試的部分數據指令如圖4所示。

圖4 測試的數據指令Fig.4 Test data instructions
通過串口助手軟件調試穩定后,換用編寫的上位機控制軟件下發數據指令進行調試,經過反復試驗驗證,電機能夠執行相應的指令,性能穩定、運行可靠,滿足了加速度傳感器的自動化批量標定測試方面的要求。
本系統實現了DSP與PC機通過RS-485進行串行通信,并成功應用于加速度傳感器批量標定測試設備中。文中重點介紹了通信電路的設計以及通信協議,還詳細地介紹了DSP通信程序的設計,以及軟件采用的措施,提高系統通信的可靠性。經試驗驗證,該系統硬件電路簡單,軟件編寫容易,數據通信穩定可靠。
[1]王煉紅,章兢.TMS320F2812 DSP與PC機的串口通信設計[J].微計算機信息,2006,22(20):173-175.
[2]廣州致遠電子有限公司.嵌入式隔離RS-485收發器產品數據手冊[Z],2009.
[3]劉陵順,高艷麗,張樹團.TMS320F28335 DSP原理及開發編程[M].北京:北京航空航天大學出版社,2011.
[4]廣州致遠電子有限公司.數據手冊[Z],2009.
[5]徐科軍,陶維青,王海寧,等.DSP及其電氣自動化工程應用[M].北京:北京航空航天大學出版社,2010.
[6]邵憲輝.多路加速度傳感器測試系統設計[D].哈爾濱:哈爾濱工業大學,2010.