EM200在分布式探測站組網(wǎng)通信的應用
3.2 解決途徑
鑒于探測站發(fā)送的數據量和發(fā)送周期的不確定性,設計時(shí)必須考慮滿(mǎn)負荷的工作狀態(tài),即連接探測站的串口0一直處于接收峰值的狀態(tài)。為確保無(wú)丟失地接收探測站數據,串口0中斷優(yōu)先級必須高于串口1。在此前提下,問(wèn)題可歸結為當串口1中斷被暫時(shí)屏蔽得不到及時(shí)響應時(shí),如何完整接收超過(guò)串口1緩存容量的AT指令應答響應,解決途徑是擴大串口1的FIFO緩存。
由于TCP發(fā)送指令返回的應答響應在18~21 B之間,所以串口1的接收緩存必須大于等于21 B,需另選大容量緩存的專(zhuān)用串口芯片來(lái)替代LPC2214串口1。這里采用具備64 B FIFO緩存的并轉串芯片TL16C752B。值得注意的是雖然TL16C752B符合8080并行總線(xiàn)接口要求,但其寫(xiě)操作時(shí)序與相當部分的MCU不匹配,而絕大多數MCU沒(méi)有調整此部分時(shí)序的功能,其中就包括此處選用的LPC2214。這就需要外加一片用作時(shí)序匹配的CPLD,此處選用了EPM240,該部分電路示意圖如圖7所示。本文引用地址:http://dyxdggzs.com/article/155305.htm
MCU以中斷方式經(jīng)串口0接收探測站的數據,并將其按AT指令TCP發(fā)送命令格式傳至EM200模塊。EM200在完成當前TCP數據包發(fā)送處理后,將執行后的結果通過(guò)串口1返回給MCU,若MCU正忙于接收來(lái)自探測站的數據,則AT指令執行結果被壓入TL16C752B接收緩存,并通過(guò)中斷提示MCU此時(shí)串口1接收到數據,一旦MCU從串口0接收中斷釋放就立即轉去處理串口1接收中斷,足夠大的緩存保證了EM200響應結果能被完整接收。
4 軟件設計
4.1 轉發(fā)平臺的軟件設計
由于EM200僅支持TCP協(xié)議中的客戶(hù)端模式,而各個(gè)TCP客戶(hù)端之間是不能直接通信的。因此在收發(fā)系統中必須引入中間轉發(fā)平臺作為T(mén)CP服務(wù)器端,通過(guò)TCP服務(wù)器對收到的客戶(hù)端數據進(jìn)行轉發(fā)處理從而間接實(shí)現在客戶(hù)端間的數據交換。TCP服務(wù)器端的軟件編寫(xiě)較為容易,由于該軟件最終運行在公網(wǎng)的PC上,可以在VB環(huán)境下利用WinSock組件來(lái)實(shí)現。TCP服務(wù)器開(kāi)啟兩組監聽(tīng)端口分別監聽(tīng)來(lái)自接收端和發(fā)送端的鏈接請求,當建立起與發(fā)送端和接收端的TCP鏈接后,將發(fā)送端鏈接收到的數據從接收端鏈接發(fā)送出去,如此完成轉發(fā)操作。
4.2 收發(fā)終端軟件設計
針對分布式無(wú)源探測網(wǎng)絡(luò )較高的實(shí)時(shí)性要求,若仍采用無(wú)限循環(huán)的前/后臺軟件架構是不合適的,而引入實(shí)時(shí)操作系統(RTOS)一方面可以提高整體的響應時(shí)間,另一方面可以將復雜的應用分解成多個(gè)相對獨立子功能模塊,降低了軟件編寫(xiě)復雜程度。此處選擇μC/OS-Ⅱ,其較少的硬件資源開(kāi)銷(xiāo)很適合ARM7這類(lèi)MCU。
4.2.1 發(fā)送端軟件設計
發(fā)送端可以拆分成三個(gè)進(jìn)程,每個(gè)進(jìn)程都是一個(gè)無(wú)限循環(huán),依靠μC/OS-Ⅱ內核的調度機制,MCU在三個(gè)進(jìn)程之間切換執行,實(shí)現發(fā)送端對探測站數據的接收和CDMA發(fā)送操作。
進(jìn)程1的優(yōu)先級最高,其任務(wù)是讀取串口0收到的數據并將其壓入在RAM中開(kāi)辟的緩沖區。串口0的讀取操作是由中斷服務(wù)程序ISR配合RTOS中的信號量實(shí)現的。具體過(guò)程是在進(jìn)程1中調用RTOS的OSSemPend函數阻塞當前進(jìn)程,當串口0收到數據并觸發(fā)中斷后,在中斷服務(wù)程序ISR中讀出的串口0緩存數據,并調用RTOS的OSSemPost函數釋放相應的信號量,則原先被阻塞的進(jìn)程繼續執行,此時(shí)將ISR中讀出的數據壓入RAM中開(kāi)辟的緩沖區,完成一次循環(huán),如圖8所示。
進(jìn)程2負責從串口1接收來(lái)自EM200模塊的AT指令應答結果,由于預先得知TCP發(fā)送指令執行后的應答響應不會(huì )超過(guò)串口1的64 B FIFO緩存容量,因此實(shí)時(shí)接收的要求不如串口0嚴格,所以進(jìn)程2優(yōu)先級可低于進(jìn)程1。進(jìn)程2的架構與進(jìn)程1基本相同,惟一區別是將讀出的應答響應存到指定的AT指令暫存緩沖區,如圖9所示。
評論