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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 三種方式解決USB接口與串口設(shè)備之間互連問(wèn)題

          三種方式解決USB接口與串口設(shè)備之間互連問(wèn)題

          作者: 時(shí)間:2012-02-01 來(lái)源:網(wǎng)絡(luò) 收藏
            由于具有即插即用的特性,現(xiàn)已出現(xiàn)只有USB口而沒(méi)有傳統(tǒng)接口的PC,那么在這樣的計(jì)算機(jī)上如何使用舊式基于串行接口的設(shè)備呢?本文介紹了三種方法,并對(duì)各自的優(yōu)缺點(diǎn)進(jìn)行了詳細(xì)的討論。

            過(guò)去PC用戶在接入新設(shè)備時(shí)還需要安裝相應(yīng)的驅(qū)動(dòng)程序,對(duì)于非專業(yè)用戶來(lái)講不僅麻煩而且容易出錯(cuò),他們一直希望在連接新外設(shè)時(shí)能減少這些讓人困惑的難題。通過(guò)去除串口、并口以及PS2口等老式端口,然后用諸如USB之類即插即用端口加以替代,最終用戶現(xiàn)在終于能夠體驗(yàn)到這一方面的顯著改善(圖1)。

            USB為消費(fèi)類電子產(chǎn)品提供了輕松的擴(kuò)展功能,許多設(shè)備操作系統(tǒng)本身就可以提供支持,不要求外設(shè)開(kāi)發(fā)人員提供驅(qū)動(dòng)程序,從而使添加外設(shè)變得更為簡(jiǎn)單。同時(shí)通過(guò)集線器擴(kuò)展總線功能使普通用戶能夠方便地添加更多外設(shè),無(wú)傳統(tǒng)接口的PC目前已成為現(xiàn)實(shí),正在向普通用戶提供著種種便利。

            但是,許多業(yè)界專業(yè)人士或嵌入式應(yīng)用人員卻并不像普通用戶那樣對(duì)無(wú)傳統(tǒng)接口PC的出現(xiàn)這么振奮。許多應(yīng)用一直采用各種UART接口,既不需要也不希望有什么改變。不管是RS-232、RS-422還是RS-485,UART連接方式數(shù)十年來(lái)一直是低帶寬通信的主流。就控制、監(jiān)控與小容量數(shù)據(jù)傳輸而言,UART連接提供了一種成本低廉使用方便的解決方案,應(yīng)用系統(tǒng)開(kāi)發(fā)人員在上面已耗費(fèi)了大量時(shí)間與金錢,同時(shí)對(duì)其性能也感到滿意。

            針對(duì)定制專用產(chǎn)品系統(tǒng)級(jí)設(shè)計(jì)與實(shí)施,技術(shù)人員創(chuàng)建出多年來(lái)一直穩(wěn)定的系統(tǒng)架構(gòu),可提供所有必需的功能與性能,為系統(tǒng)處理器實(shí)現(xiàn)這些功能而開(kāi)發(fā)的固件也都假定采用UART連接來(lái)傳輸數(shù)據(jù),此外在產(chǎn)品整個(gè)生命周期中還開(kāi)發(fā)并優(yōu)化了主機(jī)應(yīng)用軟件,也是假定采用UART連接。因此上述任何一項(xiàng)如要改變都需巨額投資,而且對(duì)專業(yè)用戶而言,無(wú)傳統(tǒng)接口PC的優(yōu)勢(shì)并不明顯。

          設(shè)計(jì)人員的選擇

            那么面對(duì)目前不斷涌現(xiàn)的新型無(wú)傳統(tǒng)接口PC,嵌入式設(shè)計(jì)人員有什么對(duì)策呢?答案是可采用三種基本方法調(diào)整系統(tǒng),使之適應(yīng)無(wú)傳統(tǒng)接口PC。第一種方法是進(jìn)行全面的系統(tǒng)再設(shè)計(jì),使設(shè)備本身能夠支持USB連接;第二種方法是使用目前市面上出現(xiàn)的USB至RS-232適配器;第三種方法則是采用為系統(tǒng)應(yīng)用定制的USB至UART適配器。我們下面不妨分別看看這三種方式的優(yōu)缺點(diǎn)。

            全面系統(tǒng)再設(shè)計(jì)方法將涉及很多工作。例如很可能需要新的系統(tǒng)處理器或微控制器,轉(zhuǎn)為本身具備USB支持的新控制器,或選用新端口橋接方案,包括存儲(chǔ)器映射接口或并行主機(jī)處理器接口。采用本機(jī)具備USB支持方案的好處在于可使數(shù)據(jù)傳輸量提高。

            除了硬件改變之外,還需進(jìn)行軟件方面的改動(dòng)。采用新處理器很可能要新的固件,因?yàn)樘幚砥骰蛭⒖刂破鞴碳仨氝m應(yīng)新的數(shù)據(jù)發(fā)送與接收方法;還要修改主機(jī)用戶應(yīng)用軟件,以適應(yīng)新的連接方法,目前接到串口的軟件要直接接到新端口。除了應(yīng)用軟件之外,無(wú)論是USB還是其它端口連接改變,主機(jī)驅(qū)動(dòng)程序也應(yīng)相應(yīng)修改。如果應(yīng)用程序可調(diào)整為適用于本機(jī)具備USB支持所提供的驅(qū)動(dòng)程序,外設(shè)OEM廠商就不必再為其設(shè)備提供安裝盤,而且如果基本功能無(wú)需特定用戶應(yīng)用軟件的話,它還可以兼容于新型PC實(shí)現(xiàn)即插即用。

            第二種方法是采用眾多市面上現(xiàn)有的USB至串行轉(zhuǎn)接口(dongle)或線纜。許多不同供應(yīng)商均可提供這類設(shè)備,它能夠迅速連接到無(wú)傳統(tǒng)接口的PC,并創(chuàng)建虛擬COM口(VCP)。假定應(yīng)用軟件可映射至任何COM端口,則只需簡(jiǎn)單對(duì)應(yīng)用重新映射即可訪問(wèn)新的VCP。每種接口都可提供VCP驅(qū)動(dòng)程序,驅(qū)動(dòng)程序必須安裝在PC上才能啟用端口,許多接口經(jīng)調(diào)整均能適用于諸如PDA托架(cradles)或串行調(diào)制解調(diào)器等特定應(yīng)用。

            盡管這種方法能夠幫助盡快將產(chǎn)品投放市場(chǎng),但設(shè)計(jì)人員還應(yīng)考慮對(duì)產(chǎn)品總體戰(zhàn)略方面的影響。使用現(xiàn)成產(chǎn)品將使設(shè)計(jì)人員在兼容性、質(zhì)量或與其產(chǎn)品結(jié)合使用的配件品牌控制上受到限制,可能導(dǎo)致維修服務(wù)增加,并使客戶對(duì)產(chǎn)品產(chǎn)生負(fù)面評(píng)價(jià),與控制成本或持續(xù)提供所選接口相關(guān)的供貨問(wèn)題也應(yīng)在考慮之列。最后,這種方法就每單個(gè)產(chǎn)品而言成本也是相當(dāng)高的。

            第三種方法則是設(shè)計(jì)自己的專用USB至串行接口或嵌入式連接橋。這能最大限度利用現(xiàn)有可選設(shè)備的優(yōu)勢(shì),并克服其諸多缺點(diǎn),這種方法有助于讓連接橋?qū)ν獠肯到y(tǒng)與主機(jī)應(yīng)用軟件看起來(lái)都像是VCP。它同樣需要VCP驅(qū)動(dòng)程序,但可調(diào)整適應(yīng)于具體應(yīng)用。構(gòu)建本機(jī)接口或嵌入式連接橋?qū)⒂兄趯?shí)現(xiàn)對(duì)兼容性、質(zhì)量、品牌、成本與供應(yīng)的控制。嵌入式連接橋方式要求對(duì)主板進(jìn)行更改,但其BOM成本低于外部接口。我們可以更進(jìn)一步來(lái)看看下面兩種方法。

          專用外部接口

            專用外部接口方案與購(gòu)買市場(chǎng)上現(xiàn)有接口很像,但可以克服后者所有的缺點(diǎn)?,F(xiàn)有系統(tǒng)實(shí)現(xiàn)方案不需要改變,硬件也無(wú)需修改,只需將串行接口與設(shè)備的現(xiàn)有串行接口相對(duì)應(yīng)即可。通過(guò)設(shè)計(jì)自身接口,還可針對(duì)諸如RS-232、RS-422、RS-485、LVDS等具體的應(yīng)用需求優(yōu)化線路驅(qū)動(dòng)器或收發(fā)器。大多數(shù)商用接口都局限于RS-232,且不能用于其它串行接口。

            同樣,主機(jī)應(yīng)用軟件也不需要任何更改。唯一的潛在問(wèn)題就是應(yīng)用是否會(huì)映射至不同的COM口,或其是否會(huì)一直映射至特定的COM口。如果它一直映射至特定的COM端口,則我們建議改變軟件,讓最終用戶來(lái)修改COM端口映射。由于上述方法確實(shí)在計(jì)算機(jī)上創(chuàng)建了新的VCP,因此要為產(chǎn)品提供VCP驅(qū)動(dòng)程序。通過(guò)設(shè)計(jì)并構(gòu)建自己的接口而不是使用現(xiàn)有接口,可使設(shè)備具有根據(jù)具體應(yīng)用需求定制驅(qū)動(dòng)程序的能力,這將實(shí)現(xiàn)更好的功能,并在最終設(shè)備與接口間實(shí)現(xiàn)更好的兼容性。

            上述方法的另一優(yōu)勢(shì)在于能夠讓一種終端設(shè)備盒既用于帶傳統(tǒng)接口的PC,又可用于新型無(wú)傳統(tǒng)接口PC,它最大的劣勢(shì)在于總體實(shí)施成本。如果根據(jù)每個(gè)單元來(lái)分?jǐn)傞_(kāi)發(fā)成本,并加到外部接口實(shí)際BOM成本中,那么這很可能是總體實(shí)施成本最高的一種方法。

          嵌入式橋接

            嵌入式橋接方法將接口放置于終端設(shè)備線路板上,基本屬于外部接口的板級(jí)實(shí)現(xiàn)方式。將USB至串行口橋接嵌入到“盒”中,盡管它仍是VCP連接但看上去卻像是本機(jī)USB器件(圖2)。

            對(duì)系統(tǒng)處理器與主機(jī)PC而言它看上去像VCP,就像專用外部接口,所以軟件所需更改極小,任何改變都應(yīng)與專用外部接口一樣。

            通過(guò)將橋接器件置于板上,不但可以大大節(jié)約單位器件成本,還能避免與外部接口附件相關(guān)的諸如印刷電路板、機(jī)箱或封裝、連接器等硬件方面的費(fèi)用,此外還可通過(guò)將橋接器件置于板上節(jié)省電子元器件。橋接器件與系統(tǒng)處理器或微控制器之間不再需要任何諸如RS-232、RS-422、RS-485等串行線纜收發(fā)器。顯然,具有系統(tǒng)處理器的板級(jí)橋接器要求更改線路板布局,但即使將開(kāi)發(fā)成本一起分?jǐn)偟疆a(chǎn)品使用壽命中,它很可能仍然是成本最低的實(shí)施方案。此方法的總開(kāi)發(fā)成本低于整個(gè)系統(tǒng)再設(shè)計(jì)的成本,單位成本也低于任何一種外部接口方法。

          選擇新型驅(qū)動(dòng)程序

            所有USB至串行端口橋接法的共同問(wèn)題是需要新的虛擬COM口驅(qū)動(dòng)程序,這種過(guò)濾器驅(qū)動(dòng)程序?qū)⒂脩魬?yīng)用程序生成的COM命令轉(zhuǎn)換為橋接器件在USB端口上接收的USB協(xié)議,橋接器件隨后負(fù)責(zé)將上述USB命令轉(zhuǎn)換回串行命令,驅(qū)動(dòng)程序使USB器件對(duì)操作系統(tǒng)(OS)看起來(lái)像是COM口器件。

            這會(huì)使得用戶忽略實(shí)際是通過(guò)USB連接進(jìn)行通信這一事實(shí),而為應(yīng)用軟件給出標(biāo)準(zhǔn)的COM口通信指令。設(shè)計(jì)人員如不希望對(duì)應(yīng)用軟件及系統(tǒng)透明,就無(wú)需VCP過(guò)濾器驅(qū)動(dòng)程序。如果可以接受上面任何一項(xiàng)更改,系統(tǒng)重新設(shè)計(jì)中給出的方法(本機(jī)驅(qū)動(dòng)程序)則可作為一種專用方法,不可用于市面上現(xiàn)有的接口。



          評(píng)論


          相關(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); })();