專利名稱:主機(jī)串口同時連接多個異步串口設(shè)備的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及主機(jī)的異步通信串口 ,特別是一種主機(jī)串口同時連接多 個異步串口設(shè)備的方法。
背景技術(shù):
實際開發(fā)應(yīng)用中,異步通信串口作為簡單高效的通用接口被廣泛應(yīng)
用在通信、控制等領(lǐng)域。比如,在手持設(shè)備中,藍(lán)牙、衛(wèi)星定位導(dǎo)航(Global Positioning System ,簡稱GPS)、無線保真(Wireless Fidelity, 簡 稱WIFI)等模塊都提供異步串行接口 (Universal Asynchronous Serial Port,簡稱UART)同基帶芯片的串口相連的方式,來進(jìn)行通訊控制等操 作。 一個基帶芯片所提供的串口個數(shù)通常是有限的,而大家都希望把更 多的具有串口接口的功能模塊集成到一個產(chǎn)品中。眾所周知,當(dāng)一個主 機(jī)的異步串口與某個串口設(shè)備建立連接,必須斷開當(dāng)前串口連接,才能 與新的串口設(shè)備建立連接。
發(fā)明內(nèi)容
為克服上述已有技術(shù)的不足,本發(fā)明要解決的技術(shù)問題是提供一種 主機(jī)串口同時連接多個異步串口設(shè)備的方法。
為解決上述技術(shù)問題,本發(fā)明的技術(shù)方案是
一種主機(jī)串口同時連接多個異步串口設(shè)備的方法,包括以下步驟 步驟1:將各串口設(shè)備的發(fā)送端接入到可編程TX合路器的指定端口 , 將所述各串口設(shè)備的接收端接入到可編程RX分路器的指定端口 ,所述的 指定端口由所述的可編程TX合路器和RX分路器的位置寄存器指定;步驟2:在發(fā)送數(shù)據(jù)鏈路,可編程TX合路器將各串口設(shè)備發(fā)來的數(shù) 據(jù),經(jīng)過并轉(zhuǎn)串電路,合為一路數(shù)據(jù)流,并同步到該合路器時鐘的指定 時隙,發(fā)送到主機(jī)串口的接收端;
步驟3:主機(jī)串口接收端接收所述可編程TX合路器發(fā)來的數(shù)據(jù),保
存在主機(jī)串口的接收緩沖器中,經(jīng)過數(shù)據(jù)解析,將分離好的字節(jié)發(fā)送到
主機(jī)的各串口處理模塊;
步驟4:在接收數(shù)據(jù)鏈路,主機(jī)串口發(fā)送端,先把主機(jī)串口的發(fā)送 緩沖器中的數(shù)據(jù)首尾附加控制字節(jié),以標(biāo)識該數(shù)據(jù)屬于哪個串口設(shè)備, 再將該待發(fā)送的數(shù)據(jù)發(fā)送到可編程RX分路器的接收緩沖器;
步驟5:可編程RX分路器收到主機(jī)串口發(fā)來的數(shù)據(jù)塊后,根據(jù)該數(shù) 據(jù)塊的控制字節(jié),把數(shù)據(jù)塊發(fā)送到目的端口的緩沖器;
步驟6:所述目的端口根據(jù)各自的傳輸速率,將緩沖器里的數(shù)據(jù)再 發(fā)送到各串口設(shè)備。
步驟1中的串口設(shè)備的傳輸速率相同或不同。 步驟l中的串口設(shè)備有若干個。
所述的可編程TX合路器和RX分路器的8位寄存器的值由主機(jī)芯片設(shè) 置,該8位寄存器的值用來表示所述的合路器或分路器哪個端口被使能。 主機(jī)串口的傳輸速率要大于或等于所接入串口設(shè)備傳輸速率之和。 當(dāng)需要增加新的串口設(shè)備時,將新串口設(shè)備的發(fā)送端和接收端分別 接入到可編程TX合路器、RX分路器的空閑端口。 所述步驟2中的并轉(zhuǎn)串電路是移位寄存器 與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是.-
本發(fā)明通過硬件和軟件的配合設(shè)計,提供一種主機(jī)串口同時連接多個 異步串口設(shè)備的方法,從而實現(xiàn)了一個主機(jī)通過異步串口同時與多個不 同或相同傳輸速率的異步串口設(shè)備或芯片建立連接以及傳輸數(shù)據(jù)。特別適用于主機(jī)串口有限,需要連接的串口設(shè)備較多的設(shè)計方案。
圖1是一個主機(jī)串口同時連接四個串口設(shè)備的硬件框架圖。
圖2是一個主機(jī)串口同時連接多于四個串口設(shè)備的擴(kuò)展框架圖。
圖3是一個主機(jī)串口同時連接四個相同傳輸速率的串口設(shè)備的可編 程TX合路器的字節(jié)輸出和時鐘的對應(yīng)關(guān)系圖。
圖4是一個主機(jī)串口同時連接四個相同傳輸速率的串口設(shè)備時主機(jī) 串口解析數(shù)據(jù)的流程圖。
圖5是一個主機(jī)串口同時連接4個不同傳輸速率的串口設(shè)備時可編程 TX合路器字節(jié)輸出和時鐘的對應(yīng)關(guān)系圖。
圖6是主機(jī)串口處理接收數(shù)據(jù)的工作流程圖。
圖7是主機(jī)串口發(fā)送數(shù)據(jù)的工作流程圖。
具體實施例方式
下面結(jié)合附圖和實施例對本發(fā)明的具體實施方式
做進(jìn)一步詳細(xì)的說
明,但不應(yīng)以此限制本發(fā)明的保護(hù)范圍。
請參閱圖1。圖1是一個主機(jī)串口同時連接四個串口設(shè)備的硬件框架
圖,能夠?qū)崿F(xiàn)一個主機(jī)異步串口與最多四個不同傳輸速率異步串口設(shè)備
或芯片建立連接和收發(fā)數(shù)據(jù)。四個串口設(shè)備的發(fā)送端分別與可編程TX
合路器的四個輸入端口相連,該可編程TX合路器的數(shù)據(jù)并轉(zhuǎn)串電路的輸
出端與主機(jī)串口的接收緩沖器的輸入端相連,所述主機(jī)串口的發(fā)送緩沖
器的輸出端與可編程RX分路器的接收緩沖器的輸入端相連,該可編程
RX分路器的四個輸出端口與四個串口設(shè)備的接收端相連。
主機(jī)串口的傳輸速率設(shè)為一個固定值,該值要大于或等于所接入串口
設(shè)備傳輸速率之和。比如,接入的4個串口設(shè)備傳輸速率都為115200bit/s,則主機(jī)串口的傳輸速率為 115200*4bit/s , 即 460800bit/s。提供給可編程TX合路器和RX分路器的時鐘(以下簡稱 CLOCK)等于主機(jī)串口的傳輸速率值,比如,115200*4Hz,即460800Hz。 可編程TX合路器和RX分路器的8位位置寄存器的值由主機(jī)芯片設(shè)置, 該8位寄存器的值用來表示哪個端口被使能。比如,0bl010,0000表示 端口0和端口2被使能,也就是,要把串口設(shè)備O接到端口 0,串口設(shè) 備2接到端口 2。
請參閱圖3,圖3是一個主機(jī)串口同時連接四個相同傳輸速率的串 口設(shè)備的可編程TX合路器的字節(jié)輸出和時鐘的對應(yīng)關(guān)系圖。假設(shè)TX合 路器設(shè)備O、 1、 2、 3端口所接設(shè)備的傳輸速率都是115200bit/s,設(shè)備 O端口收到的數(shù)據(jù)用A表示,設(shè)備1端口收到的數(shù)據(jù)用B表示,設(shè)備2 端口收到的數(shù)據(jù)用C表示,設(shè)備3端口收到的數(shù)據(jù)用D表示。某個時刻, TX合路器收到的數(shù)據(jù)是ABCD,通過并轉(zhuǎn)串,TX合路器第0個CLOCK輸 出A,第1個CLOCK輸出B,第2個CLOCK輸出C,第3個CLOCK輸出D。 主機(jī)串口每收到的一個字節(jié)格式從高位到低位依次是ABCDABCD,這里使 用高位在前原則。將收到的字節(jié)保存到接收緩沖器(緩沖器以下簡稱 BUFFER)里,每4個字節(jié)就可以組成設(shè)備0, 1, 2, 3的字節(jié)。
請參閱圖4,圖4是一個主機(jī)串口同時連接四個相同傳輸速率的串口 設(shè)備時,主機(jī)串口解析數(shù)據(jù)的流程圖。首先,主機(jī)串口的接收BUFFER 必須每接收到4個字節(jié),才能正確解析串口設(shè)備O, 1, 2, 3發(fā)送的字節(jié)。 假設(shè)某個時亥U,主機(jī)串口的接收BUFFER接收到了A0B0C0D0A1B1C1D1, A2B2C2D2A3B3C3D3 , A4B4C4D4A5B5C5D5 , A6B6C6D6A7B7C7D7 四個字節(jié),這里每個字節(jié)從Bit7到BitO;然后,經(jīng)過數(shù)據(jù)解析,將每個 字節(jié)的第7位和第3位提取出來,組成串口設(shè)備0發(fā)送的字節(jié) A0A1A2A3A4A5A6A7,將每個字節(jié)的第6位和第2位提取出來,組成 串口設(shè)備l發(fā)送的字節(jié),B0B1B2B3B4B5B6B7,類似的,可以提取出串口設(shè)備2和串口設(shè)備3發(fā)送的字節(jié);第三步,將解析出來的字節(jié),分別 發(fā)送到各串口設(shè)備處理程序。
請參閱圖5,圖5是一個主機(jī)串口同時連接4個不同傳輸速率的串口 設(shè)備時可編程TX合路器字節(jié)輸出和時鐘的對應(yīng)關(guān)系。假設(shè)TX合路器設(shè) 備0、 1、 2、 3端口所接設(shè)備的傳輸速率不同,設(shè)備0是115200bit/s, 設(shè)備1是115200bit/s/2=57600bit/s,設(shè)備2是115200bit/s,設(shè)備3 是115200bit/s/2二57600bit/s.設(shè)備0端口收到的數(shù)據(jù)用A表示,設(shè)備 1端口收到的數(shù)據(jù)用B表示,設(shè)備2端口收到的數(shù)據(jù)用C表示,設(shè)備3 端口收到的數(shù)據(jù)用D表示。通過并轉(zhuǎn)串,對應(yīng)TX合路器的CLOCK輸出, 主機(jī)串口每收到的一個字節(jié)格式從高位到低位是A0C0ABCD。將收到的 字節(jié)保存到的接收BUFFER里,設(shè)備0和2的每個字節(jié)需要從主機(jī)串口收 到的每4個字節(jié)里解析,設(shè)備1和3的每個字節(jié)需要從主機(jī)串口收到的 每8個字節(jié)里解析。
需要說明的是,TX合路器所接設(shè)備的傳輸速率應(yīng)該是115200bit/s 整數(shù)倍,或可被115200bit/s整除。這樣,能夠方便的將數(shù)據(jù)分配到CLOCK 的時隙。而且主機(jī)串口接收端的軟件解析方式要預(yù)先設(shè)置好。
如果要與更多不同傳輸速率異步串口設(shè)備或芯片建立連接和收發(fā) 數(shù)據(jù),可以參考圖2。圖2主機(jī)串口同時連接多于四個串口設(shè)備的擴(kuò)展 框架圖。如圖2,第一級RX分路器/TX合路器各接端口 0,端口 1,端口 2和端口 3;第二級RX分路器從第一級RX分路器的端口 0引出連接4 個串口設(shè)備,第二級TX合路器連接到第一級TX合路器的端口 0。假設(shè) 主機(jī)串口的傳輸速率是115200*4bit/s, 即460800bit/s。分配給第一 級各串口設(shè)備的傳輸速率為115200bit/s。分配給第二級串口設(shè)備的傳 輸速率為115200/4bit/s,即26800bit/s。也就是設(shè)備0. 0, 0. 1, 0. 2, 0. 3 傳輸速率是26800bit/s,設(shè)備l, 2, 3傳輸速率是115200bit/s。假設(shè)設(shè)備l, 2, 3端口數(shù)據(jù)分別為A, B, C,設(shè)備0.0, 0. 1,0.2, 0.3端口數(shù) 據(jù)分別為D, E, F, G。通過并轉(zhuǎn)串,對應(yīng)TX合路器的CLOCK輸出,主 機(jī)串口收到的數(shù)據(jù)格式從高位到低位是DABC, EABC, FABC, GABC, DABC, EABC, FABC, GABC。將收到的字節(jié)保存到BUFFER里,設(shè)備l, 2, 3發(fā)送 的字節(jié)需要從主機(jī)串口收到的每4個字節(jié)解析,設(shè)備0. 0, 0. 1, 0. 2, 0. 3 發(fā)送的字節(jié)需要從主機(jī)串口收到的每16個字節(jié)解析。
請參閱圖6和圖7。圖6是主機(jī)串口處理接收數(shù)據(jù)的工作流程圖。 圖7是主機(jī)串口發(fā)送數(shù)據(jù)的工作流程圖。各串口設(shè)備通過可編程TX合路 器,發(fā)送數(shù)據(jù)到同一主機(jī)串口,并將解析后的數(shù)據(jù)發(fā)送到各串口處理模 塊的流程圖見圖6。串口設(shè)備接收數(shù)據(jù)的工作流程是,位于主機(jī)串口發(fā) 送端的處理模塊,要把發(fā)給串口的數(shù)據(jù)塊首尾附加特殊的控制字節(jié),以 標(biāo)明該數(shù)據(jù)塊屬于哪個串口設(shè)備??删幊蘎X分路器接收的主機(jī)發(fā)來的數(shù) 據(jù)塊,根據(jù)該數(shù)據(jù)塊的控制字節(jié),判斷該數(shù)據(jù)塊屬于哪個串口設(shè)備,并 將該數(shù)據(jù)內(nèi)容發(fā)到端口 BUFFER。各端口根據(jù)各自傳輸速率將各自BUFFER 里的數(shù)據(jù)發(fā)送到各串口設(shè)備。本發(fā)明主機(jī)串口同時連接多個異步串口設(shè) 備的方法,具體包括以下步驟
步驟1:將各串口設(shè)備的發(fā)送端接入到可編程TX合路器的指定端口 , 將所述各串口設(shè)備的接收端接入到可編程RX分路器的指定端口 ,所述的 指定端口由所述的可編程TX合路器和RX分路器的位置寄存器指定;
步驟2:在發(fā)送數(shù)據(jù)鏈路,可編程TX合路器將各串口設(shè)備發(fā)來的數(shù) 據(jù),經(jīng)過并轉(zhuǎn)串電路,也就是移位寄存器,合為一路數(shù)據(jù)流,并同步到 該合路器時鐘的指定時隙,發(fā)送到主機(jī)串口的接收端;
步驟3:主機(jī)串口接收端接收所述可編程TX合路器發(fā)來的數(shù)據(jù),保 存在主機(jī)串口的接收緩沖器中,經(jīng)過數(shù)據(jù)解析,將分離好的字節(jié)發(fā)送到 主機(jī)的各串口處理模塊。數(shù)據(jù)解析的原理是,根據(jù)各串口設(shè)備速率,主機(jī)CLOCK的時隙已預(yù)先對應(yīng)各串口設(shè)備數(shù)據(jù),依據(jù)己設(shè)定好的字節(jié)分離 規(guī)則,將分離好的字節(jié)發(fā)送到主機(jī)的各串口處理模塊。 主機(jī)串口接收端數(shù)據(jù)解析步驟如下,
首先,要事先知道各個串口設(shè)備的傳輸速率。以最簡單的一種情況 舉例,假設(shè),有4個串口設(shè)備,并且串口設(shè)備0, 1,2,3傳輸速率相同, 設(shè)備0端口收到的數(shù)據(jù)用A表示,設(shè)備1端口收到的數(shù)據(jù)用B表示,設(shè) 備2端口收到的數(shù)據(jù)用C表示,設(shè)備3端口收到的數(shù)據(jù)用D表示。主機(jī) 串口需要接收到 A0B0C0D0A1B1C1D1 , A2B2C2D2A3B3C3D3 , A4B4C4D4A5B5C5D5, A6B6C6D6A7B7C7D7共四個字節(jié)(每個字節(jié)從Bit7 到BitO)才能完整解析數(shù)據(jù)。
然后,在主機(jī)串口中斷處理函數(shù)里,將主機(jī)串口接收的每個字節(jié)的 每個BIT位分別提取出來,通過移位操作,組成新的數(shù)據(jù)字節(jié),S卩,A, B, C, D。比如,主機(jī)串口接收到第一個字節(jié),A0B0C0D0A1B1C1D1, 提取出該字節(jié)的第7位和第3位,并將第3位左移3位,就得到數(shù)據(jù)字 節(jié)A的BIT7和BIT6。類似操作,主機(jī)串口需要接收4個字節(jié),并經(jīng)過 提取和移位操作,才能組成數(shù)據(jù)字節(jié)A, B, C, D。
最后,將數(shù)據(jù)字節(jié)A, B, C, D發(fā)送到相應(yīng)的串口處理模塊。
步驟4:在接收數(shù)據(jù)鏈路,主機(jī)串口發(fā)送端,先把主機(jī)串口的發(fā)送 緩沖器中的數(shù)據(jù)首尾附加控制字節(jié),以標(biāo)識該數(shù)據(jù)屬于哪個串口設(shè)備, 再將該待發(fā)送的數(shù)據(jù)發(fā)送到可編程RX分路器的接收緩沖器;
步驟5:可編程RX分路器收到主機(jī)串口發(fā)來的數(shù)據(jù)塊后,根據(jù)該數(shù) 據(jù)塊的控制字節(jié),把數(shù)據(jù)塊發(fā)送到目的端口的緩沖器;
步驟6:所述目的端口根據(jù)各自的傳輸速率,將緩沖器里的數(shù)據(jù)再 發(fā)送到各串口設(shè)備。
主機(jī)串口發(fā)送端數(shù)據(jù)處理步驟如下,首先,需要事先定義一個數(shù)據(jù)塊的開始標(biāo)志,該數(shù)據(jù)塊屬于哪個串 口設(shè)備標(biāo)志,數(shù)據(jù)塊內(nèi)容,數(shù)據(jù)塊結(jié)尾標(biāo)志。
然后,各串口處理程序按照定義,將待發(fā)送的內(nèi)容打包成數(shù)據(jù)塊, 放到串口發(fā)送隊列里。
最后,串口將隊列里的數(shù)據(jù)發(fā)送到RX分路器的緩沖器Buffer里, 由RX分路器來解包并分發(fā)到各串口處理設(shè)備。
假設(shè)主機(jī)端串口設(shè)備O處理程序要發(fā)送字符串"AT"(對應(yīng)16進(jìn)制 是0x41, 0x54, 0x0d)到串口設(shè)備0,通過上述程序處理,RX分路器接收 到的字串就是(0xF9, 0xF9, 0xF9, 0x10, 0x41, 0x54, 0x0d, 0xE9, 0xE9, 0xE9)。
RX分路器就可以根據(jù)數(shù)據(jù)塊的開始標(biāo)志、設(shè)備號、結(jié)尾標(biāo)識符 將字符串"AT"提取出來并發(fā)送到串口設(shè)備O。
本發(fā)明通過硬件和軟件的配合設(shè)計,實現(xiàn)了主機(jī)串口同時連接多個異 步串口設(shè)備的方法。當(dāng)需要增加新的串口設(shè)備時,將新串口設(shè)備的發(fā)送 端和接收端分別接入到可編程TX合路器、RX分路器的空閑端口即可。
以上所述僅為本發(fā)明的較佳實施例而已,并非用來限定本發(fā)明的實施 范圍。即凡依本發(fā)明申請專利范圍的內(nèi)容所作的等效變化與修飾,都應(yīng)為 本發(fā)明的技術(shù)范疇。
權(quán)利要求
1、一種主機(jī)串口同時連接多個異步串口設(shè)備的方法,其特征在于該方法包括以下步驟步驟1將各串口設(shè)備的發(fā)送端接入到可編程TX合路器的指定端口,將所述各串口設(shè)備的接收端接入到可編程RX分路器的指定端口,所述的指定端口由所述的可編程TX合路器和RX分路器的位置寄存器指定;步驟2在發(fā)送數(shù)據(jù)鏈路,可編程TX合路器將各串口設(shè)備發(fā)來的數(shù)據(jù),經(jīng)過并轉(zhuǎn)串電路,合為一路數(shù)據(jù)流,并同步到該合路器時鐘的指定時隙,發(fā)送到主機(jī)串口的接收端;步驟3主機(jī)串口接收端接收所述可編程TX合路器發(fā)來的數(shù)據(jù),保存在主機(jī)串口的接收緩沖器中,經(jīng)過數(shù)據(jù)解析,將分離好的字節(jié)發(fā)送到主機(jī)的各串口處理模塊;步驟4在接收數(shù)據(jù)鏈路,主機(jī)串口發(fā)送端,先把主機(jī)串口的發(fā)送緩沖器中的數(shù)據(jù)首尾附加控制字節(jié),以標(biāo)識該數(shù)據(jù)屬于哪個串口設(shè)備,再將該待發(fā)送的數(shù)據(jù)發(fā)送到可編程RX分路器的接收緩沖器;步驟5可編程RX分路器收到主機(jī)串口發(fā)來的數(shù)據(jù)塊后,根據(jù)該數(shù)據(jù)塊的控制字節(jié),把數(shù)據(jù)塊發(fā)送到目的端口的緩沖器;步驟6所述目的端口根據(jù)各自的傳輸速率,將緩沖器里的數(shù)據(jù)再發(fā)送到各串口設(shè)備。
2、 根據(jù)權(quán)利要求1所述的主機(jī)串口同時連接多個異步串口設(shè)備的方法, 其特征在于步驟1中的串口設(shè)備的傳輸速率相同或不同。
3、 根據(jù)權(quán)利要求1或2所述的主機(jī)串口同時連接多個異步串口設(shè)備的方 法,其特征在于步驟l中的串口設(shè)備有若干個。
4、 根據(jù)權(quán)利要求1所述的主機(jī)串口同時連接多個異步串口設(shè)備的方法, 其特征在于所述的可編程TX合路器和RX分路器的8位寄存器的值由主機(jī)芯片設(shè)置,該8位寄存器的值用來表示所述的合路器或分路器哪個端 口被使能。
5、 根據(jù)權(quán)利要求1所述的主機(jī)串口同時連接多個異步串口設(shè)備的方法, 其特征在于主機(jī)串口的傳輸速率要大于或等于所接入串口設(shè)備傳輸速率 之和。
6、 根據(jù)權(quán)利要求1所述的主機(jī)串口同時連接多個異步串口設(shè)備的方法, 其特征在于當(dāng)需要增加新的串口設(shè)備時,將新串口設(shè)備的發(fā)送端和接收 端分別接入到可編程TX合路器、RX分路器的空閑端口 。
7、 根據(jù)權(quán)利要求1所述的主機(jī)串口同時連接多個異步串口設(shè)備的方法, 其特征在于所述步驟2中的并轉(zhuǎn)串電路是移位寄存器。
全文摘要
本發(fā)明公開了一種主機(jī)串口同時連接多個異步串口設(shè)備的方法,包括以下步驟步驟1將各串口設(shè)備的發(fā)送端、接收端接入到指定端口;步驟2TX合路器將各串口設(shè)備發(fā)來的數(shù)據(jù),發(fā)送到主機(jī)串口的接收端;步驟3主機(jī)串口接收端經(jīng)過數(shù)據(jù)解析發(fā)送到主機(jī)各串口處理模塊;步驟4主機(jī)串口將該待發(fā)送的數(shù)據(jù)發(fā)送到可編程RX分路器的接收緩沖器;步驟5可編程RX分路器把數(shù)據(jù)塊發(fā)送到目的端口的緩沖器;步驟6所述目的端口將緩沖器里的數(shù)據(jù)再發(fā)送到各串口設(shè)備。從而實現(xiàn)了一個主機(jī)通過異步串口同時與多個不同或相同傳輸速率的異步串口設(shè)備或芯片建立連接以及傳輸數(shù)據(jù)。
文檔編號G06F13/38GK101308480SQ20081003911
公開日2008年11月19日 申請日期2008年6月18日 優(yōu)先權(quán)日2008年6月18日
發(fā)明者勝 王 申請人:嘉興聞泰通訊科技有限公司