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