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

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > SP2328串口擴(kuò)展專(zhuān)用芯片及其與單片機(jī)的接口電路

          SP2328串口擴(kuò)展專(zhuān)用芯片及其與單片機(jī)的接口電路

          作者:泰山醫(yī)學(xué)院放射系 房鷹 豐建淑/泰安市醫(yī)學(xué)儀器研究所 陳兆濤 時(shí)間:2004-11-10 來(lái)源:電子設(shè)計(jì)應(yīng)用2003年第6期 收藏

          摘   要:   本文介紹一種新型的串口擴(kuò)展芯片的功能特性以及與接口的應(yīng)用。
          關(guān)鍵詞: ;    
          在設(shè)計(jì)由多個(gè)單片機(jī)組成的數(shù)據(jù)采集電路時(shí),一般要用多個(gè)串口在各個(gè)單片機(jī)之間進(jìn)行數(shù)據(jù)通信。為了解決單片機(jī)擴(kuò)展多個(gè)串口的問(wèn)題,以前大多采用多片AT89C2051來(lái)實(shí)現(xiàn)。每個(gè)AT89C2051用并口與上位機(jī)連接,再通過(guò)AT89C2051的串口與下位機(jī)串口連接。這種電路設(shè)計(jì),單片機(jī)編程比較復(fù)雜,整個(gè)電路的調(diào)試也比較麻煩,可靠性不是很高。一種新開(kāi)發(fā)的SP2328串口擴(kuò)展芯片很好的解決了上述問(wèn)題。
          SP2328是成都視普科技公司的串行口擴(kuò)展專(zhuān)用芯片,能將普通單片機(jī)(如:AT89C2051、AT89C51等)的一個(gè)串口(UART)擴(kuò)展為三個(gè)串口。它主要解決了大多數(shù)8位、16位以及32位單片機(jī)UART串口太少的問(wèn)題,擴(kuò)大了單片機(jī)的使用范圍。同時(shí),SP2328串行口擴(kuò)展專(zhuān)用芯片也很好地解決了許多在使用雙串口的單片機(jī)時(shí),串口復(fù)雜的配置問(wèn)題,能大大縮短開(kāi)發(fā)周期,降低開(kāi)發(fā)成本以及生產(chǎn)成本。

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

          圖1  DIP和SOIC封裝(左)    圖2 SSOP封裝(右)

          SP2328的功能特性
          SP2328有四個(gè)UART串口,其中包括一個(gè)母串口和三個(gè)子串口。母串口和所有子串口都為全雙工工作模式,所有串口允許同時(shí)接收、發(fā)送串行數(shù)據(jù)。串口0~串口2為子串口,每個(gè)子串口的工作速率為75bps~4800bps。串口3為母串口,它的數(shù)據(jù)傳輸速率是子串口的4倍。串口3接收到串行數(shù)據(jù)后,SP2328芯片根據(jù)收到的地址信號(hào),把數(shù)據(jù)通過(guò)相應(yīng)的子串口發(fā)送出去。子串口收到串行數(shù)據(jù)后,把數(shù)據(jù)通過(guò)串口3發(fā)送出去,同時(shí)給出相應(yīng)的子串口地址。串口0~串口2的波特率的設(shè)置很簡(jiǎn)單,不需要用軟件設(shè)置,只要改變輸入時(shí)鐘的頻率即可。波特率按以下公式計(jì)算:

          K=2400*f(osc)/8.0(bps)

          其中f(osc)<=16.0MHZ
          SP2328的直流工作電壓為2.4V~5.5V,典型電流為3.7mA,帶有節(jié)電模式。
          圖1和圖2是SP2328芯片的管腳排列圖。
          ADRI0、ADRI1  為串口3接收下行數(shù)據(jù)時(shí)的串口地址線(xiàn),“00”、“01”、“10”分別對(duì)應(yīng):串口0、串口1、串口2的地址;“11”為串口3的地址。當(dāng)上位機(jī)要向某一個(gè)子串口連接的下位機(jī)發(fā)送數(shù)據(jù)時(shí),首先要將ADRI0、ADRI1置成響應(yīng)的地址狀態(tài),再將數(shù)據(jù)發(fā)送到串口3即可。
          ADRO0、ADRO1  為串口3發(fā)送上行數(shù)據(jù)時(shí)的串口地址線(xiàn),“00”、“01”、“10”分別對(duì)應(yīng):串口0、串口1、串口2的地址。當(dāng)上位機(jī)的串口接收到串口3送來(lái)的數(shù)據(jù)時(shí),立刻讀取地址線(xiàn)ADRO0、ADRO1的狀態(tài),根據(jù)地址線(xiàn)ADRO0、ADRO1的狀態(tài)即可判斷出接收到的數(shù)據(jù)是由哪個(gè)串口上傳的。

          圖3  SP2328與單片機(jī)的接口電路

          SP2328與單片機(jī)的接口舉例
          圖3是單片機(jī)數(shù)據(jù)采集電路中SP2328與單片機(jī)的接口電路。AT89C51的串口與SP2328的串口3連接,P1.0、P1.1、P1.2、P1.3分別連接ADRI0、ADRI1、ADRO0、ADRO1,作為設(shè)置和讀取子串口的地址用。三個(gè)子串口分別連到三個(gè)下位機(jī)的串口。串口0、串口1、串口2的波特率為:
           K=(2400*16)/8=4800(bps)
          串口3的波特率:
           K3=4*K=4*4800=19200(bps)
          AT89C51串口的波特率也必須設(shè)置成19200bps。
          由于SP2328通電后自動(dòng)進(jìn)入工作狀態(tài),不需要用程序設(shè)置,所以編寫(xiě)串口程序比較簡(jiǎn)單方便。

          需要注意的問(wèn)題
          ?在選擇晶振頻率時(shí),要嚴(yán)格使單片機(jī)串口的波特率與SP2328的波特率相一致,晶振頻率要穩(wěn)定,否則容易使SP2328芯片接收到的數(shù)據(jù)和發(fā)送出去的數(shù)據(jù)都是錯(cuò)誤的。
          ?由于母串口3的速度是其它子串口的4倍,即子串口發(fā)送一個(gè)字節(jié)的時(shí)間母串口可以發(fā)送4個(gè)字節(jié),所以如果串口3向子串口發(fā)送一個(gè)字節(jié)后,串口3沒(méi)有向其他子串口發(fā)送另外的4個(gè)字節(jié),而立即再向原子串口發(fā)送數(shù)據(jù),子串口的數(shù)據(jù)將溢出。因此,必須在它們之間加上4個(gè)以上的字節(jié)用于延時(shí)(母串口向其他另外的子串口發(fā)送數(shù)據(jù),相當(dāng)于延時(shí)一個(gè)字節(jié))。
          ?上位機(jī)收到母串口上行的數(shù)據(jù)后要及時(shí)讀取上行數(shù)據(jù)的地址信息(上行數(shù)據(jù)的地址信息可以在上行數(shù)據(jù)的停止位結(jié)束后保持6bit的時(shí)間長(zhǎng)度)。使上位機(jī)能準(zhǔn)確收到子串口的串行數(shù)據(jù)。
          ?上位機(jī)向母串口發(fā)送數(shù)據(jù)前,先要向SP2328發(fā)送子串口的地址信號(hào)。

          結(jié)語(yǔ)
          采用SP2328芯片擴(kuò)展單片機(jī)串口,為單片機(jī)的提供了一個(gè)很好的解決方案。它與使用雙串口單片機(jī)和使用多片AT89C2051擴(kuò)展串口等方案相比,編程簡(jiǎn)單、可靠性高、成本低?!?/p>

          參考文獻(xiàn)
          1 余永權(quán).《Flash單片機(jī)原理及應(yīng)用》 .北京:電子工業(yè)出版社. 1997,10
          2  SP2328數(shù)據(jù)應(yīng)用手冊(cè).成都視普科技有限公司 



          關(guān)鍵詞: 單片機(jī) 多串口通信

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();