SP2538專用串行通信口芯片和Intel8251的兩種串行通信口擴(kuò)展方法
發(fā)布時間:2008/9/23 0:00:00 訪問次數(shù):1056
串行口的擴(kuò)展方法
常用的標(biāo)準(zhǔn)51單片機(jī)內(nèi)部僅含有一個可編程的全雙工串行通信接口,具有uart的全部功能。該接口電路不僅能同時進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為一個同步移位寄存器使用。當(dāng)以此類型單片機(jī)構(gòu)成分布式多級應(yīng)用系統(tǒng)時,器件本身的串口資源就不夠用了。筆者在實際開發(fā)中,查閱了有關(guān)資料,總結(jié)出如下兩種常用而有效的串行通道擴(kuò)展方法。
2.1 基于sp2538的擴(kuò)展方法
sp2538是專用低功耗串行口擴(kuò)展芯片,該芯片主要是為解決當(dāng)前基于uart串口通信的外圍智能模塊及器件較多,而單片機(jī)或dsp原有的uart串口又過少的問題而推出的。利用該器件可將現(xiàn)有單片機(jī)或dsp的單串口擴(kuò)展至5個全雙工串口。使用方法簡單、高效。
在應(yīng)用sp2538擴(kuò)展串行通道時,母串口波特率k1=2880*fosc_in,單位是mhz,且fosc_in小于20.0mhz, 在sp2538輸入時鐘fosc_in =20.0mhz時母串口可自適應(yīng)上位機(jī)的56000bps和57600bps兩種標(biāo)準(zhǔn)波特率輸入。子串口波特率k2=480*fosc_in。
母串口和所有子串口都是ttl電平接口,可直接匹配其他單片機(jī)或ttl數(shù)字電路,如需連接pc機(jī)則必須增加電平轉(zhuǎn)換芯片如max202 、max232 等。sp2538具有內(nèi)置的上電復(fù)位電路和可關(guān)閉的看門狗監(jiān)控電路。上位機(jī)寫命令字0x10可實現(xiàn)喂狗,寫命令字0x15關(guān)閉看門狗,初次上電后看門狗處于激活狀態(tài)或?qū)懨钭?x20激活看門狗監(jiān)控功能。上位機(jī)可通過芯片復(fù)位指令0x35在任何時候讓芯片進(jìn)行指令復(fù)位,也可通過芯片睡眠指令0x55在任何時候讓芯片進(jìn)入微功耗睡眠模式以降低系統(tǒng)功耗。初次上電后芯片不會自行進(jìn)入睡眠模式,但只能由上位機(jī)通過母串口任意發(fā)送一個字節(jié)數(shù)據(jù)將其喚醒,其他子串口不具備這一功能。
圖(1)是at89c52單片機(jī)與sp2538的電路連接,圖中,at89c52的全雙工串口與sp2538的母串口5相連,該串口同時也作為命令/數(shù)據(jù)口。sp2538的adri0、adri1、adri2分別與at89c52的p2.3、p2.4、p2.5口相連,可用于選擇發(fā)送數(shù)據(jù)是選擇相應(yīng)的串口0~4;adro0、adro1、adro2與p2.0、p2.1、p2.2相連,用于判斷接收的數(shù)據(jù)來自哪一個串口。 sp2538的時鐘頻率選為20.0mhz,此時母串口5的波特率為57600bps,串口0~4的波特率為9600bps。
下面是與上述硬件電路相關(guān)的接口程序,該程序用a51匯編語言編制,程序僅說明了中斷方式下對子串口0(tx0、rx0)的操作,其它子串口類似。
tblock data 20h
rblock data 30h
length data 14h
…
txr_rev_send: clr es
jbc ri,receive
clr ti
mov a,@r0
clr p2.0 ; 寫數(shù)據(jù)到"sbuf"前必須先置欲發(fā)送子串口的地址
clr p2.1
clr p2.2
mov sbuf,a
djnz r2,next
sjmp $
next: inc r0
reti
receive: mov a,p2
and a,#31h ;判斷是否為子串口0
jnz else
mov a,sbuf
mov @r1,a
inc r1
reti
圖(1) at89c52與sp2538的電路連接
2.2 基于intel8251的串行口擴(kuò)展方法
上面基于sp2538的串口擴(kuò)展方法可以說是一種串行的擴(kuò)展方法,這里基于intel8251的擴(kuò)展方法則是一種并行的方法。intel8251是一種通用的同步/異步發(fā)送器(usart),它的工作方式可以通過編程設(shè)置。能夠以同步或異步串行通信方式工作,能自動完成幀格式。
intel8251具有獨立的接收/發(fā)送器。在異步方式下,用于產(chǎn)生8251內(nèi)部時序的時鐘clk輸入至少應(yīng)為發(fā)送或接收時鐘的4.5倍。接收/發(fā)送(rxc/txc)時鐘應(yīng)為波特率的1倍、16倍或64倍(由8251的工作方式字設(shè)定)。
圖(2)是用intel8251擴(kuò)展一個串行通道的電路原理,圖中,11.0592mhz晶振經(jīng)ale6分頻后于 、組合,產(chǎn)生1.8432mhz的時鐘頻率,分別作為8251與8253的時鐘輸入,若設(shè)定8251通信波特率為9600bps,波特率因子為16,則需要 153.6khz的接收/發(fā)送時鐘頻率,該頻率可由8253的out0產(chǎn)生。
下面的a51程序段說明了如何設(shè)置8253使其產(chǎn)生153.6khz的方波,以及如何用8251收/發(fā)數(shù)據(jù):
;設(shè)置8253的程序段:
mov a,#36h ; 計數(shù)器0輸出方波控制字
mov dptr,#0ffffh ; 指向控制字寄存器
movx @dptr,a
mov dptr,#0fffch ; 指向0計數(shù)器地址
mov a,#0dh
movx @dptr,a
mov a,#0
movx dptr,a
setb p1.0
;操作8251的程序段:
…
start: mov dptr,#7fffh ;8251控制、命令口地址
mov a,#5eh ;一個
串行口的擴(kuò)展方法
常用的標(biāo)準(zhǔn)51單片機(jī)內(nèi)部僅含有一個可編程的全雙工串行通信接口,具有uart的全部功能。該接口電路不僅能同時進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可作為一個同步移位寄存器使用。當(dāng)以此類型單片機(jī)構(gòu)成分布式多級應(yīng)用系統(tǒng)時,器件本身的串口資源就不夠用了。筆者在實際開發(fā)中,查閱了有關(guān)資料,總結(jié)出如下兩種常用而有效的串行通道擴(kuò)展方法。
2.1 基于sp2538的擴(kuò)展方法
sp2538是專用低功耗串行口擴(kuò)展芯片,該芯片主要是為解決當(dāng)前基于uart串口通信的外圍智能模塊及器件較多,而單片機(jī)或dsp原有的uart串口又過少的問題而推出的。利用該器件可將現(xiàn)有單片機(jī)或dsp的單串口擴(kuò)展至5個全雙工串口。使用方法簡單、高效。
在應(yīng)用sp2538擴(kuò)展串行通道時,母串口波特率k1=2880*fosc_in,單位是mhz,且fosc_in小于20.0mhz, 在sp2538輸入時鐘fosc_in =20.0mhz時母串口可自適應(yīng)上位機(jī)的56000bps和57600bps兩種標(biāo)準(zhǔn)波特率輸入。子串口波特率k2=480*fosc_in。
母串口和所有子串口都是ttl電平接口,可直接匹配其他單片機(jī)或ttl數(shù)字電路,如需連接pc機(jī)則必須增加電平轉(zhuǎn)換芯片如max202 、max232 等。sp2538具有內(nèi)置的上電復(fù)位電路和可關(guān)閉的看門狗監(jiān)控電路。上位機(jī)寫命令字0x10可實現(xiàn)喂狗,寫命令字0x15關(guān)閉看門狗,初次上電后看門狗處于激活狀態(tài)或?qū)懨钭?x20激活看門狗監(jiān)控功能。上位機(jī)可通過芯片復(fù)位指令0x35在任何時候讓芯片進(jìn)行指令復(fù)位,也可通過芯片睡眠指令0x55在任何時候讓芯片進(jìn)入微功耗睡眠模式以降低系統(tǒng)功耗。初次上電后芯片不會自行進(jìn)入睡眠模式,但只能由上位機(jī)通過母串口任意發(fā)送一個字節(jié)數(shù)據(jù)將其喚醒,其他子串口不具備這一功能。
圖(1)是at89c52單片機(jī)與sp2538的電路連接,圖中,at89c52的全雙工串口與sp2538的母串口5相連,該串口同時也作為命令/數(shù)據(jù)口。sp2538的adri0、adri1、adri2分別與at89c52的p2.3、p2.4、p2.5口相連,可用于選擇發(fā)送數(shù)據(jù)是選擇相應(yīng)的串口0~4;adro0、adro1、adro2與p2.0、p2.1、p2.2相連,用于判斷接收的數(shù)據(jù)來自哪一個串口。 sp2538的時鐘頻率選為20.0mhz,此時母串口5的波特率為57600bps,串口0~4的波特率為9600bps。
下面是與上述硬件電路相關(guān)的接口程序,該程序用a51匯編語言編制,程序僅說明了中斷方式下對子串口0(tx0、rx0)的操作,其它子串口類似。
tblock data 20h
rblock data 30h
length data 14h
…
txr_rev_send: clr es
jbc ri,receive
clr ti
mov a,@r0
clr p2.0 ; 寫數(shù)據(jù)到"sbuf"前必須先置欲發(fā)送子串口的地址
clr p2.1
clr p2.2
mov sbuf,a
djnz r2,next
sjmp $
next: inc r0
reti
receive: mov a,p2
and a,#31h ;判斷是否為子串口0
jnz else
mov a,sbuf
mov @r1,a
inc r1
reti
圖(1) at89c52與sp2538的電路連接
2.2 基于intel8251的串行口擴(kuò)展方法
上面基于sp2538的串口擴(kuò)展方法可以說是一種串行的擴(kuò)展方法,這里基于intel8251的擴(kuò)展方法則是一種并行的方法。intel8251是一種通用的同步/異步發(fā)送器(usart),它的工作方式可以通過編程設(shè)置。能夠以同步或異步串行通信方式工作,能自動完成幀格式。
intel8251具有獨立的接收/發(fā)送器。在異步方式下,用于產(chǎn)生8251內(nèi)部時序的時鐘clk輸入至少應(yīng)為發(fā)送或接收時鐘的4.5倍。接收/發(fā)送(rxc/txc)時鐘應(yīng)為波特率的1倍、16倍或64倍(由8251的工作方式字設(shè)定)。
圖(2)是用intel8251擴(kuò)展一個串行通道的電路原理,圖中,11.0592mhz晶振經(jīng)ale6分頻后于 、組合,產(chǎn)生1.8432mhz的時鐘頻率,分別作為8251與8253的時鐘輸入,若設(shè)定8251通信波特率為9600bps,波特率因子為16,則需要 153.6khz的接收/發(fā)送時鐘頻率,該頻率可由8253的out0產(chǎn)生。
下面的a51程序段說明了如何設(shè)置8253使其產(chǎn)生153.6khz的方波,以及如何用8251收/發(fā)數(shù)據(jù):
;設(shè)置8253的程序段:
mov a,#36h ; 計數(shù)器0輸出方波控制字
mov dptr,#0ffffh ; 指向控制字寄存器
movx @dptr,a
mov dptr,#0fffch ; 指向0計數(shù)器地址
mov a,#0dh
movx @dptr,a
mov a,#0
movx dptr,a
setb p1.0
;操作8251的程序段:
…
start: mov dptr,#7fffh ;8251控制、命令口地址
mov a,#5eh ;一個
熱門點擊
- LabVIEW中的TCP通信
- LabVIEW中的UDP通信實例
- LabVIEW中的TCP/IP協(xié)議通信
- LabVIEW中的UDP通信
- LabVIEW的DataSocket API
- LabVIEW中的無線通信藍(lán)牙技術(shù)
- SP2538專用串行通信口芯片和Intel8
- LabVIEW的DataSocket服務(wù)器
- LabVIEW中的T0P協(xié)議通信實例
- 一種單片機(jī)電話單機(jī)測試儀的設(shè)計
推薦技術(shù)資料
- 100A全集成電源模塊R
- Teseo-VIC6A GNSS車用精準(zhǔn)定位
- 高效先進(jìn)封裝工藝
- 模數(shù)轉(zhuǎn)換器 (Analog-to-Digit
- 集成模數(shù)轉(zhuǎn)換器(ADC)
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究