- 相關(guān)推薦
MB89P475的UART/SIO結(jié)構(gòu)與應(yīng)用
摘要:MB89P475是富士通公司生產(chǎn)的八位單片機(jī)。該單片機(jī)具有豐富的軟、硬件資源和良好的EMC性能,可廣泛應(yīng)用于家電控制等產(chǎn)品中。該器件內(nèi)含兩路UART/SIO接口,非常適用于計算機(jī)集中控制和管理的多級通信控制系統(tǒng)中。文中介紹了該單片機(jī)的特點(diǎn)和UART/SIO結(jié)構(gòu),給出了MB89P475在LSP300型中央空調(diào)的計算機(jī)集控系統(tǒng)中的設(shè)計應(yīng)用方法。關(guān)鍵詞:MB89P475;單片機(jī);中央空調(diào);計算機(jī)集控系統(tǒng)
。停拢福梗校矗罚凳歉皇客ü旧a(chǎn)的F2MC-8LMB89470單片機(jī)系列產(chǎn)品。該產(chǎn)品具有豐富的軟、硬件資源和良好的EMC性能,而且其程序空間(16k×8bitsPROM)和數(shù)據(jù)空間(512×8bitsRAM)大小適中,定時器資源和中斷資源豐富。雙路UART/SIO接口的設(shè)置是該產(chǎn)品的一大特點(diǎn)。在指令設(shè)計方面,利用該單片機(jī)可以直接進(jìn)行16位數(shù)據(jù)的比較和算術(shù)運(yùn)算。MB89P475的高性價比和合理的資源配置,使其可以廣泛應(yīng)用于家用電器控制和工業(yè)控制等應(yīng)用領(lǐng)域。此外,在多級數(shù)據(jù)通信控制系統(tǒng)的開發(fā)設(shè)計中,MB89P475也是一款不可多得的單片機(jī)產(chǎn)品。
。保停拢福梗校矗罚岛喗
。保币_功能
。停拢福梗校矗罚担ǎ希裕行吞枺┫鄳(yīng)的掩膜(MASK)產(chǎn)品型號為MB89475,它具有兩種封裝形式,分別是48-pinPlasticSH-DIP和48-pinPlasticQFP封裝。本文以SH-DIP封裝形式為例來介紹其引腳定義,圖1所示是該封裝的引腳排列圖,現(xiàn)將各引腳的功能說明如下:
。兀,X1:振蕩器輸入、輸出;
。停希模牛耗J皆O(shè)定引腳,使用時,該引腳通常直接接地;
。遥樱裕簭(fù)位腳,低電平復(fù)位;
P00/AN0~P07/AN7:通用I/O口或A/D輸入口;
。校保啊校保常和ㄓ茫桑峡诨蜓赜|發(fā)中斷輸入口;
。校保础校保罚和ㄓ茫桑峡诨蚨〞r器輸入(EC)、輸出口(TO);
。校玻啊校玻玻和ㄓ茫桑峡诨颍眨粒遥裕樱桑希钡臅r鐘輸入、數(shù)據(jù)輸出和輸入口;
。校玻常和ㄓ茫桑峡诨颍校祝茫}寬測量)輸入口;
。校玻矗和ㄓ茫桑峡诨颍校祝停}寬調(diào)制)輸出口;
P25~P27:通用I/O口或UART/SIO2的數(shù)據(jù)輸入、數(shù)據(jù)輸出、時鐘輸入口;
P30*~P36*:大電流驅(qū)動輸出口,其中,P30/BUZ*可作蜂鳴器驅(qū)動口;
。校矗啊校矗保涸冢停拢福梗校矗罚担ǎ保埃玻▎螘r鐘系統(tǒng))中為通用輸入口,在MB89P475(202)(雙時鐘系統(tǒng))中為副時鐘連接引腳;
P42:通用輸入口;
。校担啊校担矗和ㄓ茫桑峡诨螂娖接|發(fā)中斷輸入口(低電平中斷);
。茫航樱埃宝蹋齐娙莸降兀
。郑悖、Vss:電源(+5V)和接地(GND)引腳;
。粒觯悖恪ⅲ粒觯螅螅海粒碾娐返膮⒖茧娫春偷。
。保仓饕攸c(diǎn)
。停拢福梗校矗罚祪(nèi)含六個定時器,分別為:PWC(脈寬測量)定時器(可用作時間間隔定時器)、PWM(脈寬調(diào)制)定時器(可用作時間間隔定時器)、2個8/16bit定時/計數(shù)器、一個21-bit時間基準(zhǔn)定時器和一個Watch比例器。此外,MB89P475還具有如下特點(diǎn):
●帶有蜂鳴器驅(qū)動,可由程序選擇7種驅(qū)動信號頻率;
●可外部中斷,包括4個沿觸發(fā)中斷通道和5個電平觸發(fā)中斷通道;
●內(nèi)含8通道10位A/D轉(zhuǎn)換器;
圖3
●內(nèi)含UART/SIO異步/同步數(shù)據(jù)接收/發(fā)射器;
●可低功耗工作,具有Stop模式、Sleep模式、副時鐘模式、Watch模式等多種工作模式;
●帶有Watchdog定時復(fù)位功能;
●最大可用39路I/O口。
。玻停拢福梗校矗罚档模眨粒遥裕樱桑辖Y(jié)構(gòu)
MB89P475的最大特點(diǎn)就是內(nèi)部集成了一個UART/SIO通用串行數(shù)據(jù)通信接口,可通過片內(nèi)雙緩沖器實現(xiàn)全雙工雙向通信?同時?UART/SIO可編程配置為異步或同步通信模式;其內(nèi)部波特率發(fā)生器既可以選擇14種不同的波特率?也可由外部時鐘設(shè)置波特率?其數(shù)據(jù)傳輸格式見表1所列。該數(shù)據(jù)傳輸格式基于NRZ(不歸零)系統(tǒng)。
表1UART/SIO數(shù)據(jù)格式
模式數(shù)據(jù)長度(Bit)通信模式停止位長度無校驗有校驗078異步1bit或2bits8918同步--
。停拢福梗校矗罚祪(nèi)含六個寄存器,分述如下:
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0MDPENTDPSBLCLCLK2CLK1CLK0
。ǎ保樱停茫保保玻保耗J娇刂萍拇嫫鳎保ǖ刂罚海埃埃玻叮龋埃埃玻拢,初始化值:00000000H)的格式如下:
其中,MD為通信模式控制位,該位為0為異步通信(UART),為1時同步通信(SIO);
。校牛螢樾r灴刂莆唬撐粸椋氨硎緹o校驗,為1表示有校驗(由Bit5選擇奇、偶校驗);
。裕模袨槠妗⑴夹r炍,0為偶校驗,1為奇校驗;
。樱拢淌峭V刮婚L度控制位,0為選擇1Bit停止位,1為選擇2Bit停止位;
。茫虨樽址L度控制位,0為選擇7Bit數(shù)據(jù)長度,1為選擇8Bit數(shù)據(jù)長度;
。茫蹋耍病茫蹋耍埃和ㄐ艜r鐘選擇位,具體操作見表2所列。
表2時鐘選擇
CLK2CLK1CLK0
選擇時鐘
0002個指令周期0018個指令周期01032個指令周期011波特率發(fā)生器控制100外部時鐘
。ǎ玻樱停茫保玻玻玻耗J娇刂萍拇嫫鳎玻ǖ刂罚海埃埃玻罚龋埃埃玻茫,初始化值:00000000H)的格式如下:
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0RERCRXETXEBRGETXOESCKERIETIE
其中,RERC:各接收標(biāo)志清除位。置0時,清除所有錯誤標(biāo)志,置1無效;
。遥兀牛簲(shù)據(jù)接收允許位,置0時禁止接收,置1時允許接收;
。裕兀牛簲(shù)據(jù)發(fā)射允許位,置0時禁止發(fā)射,置1時允許發(fā)射;
。拢遥牵牛翰ㄌ芈拾l(fā)生器啟動位,0為停止,1為啟動;
。裕兀希牛捍袛(shù)據(jù)輸出允許位,置0時,P21/SO1、P26/SO2為通用I/O口,置1時,P21/SO1、P26/SO2為串行數(shù)據(jù)輸出口;
SCKE:串行時鐘輸出允許位,置0時,P20/SCK1、P27/SCK2為通用I/O口或串行時鐘輸入口,置1時,P20/SCK1、P27/SCK2為串行時鐘輸出口;
。遥桑牛航邮罩袛嘣试S位,置0時,接收中斷禁止,置1時,接收中斷允許;
。裕桑牛喊l(fā)射中斷允許位,置0時,發(fā)射中斷禁止,置1時,發(fā)射中斷允許。
。ǎ常樱樱模保玻籂顟B(tài)與數(shù)據(jù)寄存器(地址:0028H/002DH,初始化值:00001---H),格式如下:
Bit7Bit6Bit5BIT4Bit3Bit2Bit1Bit0PREOVEFERRDRFTDRE------
其中,PRE:為校驗錯誤標(biāo)志,0為無校驗錯誤,1為校驗錯誤;
。希郑牛阂绯鲥e誤標(biāo)志,0為無溢出錯誤,1為溢出錯誤;
。疲牛遥簬e誤標(biāo)志,0為無幀錯誤,1為幀錯誤;
。遥模遥疲航邮諗(shù)據(jù)寄存器滿標(biāo)志,0為寄存器空,1為接收數(shù)據(jù)滿;
TDRE:發(fā)射數(shù)據(jù)寄存器空標(biāo)志,0為發(fā)射數(shù)據(jù)滿,1為寄存器空。
這里,SSD1/2是只讀寄存器。若接收中斷允許(RIE=1),那么任何錯誤標(biāo)志置“1”都將產(chǎn)生接收中斷。因此,在程序中將RERC(SMC12/22中的Bit7)置“1”,可將各錯誤標(biāo)志清零。
。ǎ矗樱遥茫保玻翰ㄌ芈士刂萍拇嫫鳎ǖ刂罚海埃埃玻粒龋埃埃玻疲,初始化值:xxxxxxxxH)
當(dāng)SMC11/SMC21寄存器中的CLK2~CLK0設(shè)為“011”時,由于選擇的是波特率發(fā)生器作為串行時鐘(異步通信方式使用),因此,只有在UART/SIO停止工作時,寫入SRC1/2的數(shù)據(jù)才有效。此時,波特率計算方法如下(CLK2~CLK0設(shè)為“011”):
波特率=1/(16nTint)
式中,n為寫入SRC1/2的數(shù)值,Tint為指令周期,其值可通過對相關(guān)寄存器編程設(shè)定為4/fch、8/fch、16/fch、64/fch(其中fch為系統(tǒng)時鐘振蕩器頻率)。
。ǎ担樱桑模遥保玻狠斎霐(shù)據(jù)寄存器(地址:0029H/002EH,初始化值:xxxxxxxxH)
該寄存器用于存放接收到的數(shù)據(jù)。當(dāng)數(shù)據(jù)接收完成時,RSRF位(SSD1/2中的Bit4)被置“1”,此時若接收中斷允許,將產(chǎn)生接收中斷請求。讀出接收數(shù)據(jù)后,RSRF位自動清“0”。
系統(tǒng)檢測到接收中斷請求后,應(yīng)檢查RSRF位是否為“1”,若為“0”,說明該中斷是由于接收錯誤產(chǎn)生的,SIDR1/2并未接收到數(shù)據(jù),此時應(yīng)在相應(yīng)的程序中作相應(yīng)處理。
。ǎ叮樱希模遥保玻狠敵鰯(shù)據(jù)寄存器(地址:0029H/002EH,初始化值:xxxxxxxxH)
。樱希模遥保才cSIDR1/2具有相同的地址。發(fā)射允許時,將發(fā)射數(shù)據(jù)寫入該寄存器即可直接轉(zhuǎn)送到發(fā)射寄存器,并通過發(fā)射移位寄存器發(fā)送到串行數(shù)據(jù)輸出口(SO1/2)。
圖5
發(fā)射數(shù)據(jù)寫入SODR1/2寄存器時,發(fā)射數(shù)據(jù)標(biāo)志位TDRE同時被清“0”,發(fā)射數(shù)據(jù)轉(zhuǎn)送到發(fā)射移位寄存器后,TDRE被置“1”,意味著SODR1/2寄存器可以寫入下一個發(fā)射數(shù)據(jù),同時,若發(fā)射中斷允許,將產(chǎn)生發(fā)射中斷請求。
若將發(fā)射數(shù)據(jù)長度設(shè)為7Bits,則數(shù)據(jù)的第7位(最高位)無效。
3LSR300型集控系統(tǒng)的構(gòu)成
圖2所示為LSR300型中央空調(diào)計算機(jī)集控系統(tǒng)的結(jié)構(gòu)框圖,該系統(tǒng)采用RS-485總線結(jié)構(gòu)方式,由計算機(jī)控制管理平臺、RS-232/RS-485轉(zhuǎn)換模塊、14個控制終端(包括通信板和主控系統(tǒng),其控制終端數(shù)量可以根據(jù)實際要求增加或減少)組成。其中計算機(jī)控制管理平臺主要用于數(shù)據(jù)通信、系統(tǒng)檢測、功能設(shè)定和控制以及查詢等管理工作。
系統(tǒng)中的RS-232/RS-485轉(zhuǎn)換模塊由MAX-IM公司生產(chǎn)的MAX491E、MAX232A組成,該模塊的電路連接如圖3所示。
通信板由MB89P475為核心組成,其結(jié)構(gòu)如圖4所示。圖中的RS-485接口由MAX491E完成,接收器處于常通狀態(tài)(RE接地),發(fā)射器的選通(DE端)由MB89P475的P2.7口控制(高電平選通)。通信板主要完成以下功能:
。ǎ保┯脫艽a開關(guān)實現(xiàn)各控制終端的地址編碼;
。ǎ玻C(jī)組的本地操作控制與顯示(包括本地查詢、設(shè)置和控制);
。ǎ常┓謩e與計算機(jī)和主控系統(tǒng)通信,實現(xiàn)主控系統(tǒng)與計算機(jī)之間的數(shù)據(jù)傳送。其中,與計算機(jī)之間采用RS-485總線方式進(jìn)行連接,而與主控系統(tǒng)之間則采用電流環(huán)方式連接;
。ǎ矗┯洃洐C(jī)組的設(shè)定信息、故障信息和累計運(yùn)行時間。
此外,系統(tǒng)中的主控系統(tǒng)也可采用LSR300中央空調(diào)單機(jī)組控制系統(tǒng)實現(xiàn)(詳見參考資料?1?)。
4MB89P475的通信軟件設(shè)計
。矗蓖ㄐ虐迮c計算機(jī)通信
(1)通信協(xié)議
通信板與計算機(jī)的通信采用RS-485總線方式連接,通信過程由計算機(jī)主控,通信數(shù)據(jù)采用RS-232標(biāo)準(zhǔn)數(shù)據(jù)格式[2]。
當(dāng)通信板接收到正確的同步碼和地址碼時,表示該通信板可以與計算機(jī)通信。此時可選擇MB89P475的UART/SIO2為UART(兩線異步)通信模式,通信數(shù)據(jù)格式定義為1位起始位,8位數(shù)據(jù)長度和1位停止位,無校驗位。
(2)軟件設(shè)計
。眨粒遥裕樱桑希蚕嚓P(guān)寄存器初始化如下:
。停希郑樱茫遥玻#保埃;設(shè)定波特率=1200bps(系統(tǒng)時鐘Fch=8.000MHz)
。停希郑樱停茫玻,#00001011B;選擇UART模式,1Bit停止位,8Bits數(shù)據(jù)長度,無校驗位
。停希郑樱停茫玻,#01111010B;允許接收中斷,禁止發(fā)射中斷,發(fā)射允許,接收允許
數(shù)據(jù)發(fā)射采用查詢方式進(jìn)行,即發(fā)射子程序置于主程序循環(huán)中,可通過查詢發(fā)射數(shù)據(jù)寄存器空標(biāo)志位TDRE決定是否寫入下一個發(fā)射數(shù)據(jù)。發(fā)射子程序流程圖如圖5所示。
數(shù)據(jù)接收采用中斷方式進(jìn)行。程序進(jìn)入接收中斷服務(wù)程序時,應(yīng)首先根據(jù)接收數(shù)據(jù)滿標(biāo)志位RDRF的狀態(tài)來判斷中斷請求是否是由于接收錯誤產(chǎn)生的(產(chǎn)生中斷時,接收數(shù)據(jù)滿標(biāo)志位RDRF=0),然后由判斷結(jié)果決定是接收數(shù)據(jù)還是進(jìn)行出錯處理。中斷服務(wù)程序的流程圖如圖6所示。
。矗餐ㄐ虐迮c主控系統(tǒng)通信
。ǎ保┩ㄐ艆f(xié)議
通信板與主控系統(tǒng)的通信采用電流環(huán)方式實現(xiàn),這樣可以增強(qiáng)通信的可靠性。通信過程由通信板主控,通信數(shù)據(jù)采用RS-232標(biāo)準(zhǔn)數(shù)據(jù)格式[2]。
可選擇MB89P475的UART/SIO1為UART(兩線異步)通信模式,通信數(shù)據(jù)格式定義為1位起始位,8位數(shù)據(jù)長度和1位停止位,無校驗位。
(2)軟件設(shè)計
相關(guān)寄存器初始化如下:
。停希郑樱茫遥,#52;設(shè)定波特率=2400bps(系統(tǒng)時鐘Fch=8.000MHz)
。停希郑樱停茫保,#00001011B;選擇UART模式,1Bit停止位,8Bits數(shù)據(jù)長度,無校驗位
MOVSMC12,#01111010B;允許接收中斷,禁止發(fā)射中斷,發(fā)射允許,接收允許
具體的編程方法與通信板和計算機(jī)的通信編程方法相同。
。到Y(jié)語
雖然MB89P475的雙路UART/SIO結(jié)構(gòu)具有靈活、安全的特點(diǎn),但合理的程序設(shè)計也至關(guān)重要。在LSR300中央空調(diào)計算機(jī)集控系統(tǒng)中,以MB89P475為核心設(shè)計的通信板,充分合理地利用了MB89P475的雙路UART/SIO資源。它可以作為各控制終端與計算機(jī)交換數(shù)據(jù)的樞紐,同時還避免了主控系統(tǒng)的重復(fù)開發(fā)。目前該系統(tǒng)已投入使用,其方便、靈活的操作模式和安全可靠的運(yùn)行已得到了用戶的肯定。
【MB89P475的UART/SIO結(jié)構(gòu)與應(yīng)用】相關(guān)文章:
UART多串口擴(kuò)展器SP2338DP及其應(yīng)用08-06
使用SPCE061A的SIO實現(xiàn)數(shù)碼錄音及播放08-06
網(wǎng)絡(luò)審計的結(jié)構(gòu)和應(yīng)用中的問題08-07
字符結(jié)構(gòu)知識在車牌識別中的應(yīng)用08-06
帶硬件地址識別的UART IP 的設(shè)計和實現(xiàn)08-06
WIND-FLEX的系統(tǒng)結(jié)構(gòu)及其應(yīng)用場合08-06
MicroWindows體系結(jié)構(gòu)及應(yīng)用程序接口08-06