<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è) > 汽車(chē)電子 > 嵌入式系統中擴展串行口的幾種方法

嵌入式系統中擴展串行口的幾種方法

——
作者: 時(shí)間:2007-04-05 來(lái)源: 收藏
引言
    串行接口設備憑借其控制靈活、接口簡(jiǎn)單、占用系統資源少等優(yōu)點(diǎn),被廣泛應用于工業(yè)控制、家庭安防、GPS衛星定位導航以及水、電、氣表的抄表等領(lǐng)域。在這些中,可能會(huì )有很多從設備都通過(guò)串行接口與主機進(jìn)行通信,如GPRS MODEM、紅外發(fā)送和接收模塊、RS485總線(xiàn)接口等。這使得開(kāi)發(fā)人員常常面臨中主機串行通信接口不足的問(wèn)題,針對此問(wèn)題,本文介紹了幾種常見(jiàn)的解決方法。
     
軟件模擬法
    軟件模擬法可根據串行通訊的傳送格式,利用定時(shí)器和主機的I/O口來(lái)模擬串行通訊的時(shí)序,以達到擴展串口的目的。

    接收過(guò)程中需要檢測起始位,這可以使用查詢(xún)方式,或者,在端口具有中斷功能的主機中也可以使用端口的中斷進(jìn)行處理。接收和發(fā)送過(guò)程中,對定時(shí)的處理既可以使用查詢(xún)方式也可以使用定時(shí)器中斷方式。為了確保數據的正確性,在接收過(guò)程中可以在檢測異步傳輸的起始信號處加上一些防干擾處理,在接收每個(gè)位時(shí)可以采用多次采樣。
  
利用并口轉串口擴展  
基于Intel8251的擴展
    Intel8251是一種通用的同步/異步發(fā)送器(USART),它的工作方式可以通過(guò)編程設置,并具有獨立的接收/發(fā)送器。能以同步或異步串行通信方式工作,自動(dòng)完成幀格式,具有奇、偶校驗和錯誤檢測電路。

基于TL16C554的擴展
    TL16C554是TI公司生產(chǎn)的4通道異步收發(fā)器集成芯片。對TL16C554串行通道的控制,是通過(guò)對控制寄存器LCR、IER、DLL、DLM、MCR和FCR編程來(lái)實(shí)現的。這些控制字決定字符長(cháng)度、停止位的個(gè)數、奇偶校驗、波特率以及調制解調器接口??刂萍拇嫫骺梢匀我忭樞驅?xiě)入,但是IER必須最后一個(gè)寫(xiě)入,因為它控制中斷使能。串行通道內的波特率發(fā)生器(BRG)允許時(shí)鐘除以1至65535之間的任意數,BRG根據其不同的三種通用頻率中的一種來(lái)決定標準波特率。
16C55x系列芯片還包括16C550、16C552,分別可以擴展1個(gè)和2個(gè)串行口。
利用串行口擴展串行口
基于GM8123/25系列芯片的串行口擴展
    GM8123/25系列串口擴展芯片可以全硬件實(shí)現串口擴展,通訊格式可設置,并與標準串口通訊格式兼容。

    GM8125可擴展5個(gè)標準串口,通過(guò)外部引腳選擇串口擴展模式:?jiǎn)瓮ǖ拦ぷ髂J胶投嗤ǖ拦ぷ髂J?。單通道模式下,無(wú)需設置芯片的通訊格式,子串口和母串口以相同的波特率工作,同一時(shí)刻只允許一組子串口和母串口通訊,工作子串口由地址線(xiàn)選擇。單通道工作模式適用于所有從機不需要同時(shí)通訊,并且通訊過(guò)程完全由主機控制的系統。多通道模式下,各子串口波特率相同,允許所有子串口同時(shí)與母串口通訊,母串口以子串口波特率的6倍工作。發(fā)送時(shí)由地址線(xiàn)選擇用來(lái)發(fā)送數據的子串口;接收時(shí)子串口能主動(dòng)響應從機發(fā)送的數據,再由母串口發(fā)送給主機,同時(shí)由地址線(xiàn)返回接收到數據的子串口地址,主機在接收到子串口送來(lái)的數據后,可以根據地址線(xiàn)的狀態(tài)判斷數據是由哪一個(gè)從機發(fā)送的。

    多通道工作模式下,在進(jìn)行數據通訊前要對芯片進(jìn)行工作方式設置,包括串口幀格式設置和通訊波特率設置。

    通過(guò)串行口和控制引腳相互配合可對芯片進(jìn)行工作方式設置,引腳MS為0、且STADD2~STADD0為000時(shí)寫(xiě)命令字,引腳MS為1、STADD2~STADD0為000時(shí)讀命令字。進(jìn)行工作方式設置時(shí),芯片的幀格式和母串口工作波特率與上一次進(jìn)行數據通訊時(shí)一致;而復位后的幀格式為11bit,母串口波特率為7200bps。     

基于SP2338的串行口擴展
     SP2338是采用低功耗CMOS 工藝設計的通用異步串行口擴展芯片,它可輕松將主機原有的1個(gè)串行口擴展成3 個(gè)全新的全雙工串行口。

    SP2338適用于1個(gè)起始位、8個(gè)數據位、1個(gè)停止位的多串口系統,也就是說(shuō)其幀格式是不可編程的。主機通過(guò)改變ADRI1、ADRI0地址線(xiàn)狀態(tài)的方式選擇3個(gè)子串口中的任意一個(gè),3個(gè)子串口的地址分別為00、01、10。地址11用于執行SP2338 芯片本身的復位指令0x35 或0xB5、睡眠指令0x55或0xD5、延時(shí)指令0x00。向RX0~RX3中的任意一個(gè)接收端口寫(xiě)任意數據即可將SP2338喚醒,但由于SP2338的喚醒時(shí)間需要25ms左右,故用于芯片喚醒的數據將不會(huì )被主機接收。因此,可以先發(fā)送一個(gè)字節數據用于喚醒芯片,延時(shí)25ms后即可進(jìn)行正常的數據傳輸。

    未使用的輸入端口,如RX0、RX1、RX2等必須連接到VCC;未使用的輸出端口,如TX0、TX1、TX2等必須懸空;未使用的ADRI0、ADRI1必須連接到GND。

    主機收發(fā)數據時(shí)序為:主機TX3接收到一個(gè)字節后應立即讀取SP2338的輸出地址ADRO0、ADRO1的狀態(tài),判斷接收到的數據來(lái)自哪個(gè)子串口;主機發(fā)送數據時(shí),首先通過(guò)ADRI0、ADRI1選擇某一個(gè)子串口,再向TX3寫(xiě)將發(fā)送的數據。

本文設計的擴展方法
    在電路設計的過(guò)程中,本文設計出一種適合自己系統需要、將1個(gè)串口擴展為3個(gè)串口的方案,
    其中,4001是四2輸入端或非門(mén),40106是六施密特觸發(fā)器。4001的4腳和9腳分別為主機的RXD和TXD,40106的2腳和9腳為子串口的TXD0和RXD0,6腳和11腳為子串口的TXD1和RXD1,4腳和13腳為子串口的TXD2和RXD2。

    根據圖的連接方式和邏輯代數的推導可得:RXD的狀態(tài)等于40106的9腳、11腳、13腳的狀態(tài)相與。當40106的9腳、11腳、13腳中的任意一個(gè)有數據信號時(shí),由于在異步串行通訊中,無(wú)數據傳輸時(shí)的引腳狀態(tài)為高,因此RXD上就能接收到有數據信號的那個(gè)引腳上的數據狀態(tài)。40106的2腳、4腳、6腳的狀態(tài)等于TXD的狀態(tài),所以可以利用40106的2腳、4腳、6腳做為子串口的TXD。

    這種設計方案適用于主機同時(shí)向多個(gè)串行設備發(fā)送數據,而從設備不同時(shí)向主機發(fā)送數據的情況。再增加幾個(gè)信號線(xiàn),就可以區分出向哪一個(gè)從設備發(fā)送數據以及接收到的數據是來(lái)自哪一個(gè)從設備。在本文的系統中,主機是通信的發(fā)起者,接收到的數據來(lái)自哪個(gè)從設備是可以預知的,因此,只需再增加3個(gè)控制從設備使能的信號線(xiàn)即可。

幾種方法的比較
    在需要擴展系統的串行口時(shí),使用多串行口單片機的方法是最容易想到的。由于串口集成在單片機內部,因此設備體積較小,抗干擾能力較高,但多串口單片機通常價(jià)格較高,而且,如果是開(kāi)發(fā)人員所不熟悉的型號,還需要開(kāi)發(fā)人員重新學(xué)習并購買(mǎi)與之配套的開(kāi)發(fā)工具,這延長(cháng)了產(chǎn)品的開(kāi)發(fā)周期,也增加了產(chǎn)品的開(kāi)發(fā)成本。

    軟件模擬法占用的系統資源少、成本低、易于實(shí)現。但其采樣次數較低,難以保證數據的正確性,而且一般不能模擬過(guò)高的波特率。

    并行口擴展串口方法的功能比較強大,能提供MODEM控制信號、通訊速度高,但控制復雜,占用MCU的端口資源較多,同時(shí)價(jià)格也較高。

    利用串行口擴展串行口,控制簡(jiǎn)單,能最大限度地減少控制線(xiàn),不需要占用太多的主機系統資源,而且通用性強,性能穩定,可保證數據的正確性。GM812x的不足之處在于:不滿(mǎn)足超低功耗應用要求;多通道模式下,所有子串口工作波特率只能設置成統一值,不適用于各從機工作波特率不一致、又要求同時(shí)工作的系統。SP2338雖然能滿(mǎn)足低功耗的要求,但其子串口波特率也需要設置為統一值,并且不能對數據幀格式編程,最高波特率也只有9600bps。

    本文提出的方法中,各個(gè)子串口的串行特性和母串口相同,使用簡(jiǎn)單,占用系統資源少,易于控制(最少2個(gè)控制信號擴展3個(gè)串口),穩定性好。其功耗取決于4001和40106,它們的功耗都在mA級。其最高波特率取決于4001和40106的響應速度,4001和40106的最大響應延遲是250ns,所以理論上最高波特率可達4Mbps。此方法已經(jīng)成功地應用于三表遠傳系統。該方法的缺點(diǎn)是,它不能用于從機工作波特率不一致、又要求同時(shí)工作的系統。
結語(yǔ)
    本文設計了一種擴展串口的方法以解決在實(shí)際應用中遇到的主機串行口資源不足的問(wèn)題,目前該方法已經(jīng)成功地應用于三表遠傳系統中。在解決這個(gè)問(wèn)題的過(guò)程中,本文也對其他解決方案進(jìn)行了比較。

負離子發(fā)生器相關(guān)文章:負離子發(fā)生器原理


關(guān)鍵詞: 串行口 嵌入式系統

評論


相關(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>