<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計應(yīng)用 > EM200在分布式探測站組網(wǎng)通信的應(yīng)用

          EM200在分布式探測站組網(wǎng)通信的應(yīng)用

          作者: 時間:2012-02-10 來源:網(wǎng)絡(luò) 收藏

          3.2 解決途徑
          鑒于站發(fā)送的數(shù)據(jù)量和發(fā)送周期的不確定性,設(shè)計時必須考慮滿負(fù)荷的工作狀態(tài),即連接站的串口0一直處于接收峰值的狀態(tài)。為確保無丟失地接收站數(shù)據(jù),串口0中斷優(yōu)先級必須高于串口1。在此前提下,問題可歸結(jié)為當(dāng)串口1中斷被暫時屏蔽得不到及時響應(yīng)時,如何完整接收超過串口1緩存容量的AT指令應(yīng)答響應(yīng),解決途徑是擴(kuò)大串口1的FIFO緩存。
          由于TCP發(fā)送指令返回的應(yīng)答響應(yīng)在18~21 B之間,所以串口1的接收緩存必須大于等于21 B,需另選大容量緩存的專用串口芯片來替代LPC2214串口1。這里采用具備64 B FIFO緩存的并轉(zhuǎn)串芯片TL16C752B。值得注意的是雖然TL16C752B符合8080并行總線接口要求,但其寫操作時序與相當(dāng)部分的MCU不匹配,而絕大多數(shù)MCU沒有調(diào)整此部分時序的功能,其中就包括此處選用的LPC2214。這就需要外加一片用作時序匹配的CPLD,此處選用了EPM240,該部分電路示意圖如圖7所示。

          本文引用地址:http://www.ex-cimer.com/article/155305.htm

          e.jpg


          MCU以中斷方式經(jīng)串口0接收探測站的數(shù)據(jù),并將其按AT指令TCP發(fā)送命令格式傳至模塊。在完成當(dāng)前TCP數(shù)據(jù)包發(fā)送處理后,將執(zhí)行后的結(jié)果通過串口1返回給MCU,若MCU正忙于接收來自探測站的數(shù)據(jù),則AT指令執(zhí)行結(jié)果被壓入TL16C752B接收緩存,并通過中斷提示MCU此時串口1接收到數(shù)據(jù),一旦MCU從串口0接收中斷釋放就立即轉(zhuǎn)去處理串口1接收中斷,足夠大的緩存保證了響應(yīng)結(jié)果能被完整接收。

          4 軟件設(shè)計
          4.1 轉(zhuǎn)發(fā)平臺的軟件設(shè)計
          由于EM200僅支持TCP協(xié)議中的客戶端模式,而各個TCP客戶端之間是不能直接的。因此在收發(fā)系統(tǒng)中必須引入中間轉(zhuǎn)發(fā)平臺作為TCP服務(wù)器端,通過TCP服務(wù)器對收到的客戶端數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)處理從而間接實現(xiàn)在客戶端間的數(shù)據(jù)交換。TCP服務(wù)器端的軟件編寫較為容易,由于該軟件最終運(yùn)行在公網(wǎng)的PC上,可以在VB環(huán)境下利用WinSock組件來實現(xiàn)。TCP服務(wù)器開啟兩組監(jiān)聽端口分別監(jiān)聽來自接收端和發(fā)送端的鏈接請求,當(dāng)建立起與發(fā)送端和接收端的TCP鏈接后,將發(fā)送端鏈接收到的數(shù)據(jù)從接收端鏈接發(fā)送出去,如此完成轉(zhuǎn)發(fā)操作。
          4.2 收發(fā)終端軟件設(shè)計
          針對無源探測網(wǎng)絡(luò)較高的實時性要求,若仍采用無限循環(huán)的前/后臺軟件架構(gòu)是不合適的,而引入實時操作系統(tǒng)(RTOS)一方面可以提高整體的響應(yīng)時間,另一方面可以將復(fù)雜的分解成多個相對獨立子功能模塊,降低了軟件編寫復(fù)雜程度。此處選擇μC/OS-Ⅱ,其較少的硬件資源開銷很適合ARM7這類MCU。
          4.2.1 發(fā)送端軟件設(shè)計
          發(fā)送端可以拆分成三個進(jìn)程,每個進(jìn)程都是一個無限循環(huán),依靠μC/OS-Ⅱ內(nèi)核的調(diào)度機(jī)制,MCU在三個進(jìn)程之間切換執(zhí)行,實現(xiàn)發(fā)送端對探測站數(shù)據(jù)的接收和CDMA發(fā)送操作。
          進(jìn)程1的優(yōu)先級最高,其任務(wù)是讀取串口0收到的數(shù)據(jù)并將其壓入在RAM中開辟的緩沖區(qū)。串口0的讀取操作是由中斷服務(wù)程序ISR配合RTOS中的信號量實現(xiàn)的。具體過程是在進(jìn)程1中調(diào)用RTOS的OSSemPend函數(shù)阻塞當(dāng)前進(jìn)程,當(dāng)串口0收到數(shù)據(jù)并觸發(fā)中斷后,在中斷服務(wù)程序ISR中讀出的串口0緩存數(shù)據(jù),并調(diào)用RTOS的OSSemPost函數(shù)釋放相應(yīng)的信號量,則原先被阻塞的進(jìn)程繼續(xù)執(zhí)行,此時將ISR中讀出的數(shù)據(jù)壓入RAM中開辟的緩沖區(qū),完成一次循環(huán),如圖8所示。

          h.jpg


          進(jìn)程2負(fù)責(zé)從串口1接收來自EM200模塊的AT指令應(yīng)答結(jié)果,由于預(yù)先得知TCP發(fā)送指令執(zhí)行后的應(yīng)答響應(yīng)不會超過串口1的64 B FIFO緩存容量,因此實時接收的要求不如串口0嚴(yán)格,所以進(jìn)程2優(yōu)先級可低于進(jìn)程1。進(jìn)程2的架構(gòu)與進(jìn)程1基本相同,惟一區(qū)別是將讀出的應(yīng)答響應(yīng)存到指定的AT指令暫存緩沖區(qū),如圖9所示。

          i.jpg



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();