串行通信在智能儀器系統(tǒng)數(shù)據(jù)通信中一直扮演極重要的角色,具有線路簡(jiǎn)單、應(yīng)用靈活、可靠性高等優(yōu)點(diǎn),目前已成為許多高端CPU和低端單片機(jī)的標(biāo)準(zhǔn)配置。由于51單片機(jī)多數(shù)只提供了一個(gè)串口資源,最多二個(gè)串口,幾乎沒(méi)有超過(guò)這個(gè)數(shù)目的,所以軟件模擬串口的收發(fā)工作往往是此類系統(tǒng)的擴(kuò)展多串口的首選方案,但該方案不僅占用資源,且應(yīng)用效果并不理想。因此本文采用了16C554擴(kuò)展串口資源,并提供了實(shí)際電路原理圖和軟件的模塊化設(shè)計(jì)方案及部份軟件代碼等。
1.16C554原理
16C554是一種通用異步串行收發(fā)器,采用并行一串行轉(zhuǎn)換機(jī)制提供了4組RS --232接口,每通道可配置最大16字節(jié)FIFO (First In First Out)緩存,其總線接口方式,便于和MCS-51單片機(jī)連接,實(shí)現(xiàn)串口擴(kuò)展;其可以提供兩種接口:16模式和68模式,16模式專門針對(duì)51系列單片機(jī);68模式針對(duì)Motorola系列和其它系列單片機(jī),提供FIFO和 DMA兩種工作模式。
1.1內(nèi)部結(jié)構(gòu)
圖1是其內(nèi)部一組通道(其它三組一樣)的原理框圖。它提供了數(shù)據(jù)總線(D0-D7)、讀寫控制信號(hào)(IOW/R)及片選信號(hào)(A0-A2,CS),還提供符合RS -232協(xié)議的接口信號(hào),如TxD,RxD及Modem控制信號(hào)等,并具有內(nèi)部通道自檢功能;其工作流程是:在控制信號(hào)(Iow,IOR,CS,A0-A2)的作用下,對(duì)指定的某一路通道進(jìn)行操作;數(shù)據(jù)或從8位數(shù)據(jù)線寫入到發(fā)送寄存器(Transmit FIFO Registers),啟動(dòng)發(fā)送工作,或者從接收寄存器(Receive FIFO Registers)進(jìn)行讀取操作;當(dāng)發(fā)送寄存器或接收寄存器發(fā)送完成或接收到一個(gè)字節(jié)的內(nèi)容時(shí),對(duì)應(yīng)通道的INT A-D會(huì)從高電平變化為低電平,這個(gè)信號(hào)變化可以作為單片機(jī)的中斷源。
圖1 16C554內(nèi)部原理圖
1.2內(nèi)部寄存器
在應(yīng)用時(shí),必須首先對(duì)16C554 內(nèi)部的幾個(gè)重要功能寄存器如中斷使能寄存器等進(jìn)行設(shè)置,當(dāng)設(shè)置正確后,16C554 才可以正常工作。部分寄存器是獨(dú)立地址,有一些寄存器是共用地址,根據(jù)讀寫操作的不同,代表的功能是不同的,具有不同的物理意義(見(jiàn)表1、表2)。
1.3應(yīng)用特點(diǎn)
器件的主要特點(diǎn)如下:支持3.3V和5V,內(nèi)部包含4片16C550,最高可達(dá)1M的波特率,可軟件設(shè)定波特率;16字節(jié)帶錯(cuò)誤指示功能的接收FIFO緩沖器;可編程設(shè)定的數(shù)據(jù)格式:數(shù)據(jù)長(zhǎng)度為5、6、7、8等位,停止位長(zhǎng)度為1、1.5、2等位,提供偶校驗(yàn)、奇校驗(yàn)或無(wú)校驗(yàn)?zāi)J?標(biāo)準(zhǔn)的調(diào)制解調(diào)器接口;68引腳PLCC和80引腳TQFP兩種封裝形式。
2.應(yīng)用設(shè)計(jì)
2.1硬件設(shè)計(jì)
在采用89C58實(shí)現(xiàn)的一個(gè)移動(dòng)目標(biāo)無(wú)線遙測(cè)遙控系統(tǒng)中,需要完成的工作主要有:GSM通訊、GPS處理、PC通訊以及手柄通訊等,這些外設(shè)都是通過(guò)RS—232接口和51單片機(jī)通訊的。采用16C554擴(kuò)展51單片機(jī)串口的連接如圖2所示。
圖2 采用16C554擴(kuò)展的51單片機(jī)串口連接
圖2中,D[0-7]連接51單片機(jī)的P0口,A0/A1/A2連接到P0的三位地址線;GSMCS、GPSCS、HSETCS及PCCS分別代表著A通道(連接到GSM)、B通道(GPS通訊)、C通道(手柄顯示)及D通道(計(jì)算機(jī)通訊通道)的片選信號(hào),連接到P2口的三位地址線;INTA/INTB/INTC/INTD是四通道的接收/發(fā)送后的指示信號(hào),作為51單片機(jī)外部中斷源INT0,當(dāng)四通道中的任一通道接收到內(nèi)容,都會(huì)觸發(fā)51單片機(jī)中斷申請(qǐng),使51單片機(jī)進(jìn)入中斷程序,讀取內(nèi)容與PC、手柄的串行通訊經(jīng)過(guò)了RS- 232電平變換,以滿足較長(zhǎng)距離通訊的需要。
圖2中,4個(gè)二極管和一個(gè)與非門組成5U1中斷信號(hào)電路,芯片復(fù)位端和51單片機(jī)復(fù)位信號(hào)相連。
特別需要說(shuō)明的是16C554的供電電路。實(shí)踐中,發(fā)現(xiàn)它極易受到電源波動(dòng)的影響,導(dǎo)致通訊失敗。因此,電路中采用電阻5R4和5C1、5C2組成了一個(gè)RC濾波電路,且在布板時(shí),根據(jù)就近連接的原則,把5C3和PIN13、5C4和PIN47、5C5和 PIN64就近連接,提高了它的抗干擾能力,如果5R4用電感代替,效果更好。
2.2初始化流程
圖3 初始化流程
通常情況下,對(duì)于16C554的各個(gè)通道而言,差別僅在通訊的波特率、校驗(yàn)位等不同,因此在設(shè)計(jì)軟件時(shí),盡量模塊化,即設(shè)置模塊、讀操作模塊及發(fā)送模塊等盡量共用。圖3是初始化操作的流程圖,相應(yīng)的代碼如下所示:
通常51單片機(jī)軟件的主循環(huán)是一個(gè)死循環(huán)結(jié)構(gòu),但如果其他功能模塊也存在一個(gè)死循環(huán)的結(jié)構(gòu),那么在條件判斷的條件無(wú)法滿足時(shí),51單片機(jī)系統(tǒng)往往就進(jìn)入到類似“死機(jī)”的特征,導(dǎo)致系統(tǒng)崩潰無(wú)法完成預(yù)定任務(wù),且這種條件錯(cuò)誤并不是系統(tǒng)的主要任務(wù)。因此,在初始化流程中,引入了任務(wù)限時(shí)服務(wù)機(jī)制,在初始化條件失敗后,仍然可以正常退出初始化模塊,以便后續(xù)任務(wù)繼續(xù)得到進(jìn)行,如LCD或LED提示初始化16C554失敗等。
Setup模塊的入口參數(shù)為:DPH,R5,R6,R7。DPH代表的是四通道對(duì)應(yīng)的地址,R7、R6代表著對(duì)應(yīng)通道的波特率設(shè)置值,R5代表了設(shè)置對(duì)應(yīng)通道的中斷源。在實(shí)際應(yīng)用中,只需對(duì)上述4個(gè)字節(jié)賦予不同的值,連續(xù)調(diào)用4次,就完成了對(duì)16C554 四通道的初始化工作。
2.3中斷接收流程
與通過(guò)16C554發(fā)送流程相比,接收流程要復(fù)雜一些;為了提高51單片機(jī)程序的運(yùn)行效率,采用中斷方式讀取,從而完成接收任務(wù),流程圖如圖4所示。
圖4 外部中斷0處理流程圖
進(jìn)人外部中斷服務(wù)后,首先進(jìn)行現(xiàn)場(chǎng)保護(hù),把終端中使用到的公共變量保存,如保存DPTR和A等,然后依次完成各通道的讀取保存任務(wù)。圖4中最重要的是:完成四通道任務(wù)后,在退出中斷服務(wù)前,還需要再次檢查這四個(gè)通道是否仍然存在有接收中斷。如果有則繼續(xù)在中斷服務(wù)程序中讀取,否則退出中斷服務(wù)程序。實(shí)踐應(yīng)用表明:如果沒(méi)有這種處理機(jī)制,在串口通訊發(fā)生時(shí),51單片機(jī)會(huì)一直處于被申請(qǐng)外部中斷狀態(tài),導(dǎo)致其他任務(wù)無(wú)法得到正常運(yùn)行,即死機(jī)。
小結(jié)
以上就是51單片機(jī)的多串口擴(kuò)展設(shè)計(jì)了,經(jīng)實(shí)踐表明,采用FIFO設(shè)計(jì)的16C554,減少了中斷服務(wù)時(shí)間,不僅提高了51單片機(jī)程序的效率和處理速度,而且可應(yīng)用在高速調(diào)制解調(diào)器和需要快速數(shù)據(jù)處理時(shí)的網(wǎng)絡(luò)環(huán)境;在儀表系統(tǒng)中,51單片機(jī)因其應(yīng)用特點(diǎn),將來(lái)仍然會(huì)占有很大的市場(chǎng)份額,因此,擴(kuò)展它的串口資源具有一定的使用和參考價(jià)值。
電話:18923864027(同微信)
QQ:709211280
〈烜芯微/XXW〉專業(yè)制造二極管,三極管,MOS管,橋堆等,20年,工廠直銷省20%,上萬(wàn)家電路電器生產(chǎn)企業(yè)選用,專業(yè)的工程師幫您穩(wěn)定好每一批產(chǎn)品,如果您有遇到什么需要幫助解決的,可以直接聯(lián)系下方的聯(lián)系號(hào)碼或加QQ/微信,由我們的銷售經(jīng)理給您精準(zhǔn)的報(bào)價(jià)以及產(chǎn)品介紹