<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ē)電子 > 設計應用 > 串口擴展芯片在汽車(chē)行駛記錄儀中的應用

串口擴展芯片在汽車(chē)行駛記錄儀中的應用

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

  在由單片機組成的汽車(chē)行駛記錄儀中,為了適應不同用戶(hù)的需要,該記錄儀需要配置打印、與上位機通信以及與GPS通信接口等三個(gè)以上(含三個(gè)),直接利用單片機的功能無(wú)法滿(mǎn)足這一需要。利用一片則可以很好地解決這個(gè)問(wèn)題。

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

  1、簡(jiǎn)介

  串口擴展芯片能將普通的51系列單片機的一個(gè)串口擴展為三個(gè)獨立的全雙工串口,并且三個(gè)串口的波特率達到了9600bps。SP2338采用通用的協(xié)議1個(gè)起始位,8個(gè)數據位,1個(gè)停止位),同時(shí),該芯片在與單片機相連時(shí)接口也非常簡(jiǎn)單。

  SP2338共有四個(gè)串口,一個(gè)母串口,三個(gè)子串口,它們都是全雙工的串行通信口,允許同時(shí)接收和發(fā)送數據。母串口與需要擴展的51單片機的串口相連,子串口與其他串口設備相連,這樣就實(shí)現了只有一個(gè)串口的單片機可與三個(gè)串口設備相連。SP2338有兩根發(fā)送地址線(xiàn),兩根接收地址線(xiàn),用以選擇發(fā)送串口和接收串口,見(jiàn)圖1。

  

 

  當單片機要向串口設備發(fā)送數據時(shí),其工作過(guò)程是:

  1)先向SP2338的串口地址線(xiàn)ADRI0、ADRI1送地址信號(ADRI0、ADRI1=00子串口0,ADRI0、ADRI1=01子串口1,ADRO0、ADRO1=10子串口2);再向與自已相連的母串口的通信線(xiàn)上送數據;

  2)SP2338的母串口收到單片機串口送來(lái)的數據后就根據ADRI0和ADRI1的狀態(tài),把數據送往相應的子串口;

  3)該子串口再把數據送往相連的串口設備。

  當串口設備向單片機發(fā)送數據時(shí),其工作過(guò)程是:

  1)SP2338的某個(gè)子串口從串口設備接收到數據時(shí),送給母串口;

  2)SP2338的母串口把該數據再送給單片機串口,同時(shí)在A(yíng)DRO0和ADRO1線(xiàn)上送出子串口的地址;

  3)單片機根據SP2338接收地址線(xiàn)ADRO0、ADRO1上的信號判定出由哪個(gè)串口設備發(fā)出的。

  由于SP2338的每個(gè)串口都有自己的發(fā)送緩沖區和接收緩沖區,因此擴展后的三個(gè)串口就可以完全獨立地同時(shí)通信,就好像單片機同時(shí)擁有三個(gè)串口似的,若一個(gè)單片機有兩個(gè)串口,那么配上兩片SP2338就可以擴展到6個(gè)串口。

  SP2338每個(gè)子串口的波特率都可以達到9600bps,SP2338工作時(shí)需要配一個(gè)晶振,該晶振FOSC的頻率與母串口的波特率有如下關(guān)系:

  K母=1920*Fosc,

  與子串口波特率的關(guān)系如下:

  K子=480*Fosc,

  因此,如果子串口采用9600波特率,根據以上公式,Fosc=20MHz。而母串口的波特率必須達到388400bps。這樣與SP2338的母串口相連的單片機串口的波特率達到388400bps,若單片機采用非11。0592M的工作晶振,則波特率會(huì )有偏差,不過(guò),SP2338允許波特率誤差為2。5%。在我研制的汽車(chē)行駛記錄儀中,系統采用的是24MHz的工作晶振,用定時(shí)器2作波特率發(fā)生器,并設:RCAP2H=0xFF,RCAP2L=0xEC,可以正常通信。

  由于某些單片機采用其他規格的晶振工作,達不到這么高的波特率,想把母串口的波特率降下來(lái),則不僅僅是把單片機的波特率降下來(lái),還要根據上面的公式,重新計算Fosc,把SP2338的工作晶振也換成合適的才行。

  2、SP2338在汽車(chē)行駛記錄儀中應用

  1)圖2是硬件連接邏輯圖

  由于SP2338是單片機串口與其他串口設備的轉接者,因此相對于單片機來(lái)說(shuō),SP2338是Tx3與單片機的RXDM相連,SP2338的Rx3要與單片機的TXDM相連。

  

 

  2)軟件實(shí)現

  由于SP2338一上電就能正常工作,不需要任何初始化操作,因此不需要在軟件中初始化。而SP2338的母串口與三個(gè)子串口是循回連續交換數據的,因此,

 ?、佼擲P2338從串口設備接收到數據通過(guò)母串口送到單片機的串口線(xiàn)上時(shí),單片機應及時(shí)把數據讀走,并且判定ADRO0和ADRO1的狀態(tài),否則容易造成數據的錯誤。因此在單片機上要用串口中斷。

 ?、诋攩纹瑱C向外部串口設備發(fā)送數據時(shí),一定要按照先向子串口0發(fā)送一個(gè)字節的數據,再向子串口1發(fā)送一個(gè)字節的數據,再向子串口2發(fā)送一個(gè)字節的數據,再執行一條NOP命令的時(shí)序發(fā)送數據,依此循環(huán)。若外部的串口設備沒(méi)有三個(gè),則分別如下處理:

  A.若上位機只需向一個(gè)子串口發(fā)送數據,先向該串口發(fā)送一個(gè)字節數據,再執行4條‘NOP’命令,其后再向該子串口發(fā)送第二個(gè)數據。

  B.若上位機只需向兩個(gè)子串口發(fā)送數據,則可以分別向兩個(gè)串口發(fā)送一個(gè)字節的數據,再執行3條NOP命令,再分別向這兩個(gè)串口發(fā)送下一字節的數據。

  串口中斷流程圖3所示。

  

 

  3、結語(yǔ)

  我在研制汽車(chē)行駛記錄儀中使用了一片SP2338,把單片機一個(gè)串口擴展成三個(gè)全雙工的串口,使汽車(chē)行駛記錄儀可以與串行打印機、上位機和GPS等串口設備進(jìn)行通信,符合國家GBT/19056-2003《汽車(chē)行駛記錄儀》標準的相關(guān)規定,取得了滿(mǎn)意的效果。

51單片機相關(guān)文章:51單片機教程


晶振相關(guān)文章:晶振原理


關(guān)鍵詞: SP2338 串口

評論


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