新聞中心

EEPW首頁 > 汽車電子 > 設(shè)計應(yīng)用 > 串口擴(kuò)展芯片在汽車行駛記錄儀中的應(yīng)用

串口擴(kuò)展芯片在汽車行駛記錄儀中的應(yīng)用

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

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

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

  1、簡介

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

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

  

 

  當(dāng)單片機(jī)要向串口設(shè)備發(fā)送數(shù)據(jù)時,其工作過程是:

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

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

  3)該子串口再把數(shù)據(jù)送往相連的串口設(shè)備。

  當(dāng)串口設(shè)備向單片機(jī)發(fā)送數(shù)據(jù)時,其工作過程是:

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

  2)SP2338的母串口把該數(shù)據(jù)再送給單片機(jī)串口,同時在ADRO0和ADRO1線上送出子串口的地址;

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

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

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

  K母=1920*Fosc,

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

  K子=480*Fosc,

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

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

  2、SP2338在汽車行駛記錄儀中應(yīng)用

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

  由于SP2338是單片機(jī)串口與其他串口設(shè)備的轉(zhuǎn)接者,因此相對于單片機(jī)來說,SP2338是Tx3與單片機(jī)的RXDM相連,SP2338的Rx3要與單片機(jī)的TXDM相連。

  

 

  2)軟件實(shí)現(xiàn)

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

  ①當(dāng)SP2338從串口設(shè)備接收到數(shù)據(jù)通過母串口送到單片機(jī)的串口線上時,單片機(jī)應(yīng)及時把數(shù)據(jù)讀走,并且判定ADRO0和ADRO1的狀態(tài),否則容易造成數(shù)據(jù)的錯誤。因此在單片機(jī)上要用串口中斷。

 ?、诋?dāng)單片機(jī)向外部串口設(shè)備發(fā)送數(shù)據(jù)時,一定要按照先向子串口0發(fā)送一個字節(jié)的數(shù)據(jù),再向子串口1發(fā)送一個字節(jié)的數(shù)據(jù),再向子串口2發(fā)送一個字節(jié)的數(shù)據(jù),再執(zhí)行一條NOP命令的時序發(fā)送數(shù)據(jù),依此循環(huán)。若外部的串口設(shè)備沒有三個,則分別如下處理:

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

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

  串口中斷流程圖3所示。

  

 

  3、結(jié)語

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

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


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


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

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉