您的位置:網(wǎng)站首頁 > 優(yōu)秀論文 > 正文
基于單片機(jī)的多串口實現(xiàn)方案
作者:甘宇紅來源:原創(chuàng)日期:2013-12-30人氣:1664
一、總述
隨著控制技術(shù)的發(fā)展,控制系統(tǒng)的數(shù)字化在生產(chǎn)過程中的應(yīng)用越來越普遍。作為控制核心的CPU需要和多個檢測及控制的相關(guān)設(shè)備進(jìn)行通信。這就給控制系統(tǒng)帶來一個問題,一般的CPU都是只有1個串口(單片機(jī)最多的有4個),如果外界串行口設(shè)備過多,設(shè)計上就會出現(xiàn)許多困難。筆者因此論述了幾個多串口實現(xiàn)方案,并采用其中一種實現(xiàn)了5個全雙工串口,并且可以兼容多種串行通信電平標(biāo)準(zhǔn)(RS232/RS485/RS422)。
1、基于硬件方式實現(xiàn)的多串口擴(kuò)展
SP3539是采用低功耗CMOS工藝設(shè)計的通用異步串行口擴(kuò)展芯片,它可輕松將主機(jī)原有的1個串行口擴(kuò)展成5個完全獨立且每個子串口波特率、奇偶效驗方式、數(shù)據(jù)幀長度都可獨立設(shè)置的全雙工子串口(子串口波特率最高可達(dá)115.2Kbps,滿足數(shù)據(jù)高速傳輸要求)。
SP3539采用分時復(fù)用技術(shù)將一個全雙工串口(上位機(jī)自帶串口)擴(kuò)展成5個完全獨立的全雙工串口(子串口),在上電默認(rèn)模式下母串口的波特率是各子串口波特率的6倍,即:各子串口可在特定的時間段內(nèi)獨占母串口,因此即使所有子串口都有連續(xù)不斷的數(shù)據(jù)輸入也不會發(fā)生數(shù)據(jù)丟失。母串口和各子串口內(nèi)部都分別有8字節(jié)的接收和發(fā)送FIFO緩存,即使5個子串口同時接收到數(shù)據(jù)和啟動數(shù)據(jù)發(fā)送也不會丟失數(shù)據(jù)。
2、基于SP3539串口擴(kuò)展的硬件電路設(shè)計
本文采用了經(jīng)典的8051單片機(jī)(AT89S52)作為主控芯片。該芯片與SP3539相連時接口非常簡單。SP3539共有六個串口,即一個母串口,五個子串口,它們都是全雙工的串行通信口,允許同時接收和發(fā)送數(shù)據(jù)。母串口與單片機(jī)的串口相連,子串口與其他串口設(shè)備相連,這樣就實現(xiàn)了只有一個串口的單片機(jī)可與五個串口設(shè)備相連。SP2338有一套發(fā)送地址線,一套接收地址線,用以選擇發(fā)送串口和接收串口。當(dāng)單片機(jī)要向串口設(shè)備發(fā)送數(shù)據(jù)時:
A單片機(jī)先發(fā)送地址信息(子串口地址)到SP3539的輸入地址“ADRI2”、“ADRI1”、“ADRI0”(如圖1),即選中待發(fā)送數(shù)據(jù)對應(yīng)的子串口。
B將待發(fā)送的數(shù)據(jù)由單片機(jī)通過母串口發(fā)送到SP3539。SP3539的母串口收到單片機(jī)串口送來的數(shù)據(jù)后就根據(jù)ADRI0、ADRI1和ADRI2的狀態(tài),把數(shù)據(jù)送往對應(yīng)的子串口。
C對應(yīng)的子串口再把數(shù)據(jù)經(jīng)過電平轉(zhuǎn)換變成對應(yīng)的電平標(biāo)準(zhǔn)發(fā)給對應(yīng)的設(shè)備。
當(dāng)串口設(shè)備向單片機(jī)發(fā)送數(shù)據(jù)時,其數(shù)據(jù)流程為:
ASP3539的將子串口收到的數(shù)據(jù)緩存到FIFO里面,并發(fā)送到母串口。
B單片機(jī)接收到數(shù)據(jù)后,必須盡快讀取ADRO2、ADRO1、ADRO0三位輸出地址的狀態(tài),并由此來判斷接收到的數(shù)據(jù)來自哪個子串口。
由于SP3539的母串口和各子串口內(nèi)部都分別有8字節(jié)的接收和發(fā)送FIFO緩存,因此擴(kuò)展后的五個串口就可以完全獨立地同時通信。SP3539各子串口都支持10位及11位數(shù)據(jù)幀格式,允許上位機(jī)更改各子串口數(shù)據(jù)幀長度,初次上電后各子串口默認(rèn)數(shù)據(jù)格式都為10位。
SP3539母串口波特率為:
K5=3600﹡Fosc_in
各子串口波特率為:
k=600﹡Fosc_in/n
式中“Fosc_in”為SP3539輸入時鐘(OSCI),單位為“MHz”,n為對應(yīng)子串口設(shè)置的分頻系數(shù),默認(rèn)狀態(tài)為“1”。本文采用的輸入時鐘為16.0MHz,則上電默認(rèn)狀態(tài)下:母串口波特率:K5=3600﹡16.0=57600Bps,K0~4=600﹡1﹡16.0/1=9600Bps。
如果想要子串口的波特率工作在其它頻段,就必須根據(jù)上面的公式重新計算Fosc_in,同時也要改變SP3539和單片機(jī)的晶振。
3、基于SP3539串口擴(kuò)展的程序設(shè)計
采用SP3539擴(kuò)展串口程序簡單,占用資源少,不占用單片機(jī)的外部中斷和數(shù)據(jù)總線,5個子串口共享單片機(jī)串口中斷實現(xiàn)數(shù)據(jù)收發(fā)。但在使用過程中一定要注意:SP3539的地址總線一定要區(qū)分讀寫,否則會發(fā)生錯誤,造成芯片異常發(fā)熱;串口中斷里面對各個子串口操作的代碼一定要盡量優(yōu)化,否則在大數(shù)據(jù)量收發(fā)時會造成子串口數(shù)據(jù)丟失。
隨著控制技術(shù)的發(fā)展,控制系統(tǒng)的數(shù)字化在生產(chǎn)過程中的應(yīng)用越來越普遍。作為控制核心的CPU需要和多個檢測及控制的相關(guān)設(shè)備進(jìn)行通信。這就給控制系統(tǒng)帶來一個問題,一般的CPU都是只有1個串口(單片機(jī)最多的有4個),如果外界串行口設(shè)備過多,設(shè)計上就會出現(xiàn)許多困難。筆者因此論述了幾個多串口實現(xiàn)方案,并采用其中一種實現(xiàn)了5個全雙工串口,并且可以兼容多種串行通信電平標(biāo)準(zhǔn)(RS232/RS485/RS422)。
1、基于硬件方式實現(xiàn)的多串口擴(kuò)展
SP3539是采用低功耗CMOS工藝設(shè)計的通用異步串行口擴(kuò)展芯片,它可輕松將主機(jī)原有的1個串行口擴(kuò)展成5個完全獨立且每個子串口波特率、奇偶效驗方式、數(shù)據(jù)幀長度都可獨立設(shè)置的全雙工子串口(子串口波特率最高可達(dá)115.2Kbps,滿足數(shù)據(jù)高速傳輸要求)。
SP3539采用分時復(fù)用技術(shù)將一個全雙工串口(上位機(jī)自帶串口)擴(kuò)展成5個完全獨立的全雙工串口(子串口),在上電默認(rèn)模式下母串口的波特率是各子串口波特率的6倍,即:各子串口可在特定的時間段內(nèi)獨占母串口,因此即使所有子串口都有連續(xù)不斷的數(shù)據(jù)輸入也不會發(fā)生數(shù)據(jù)丟失。母串口和各子串口內(nèi)部都分別有8字節(jié)的接收和發(fā)送FIFO緩存,即使5個子串口同時接收到數(shù)據(jù)和啟動數(shù)據(jù)發(fā)送也不會丟失數(shù)據(jù)。
2、基于SP3539串口擴(kuò)展的硬件電路設(shè)計
本文采用了經(jīng)典的8051單片機(jī)(AT89S52)作為主控芯片。該芯片與SP3539相連時接口非常簡單。SP3539共有六個串口,即一個母串口,五個子串口,它們都是全雙工的串行通信口,允許同時接收和發(fā)送數(shù)據(jù)。母串口與單片機(jī)的串口相連,子串口與其他串口設(shè)備相連,這樣就實現(xiàn)了只有一個串口的單片機(jī)可與五個串口設(shè)備相連。SP2338有一套發(fā)送地址線,一套接收地址線,用以選擇發(fā)送串口和接收串口。當(dāng)單片機(jī)要向串口設(shè)備發(fā)送數(shù)據(jù)時:
A單片機(jī)先發(fā)送地址信息(子串口地址)到SP3539的輸入地址“ADRI2”、“ADRI1”、“ADRI0”(如圖1),即選中待發(fā)送數(shù)據(jù)對應(yīng)的子串口。
B將待發(fā)送的數(shù)據(jù)由單片機(jī)通過母串口發(fā)送到SP3539。SP3539的母串口收到單片機(jī)串口送來的數(shù)據(jù)后就根據(jù)ADRI0、ADRI1和ADRI2的狀態(tài),把數(shù)據(jù)送往對應(yīng)的子串口。
C對應(yīng)的子串口再把數(shù)據(jù)經(jīng)過電平轉(zhuǎn)換變成對應(yīng)的電平標(biāo)準(zhǔn)發(fā)給對應(yīng)的設(shè)備。
當(dāng)串口設(shè)備向單片機(jī)發(fā)送數(shù)據(jù)時,其數(shù)據(jù)流程為:
ASP3539的將子串口收到的數(shù)據(jù)緩存到FIFO里面,并發(fā)送到母串口。
B單片機(jī)接收到數(shù)據(jù)后,必須盡快讀取ADRO2、ADRO1、ADRO0三位輸出地址的狀態(tài),并由此來判斷接收到的數(shù)據(jù)來自哪個子串口。
由于SP3539的母串口和各子串口內(nèi)部都分別有8字節(jié)的接收和發(fā)送FIFO緩存,因此擴(kuò)展后的五個串口就可以完全獨立地同時通信。SP3539各子串口都支持10位及11位數(shù)據(jù)幀格式,允許上位機(jī)更改各子串口數(shù)據(jù)幀長度,初次上電后各子串口默認(rèn)數(shù)據(jù)格式都為10位。
SP3539母串口波特率為:
K5=3600﹡Fosc_in
各子串口波特率為:
k=600﹡Fosc_in/n
式中“Fosc_in”為SP3539輸入時鐘(OSCI),單位為“MHz”,n為對應(yīng)子串口設(shè)置的分頻系數(shù),默認(rèn)狀態(tài)為“1”。本文采用的輸入時鐘為16.0MHz,則上電默認(rèn)狀態(tài)下:母串口波特率:K5=3600﹡16.0=57600Bps,K0~4=600﹡1﹡16.0/1=9600Bps。
如果想要子串口的波特率工作在其它頻段,就必須根據(jù)上面的公式重新計算Fosc_in,同時也要改變SP3539和單片機(jī)的晶振。
3、基于SP3539串口擴(kuò)展的程序設(shè)計
采用SP3539擴(kuò)展串口程序簡單,占用資源少,不占用單片機(jī)的外部中斷和數(shù)據(jù)總線,5個子串口共享單片機(jī)串口中斷實現(xiàn)數(shù)據(jù)收發(fā)。但在使用過程中一定要注意:SP3539的地址總線一定要區(qū)分讀寫,否則會發(fā)生錯誤,造成芯片異常發(fā)熱;串口中斷里面對各個子串口操作的代碼一定要盡量優(yōu)化,否則在大數(shù)據(jù)量收發(fā)時會造成子串口數(shù)據(jù)丟失。
欄目分類
熱門排行
推薦信息
期刊知識
- 2025年中科院分區(qū)表已公布!Scientific Reports降至三區(qū)
- 2023JCR影響因子正式公布!
- 國內(nèi)核心期刊分級情況概覽及說明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學(xué)者
- 我用了一個很復(fù)雜的圖,幫你們解釋下“23版最新北大核心目錄有效期問題”。
- CSSCI官方早就公布了最新南核目錄,有心的人已經(jīng)拿到并且投入使用!附南核目錄新增期刊!
- 北大核心期刊目錄換屆,我們應(yīng)該熟知的10個知識點。
- 注意,最新期刊論文格式標(biāo)準(zhǔn)已發(fā)布,論文寫作規(guī)則發(fā)生重大變化!文字版GB/T 7713.2—2022 學(xué)術(shù)論文編寫規(guī)則
- 盤點那些評職稱超管用的資源,1,3和5已經(jīng)“絕種”了
- 職稱話題| 為什么黨校更認(rèn)可省市級黨報?是否有什么說據(jù)?還有哪些機(jī)構(gòu)認(rèn)可黨報?
- 《農(nóng)業(yè)經(jīng)濟(jì)》論文投稿解析,難度指數(shù)四顆星,附好發(fā)選題!