<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于SC28L198的多串口服務(wù)器設計

基于SC28L198的多串口服務(wù)器設計

作者: 時(shí)間:2011-09-15 來(lái)源:網(wǎng)絡(luò ) 收藏

目前工業(yè)領(lǐng)域中有大量的設備不具備以太網(wǎng)接口,但這些設備都提供RS-232或RS-422/485。RS-232只能提供近距離數據傳輸,且速度不高。RS-422/485雖然能提供遠距離數據傳輸,但卻是獨立于Internet之外,不便于網(wǎng)絡(luò )管理。而以太網(wǎng)有傳輸速度快,傳輸距離遠,能夠為任何一臺聯(lián)網(wǎng)的計算機提供監控和數據存取服務(wù)。為使傳統設備能夠方便、快捷地接入互聯(lián)網(wǎng),筆者以ARM7處理器LM8962和串口擴展芯片為核心構建嵌入式系統(串口),完成以太網(wǎng)數據與串行口數據之間的相互轉換。一方面,LM8962將發(fā)送過(guò)來(lái)的串口數據打包成以太網(wǎng)數據幀,并通過(guò)自身的以太網(wǎng)控制器發(fā)往主機;另一方面,LM8962將收到的以太網(wǎng)數據解包,分離出數據和相應的串口設備號,然后通過(guò)的相應通道發(fā)往串口設備。筆者簡(jiǎn)化了復雜的硬件電路,能夠實(shí)現低成本、高速度的單芯片多串口擴展方案。采用該方案,能夠將串口設備虛擬成計算機的一個(gè)COM接口,用戶(hù)對串口設備進(jìn)行遠程操作無(wú)需考慮數據傳輸的復雜性。

本文引用地址:http://dyxdggzs.com/article/155750.htm

  1 串口硬件結構

  該系統選用TI公司生產(chǎn)的ARM芯片LM8962作為主控MCU以及選用Phillips公司生產(chǎn)的芯片SC28L198作為8通道UART控制器。

  該系統的主要功能是完成TCP/IP協(xié)議與串口通信協(xié)議之間的相互轉換。

  主控制器LM8962是由LuminaryMicro公司開(kāi)發(fā)的一款ARMCortex-M3MCU內核的32位微處理器。該處理器支持的最大主頻為50MHz,具有嵌入式Flash和SRAM、運動(dòng)控制PWM等內部模塊。LM8962內部集成了以太網(wǎng)控制器,結合了Bosch控制器局域網(wǎng)技術(shù)和10/100以太網(wǎng)媒體訪(fǎng)問(wèn)控制(MAC)以及物理(PHY)層,簡(jiǎn)化了該系統以太網(wǎng)連接的硬件電路。該微控制器使用了兼容ARMThumb?的Thumb2指令集來(lái)減少存儲容量的需求,并以此達到降低成本的目的。系統的硬件結構如圖1所示。

圖1硬件結構圖

  UART器件SC28L198提供了8路相互獨立的全雙工異步通道,每路UART通過(guò)同步總線(xiàn)接口與主機進(jìn)行通信。每個(gè)通道的接收器和發(fā)送器均具有16個(gè)字符的FIFO,最大限度地減少了接收器超時(shí)的情況,使用用戶(hù)定義的Xon/Xoff字符可實(shí)現自動(dòng)帶內流量控制,在喚醒模式下可進(jìn)行地址識別。SC28L198同時(shí)還包括以下功能模塊:

  時(shí)序模塊,其中包含一個(gè)可產(chǎn)生22個(gè)工業(yè)標準的波特率的通用波特率發(fā)生器和用來(lái)產(chǎn)生非標準波特率的2個(gè)16位計數器;I/O口控制模塊和狀態(tài)變化檢測器模塊;可仲裁24個(gè)中斷的中斷仲裁系統。為了降低軟件開(kāi)銷(xiāo),器件包含的中斷仲裁系統通過(guò)直接訪(fǎng)問(wèn)或修改中斷向量的方法來(lái)報告UART中斷的情況。報告的中斷上下文包括通道編號、器件中斷類(lèi)型(接收器COS等)、發(fā)送器或接收器FIFO的填充點(diǎn)。

  2 串口擴展電路

  圖2描述了具有8通道的串口聯(lián)網(wǎng)的電路連接框圖。串口服務(wù)器的硬件由兩個(gè)主要芯片和其他外圍電路組成。在SC28L198的管腳中,CEN、W_RN、IACKN、DACKN、IRQN、SCLK管腳控制著(zhù)主機外部與內部數據總線(xiàn)與SC28L198之間的數據傳輸,管腳A7~A0為SC28L198與ARM相連的地址總線(xiàn),D7~D0為SC28L198與ARM傳輸數據的數據總線(xiàn)。

圖2電路連接框圖

波特率發(fā)生器工作在振蕩器或外部X1/CCLK時(shí)鐘輸入下,可以產(chǎn)生22個(gè)50.0~230.4k范圍內的常用數據通信波特率。通常使用的外部晶振頻率為3.6864MHz和7.3728MHz,在7.3728MHz工作頻率下產(chǎn)生的波特率是3.6864MHz下產(chǎn)生的兩倍。每個(gè)接收器和發(fā)送器可以工作在不同的波特率下,通過(guò)向波特率選擇寄存器寫(xiě)入不同的選擇代碼將產(chǎn)生不同的波特率。

  SC28L198的系統時(shí)鐘(SCLK)可同時(shí)作為主機接口和其他內部電路的基本時(shí)間基準。為了確保內部控制器的正確操作,提供的SCLK頻率必須大于X1晶體時(shí)鐘的2倍或任何外部的1X數據時(shí)鐘輸入。由于LM8962芯片本身沒(méi)有提供時(shí)鐘信號輸出引腳,若由定時(shí)器中斷產(chǎn)生7.3728MHz以上頻率的方波信號將使LM8962頻繁處理中斷程序,影響程序執行效率。當SC28L198工作在50MHz頻率下,其中的PWM硬件模塊最高可以產(chǎn)生25MHz輸出,且不產(chǎn)生任何中斷,因此LM8962將從頻繁的查詢(xún)和處理中斷中解脫出來(lái)。

  在該系統中,需根據不同的應用場(chǎng)合使用RS-232收發(fā)器或RS-422/485收發(fā)器及其外圍電路。使用RS-232收發(fā)器可以進(jìn)行近距離全雙工通信,使用RS-422/485收發(fā)器能夠進(jìn)行遠距離數據傳輸。由于整個(gè)系統工作于3.3V電壓下,為了匹配TTL電平和RS-232電平或RS-422/485電平,該電路采用MAX3232芯片或MAX3485芯片。

  LM8962內部集成的以太網(wǎng)控制器包含一個(gè)完整的MAC模塊和PHY接口器件,簡(jiǎn)化了硬件電路。該以太網(wǎng)控制器完全支持10BASE-T和100BASE-TX標準以及遵守IEEE802.3協(xié)議。整個(gè)系統連接以太網(wǎng)只需一個(gè)隔離變壓器,無(wú)需外接以太網(wǎng)控制芯片,簡(jiǎn)化了硬件設計。隔離變壓器能夠隔離模塊地和數字地,從而保證SC28L198能夠遠離外界的復雜信號。

  3 軟件設計

  在該系統中,用戶(hù)可以對串口服務(wù)器的配置、狀態(tài)查詢(xún)和在計算機(客戶(hù)端)上通過(guò)以太網(wǎng)收發(fā)數據進(jìn)而操作該串口服務(wù)器。在客戶(hù)端上,8個(gè)SC28L198的通道被虛擬成8個(gè)COM接口。操作這些虛擬COM接口就如同操作計算機上的物理COM接口,因此用戶(hù)不必知道數據是通過(guò)以太網(wǎng)進(jìn)行傳輸。實(shí)際上,用戶(hù)操作這些COM接口時(shí),產(chǎn)生的命令和數據將被打包成一幀數據并發(fā)往處理器LM8962,然后LM8962將數據通過(guò)SC28L198的相應通道發(fā)送到設備上。串口服務(wù)器使用ARM處理器LM8962作為嵌入式設備的核心器件,在其上運行μC/OS-II操作系統來(lái)打開(kāi)、關(guān)閉和管理8個(gè)串行通道的相應進(jìn)程。因此,8個(gè)串行通道能夠同時(shí)收發(fā)數據而不相互影響。

  3.1μC/OS-II

  μC/OS-II是免費開(kāi)源、專(zhuān)門(mén)為嵌入式系統設計的實(shí)時(shí)操作系統。它包括任務(wù)計劃、任務(wù)管理、時(shí)間管理、內存管理、任務(wù)間的通信以及其他一些基本功能。在該系統中采用μC/OS-II來(lái)實(shí)現以下功能:

 ?。?)建立一個(gè)消息隊列來(lái)存儲串口通道的消息和UDP消息;(2)控制SC28L198收發(fā)串口數據;(3)建立一個(gè)任務(wù)來(lái)管理UDP通信,并通過(guò)以太網(wǎng)收發(fā)數據;(4)建立一個(gè)任務(wù)來(lái)管理串口通道收發(fā)任務(wù)與UDP通信任務(wù)之間的通信。

  3.2TCP/IP模塊

  TCP/IP協(xié)議具有分層結構,能夠實(shí)現對以太網(wǎng)數據幀進(jìn)行打包和解包。UDP在TCP/IP的傳輸層,提供一種不可靠的數據傳輸服務(wù),但UDP協(xié)議相對簡(jiǎn)單,比起TCP協(xié)議更能夠提供實(shí)時(shí)和快速的數據傳輸。在正常的運行過(guò)程中,該TCP/IP程序模塊能夠從數據隊列中獲取串口通信的數據并將數據打包至UDP包中,然后將UDP包發(fā)送至IP層,最后形成一幀數據。該幀數據將會(huì )通過(guò)以太網(wǎng)發(fā)送到計算機中。與此同時(shí),該程序模塊還將從以太網(wǎng)接收到的數據解包出來(lái),將其中的串口通道號和串口數據發(fā)送到SC28L198中去。表1描述了收發(fā)一幀數據的格式。

表1數據傳輸格式


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>