摘 要:介紹了ATMEL公司推出的RISC結(jié)構(gòu)的AVR高檔嵌入式微處理器ATmega161的主要特點和增強性能,給出了以ATmega161為中央處理單元設(shè)計的一種高性價比嵌入式測控網(wǎng)絡(luò)的硬件電路和軟件程序。 <!--摘要CH(結(jié)束)←--> <!--→關(guān)鍵CH(開始)--> 關(guān)鍵詞:AVRATmega161;嵌入式;測控網(wǎng)絡(luò);RS-485總線
<!--關(guān)鍵CH(結(jié)束)←-->1引言 隨著微電子技術(shù)、通信技術(shù)、控制技術(shù)和半導(dǎo)體技術(shù)的飛速發(fā)展以及工業(yè)、醫(yī)療衛(wèi)生、國防等部門對智能控制要求的不斷提高,嵌入式微處理器被越來越廣泛地應(yīng) 用。為了適應(yīng)各方面的需求,嵌入式微處理器在運算速度、可擴充能力、系統(tǒng)可靠性、功耗和集成度等方面得到了突飛猛進的發(fā)展。嵌入式微處理器體系結(jié)構(gòu)經(jīng)歷了 一個從CISC(Complex In-struction Set Computer)到RISC(Reduced Instruction SetComputer),從4位、8位、16位到32位甚至64位,尋址空間從64kB到16MB甚至更大,處理速度從0.1MIPS到2000 MIPS的過程。 ATmega161是一款基于AVR(Advanced RISC)的低功耗CMOS8位單片機,它以其強大的功能和較高的性價比得到了不少嵌入式系統(tǒng)開發(fā)者的青睞。其主要特點表現(xiàn)在以下幾方面: (1)ATmega161增強型RISC結(jié)構(gòu)方面 ●內(nèi)含2周期乘法器; ●具有32個8位通用(工作)寄存器; ●工作在8MHz時,具有8MIPS的性能; ●具有130條指令,大多數(shù)為單周期指令; (2)數(shù)據(jù)和程序存儲器方面 ●內(nèi)含16k非易失在系統(tǒng)可編程FLASH; ●具有1k的內(nèi)部SRAM; ●帶有512字節(jié)非易失在系統(tǒng)編程EEPROM; ●能進行可編程程序加密。 (3)外圍特點 ●帶有兩個可編程全雙工UART; ●帶有主/從SPI串行接口; ●具有自身振蕩器的實時時鐘RTC; ●具有2個8位定時器/計數(shù)器; ●帶有1個可預(yù)分頻的具有比較、捕捉和雙8/9/10位PWM功能的16位定時器/計數(shù)器; ●具有可編程的內(nèi)部看門狗定時器; ●片內(nèi)的模擬比較器可用作A/D轉(zhuǎn)換; ●帶有35個可編程I/O口。 (4)增強的MCU特點 ●可進行上電復(fù)位和可編程低壓檢測; ●具有21級內(nèi)外部中斷源; ●有空閑、節(jié)電及掉電三種節(jié)電模式。 (5)其它特性 ●采用40腳PDIP,44腳PLCC及QFP封裝; ●工作電壓為4.0~5.5V。 2嵌入式測控網(wǎng)絡(luò)的設(shè)計 傳統(tǒng)的測控網(wǎng)絡(luò)由于連接有很多常規(guī)模擬儀表和執(zhí)行機構(gòu)以及其它現(xiàn)場設(shè)備而具有很多缺點,如一對一結(jié)構(gòu)連線龐雜,工程周期長,安裝費用高,維護不便;模擬信 號傳輸精度低,易受干擾;操作員在控制室既不能對其進行參數(shù)調(diào)整,也不能對其進行故障診斷,因而會導(dǎo)致操作的“失控”。 圖1所示是筆者設(shè)計的 以ATmega161為核心的嵌入式測控網(wǎng)絡(luò)系統(tǒng)示意圖。圖中的嵌入式控制器通過兩級RS-485總線既可和上位機通信,又可和傳感器以及執(zhí)行機構(gòu)等現(xiàn)場 設(shè)備進行通信。操作人員可直接通過鍵盤、鼠標(biāo)來完成對執(zhí)行機構(gòu)的遠程控制,從而實現(xiàn)實時監(jiān)控;同時,總線似的數(shù)字信號通信可以克服常規(guī)模擬信號傳輸?shù)脑S多 缺點,并具有接線簡單、維護方便、精度高、抗干擾能力強等優(yōu)點。
3硬件設(shè)計 可以用兩個UART通用串行口組成兩級RS-485網(wǎng)。一般的微處理器并不具備兩個UART,通?蓴U展一片串行接口芯片(如8251、8250或者 EXAR公司的ST16C2552等)構(gòu)成兩個UART,但這樣會使電路變得復(fù)雜、PCB成本增大且系統(tǒng)的抗干擾能力下降。而ATmega161正好具有 兩個可編程UART,所以無需擴展,這種方法不但可以使電路簡化并使PCB體積縮小,而且還可使抗干擾能力增強,同時也具有較高的性價比。
通信部分的硬件原理圖如圖2所示。圖中,將兩個UART的RXD、TXD分別接到兩片MAX485上,以使其轉(zhuǎn)換成RS-485電平,再以數(shù)據(jù)總線的形式連接到上位機和數(shù)字化的儀器儀表以及其它現(xiàn)場設(shè)備上,從而構(gòu)成兩級測控網(wǎng)絡(luò)。 MAX485是一種專用的RS-485/RS-422接口芯片,它具有功耗低、體積小、操作簡單方便等優(yōu)點。每片MAX485最多能帶32個收發(fā)器,如果要增加每條總線上收發(fā)器的個數(shù),可以換成MAX487、MAX1487(可帶128個收發(fā)器)等芯片。 4軟件設(shè)計 4.1通信協(xié)議 通信協(xié)議采用ISO的OSI七層模型中的物理層、鏈路層和應(yīng)用層。其中物理層為RS-485,它以雙絞線為傳輸總線,其最大通信距離可達1200米,最 大從機個數(shù)為32臺(使用MAX485),數(shù)據(jù)傳送速率為2400b/s,數(shù)據(jù)傳輸格式為:1位起始位、8位數(shù)據(jù)位和1位停止位,該格式無奇偶校驗位,通 信錯誤檢測采用累加和校驗。 數(shù)據(jù)鏈路層可參考ISO的“高級數(shù)據(jù)鏈路層協(xié)議”(HDLC)的有關(guān)規(guī)定,并選用適合于主從網(wǎng)絡(luò)的HDLC的正常 響應(yīng)操作模式(NRM),即從站只有在其受到主站的請求時才能發(fā)送信息。上位機采用輪詢的方式對嵌入式控制器進行訪問,而控制器又對數(shù)字化傳感器及現(xiàn)場設(shè) 備以輪詢的方式進行訪問。其操作過程如圖3所示。
嵌入式控制器在整個通信過程中具有雙重身份,即在與上位機通信過程中,上位機是主站,控制器為從站;而在與傳感器及現(xiàn)場設(shè)備的通信過程中,控制器是主站,傳感器和現(xiàn)場設(shè)備為從站。 幀的格式定義為:幀開始符、源地址、目的地址、控制字、信息、累加和校驗(BCC)以及幀結(jié)束符。 在實際的通信過程中,往往會出現(xiàn)數(shù)據(jù)丟失和數(shù)據(jù)傳輸錯誤等通信故障。為了防止數(shù)據(jù)丟失,系統(tǒng)采用了超時處理的方法。這樣,主站發(fā)送查詢命令后,如果在預(yù) 定的時間內(nèi)沒有收到從站的響應(yīng)信號,可再次發(fā)送一幀查詢命令,以等待對方響應(yīng)。如果連續(xù)三次發(fā)送后,主站仍然沒有收到正確的響應(yīng),系統(tǒng)將退出并報警,同時開始輪詢下一從站。 針對數(shù)據(jù)出錯情況,每幀都增加了累加和校驗來對源地址、目的地址、控制字和信息段進行邏輯和運算,并將運算結(jié)果作為幀結(jié)束前的一個字符傳送到接收方,而 接收方在接收完該幀信息后也將接收到的源地址、目的地址、控制字和信息段作邏輯和運算,如果運算結(jié)果和收到的運算結(jié)果不一致,則廢棄該幀數(shù)據(jù)。如果接收到 通信協(xié)議規(guī)定之外的控制字、源地址或目的地址,系統(tǒng)也將廢棄該幀數(shù)據(jù)。 4.2 ATmega161的雙UART寄存器設(shè)置 如前所述,ATmega161帶有兩個全雙工的可編程通用異步收發(fā)器UART。用戶可通過設(shè)置表1中的9個寄存器來對兩個UART進行編程,表內(nèi)括號中的十六進制數(shù)為相應(yīng)的寄存器地址。 以UART0為例,UDR0是兩個物理分離的數(shù)據(jù)寄存器,它們具有相同的I/O地址,但在讀/寫時,它們將分別訪問不同的寄存器。在兩個狀態(tài)控制寄存器中,UCSR0A的格式為:
其中,RXC0為接收完成標(biāo)志,TXC0為發(fā)送完成標(biāo)志,UDRE0為數(shù)據(jù)寄存器空標(biāo)志,F(xiàn)E0為幀出錯標(biāo)志,OR0為超越出錯標(biāo)志,U2X0為雙倍傳輸速度標(biāo)志,MPCM0為多處理器通信標(biāo)志位。另一個狀態(tài)控制寄存器UCSR0B的格式為:
該格式中的RXCIE0為接收完成中斷觸發(fā)位,TXCIE0為發(fā)送中斷觸發(fā)位,UDRIE0為數(shù)據(jù)寄存器空中斷觸發(fā)位,RXEN0為接收允許,TXEN0為發(fā)送允許,CHR90為九位數(shù)據(jù)標(biāo)志位,RXB80為收到的數(shù)據(jù)第8位,TXB80為發(fā)送的數(shù)據(jù)第8位。 UBRRHI的低四位和UBRR0分別為波特率寄存器的高位和低位。波特率寄存器的計算公式為:
式中,F(xiàn)ck為晶振頻率,BAUD為波特率,UBRR為寄存器中應(yīng)取的值。 UART1的設(shè)置編程與UARTO基本相同。 4.3部分源代碼 可以使用匯編語言或ANSIC語言編寫源代碼(編譯軟件均可從INTERNET上免費下載),編譯生成HEX目標(biāo)文件后,可以通過高速下載線經(jīng)由SPI接口將該目標(biāo)文件下載到ATmega161的FLASH存儲器中。 下面是C語言源代碼的一部分:
<!--標(biāo)題EN(結(jié)束)←-->5結(jié)束語 事實證明,用ATmega161構(gòu)成的嵌入式控制器在構(gòu)成兩級測控網(wǎng)絡(luò)時具有明顯的性價比優(yōu)勢,在現(xiàn)場總線(如LONWORKS、CAN等)仍然還比較昂 貴的情況下,可以作為DCS向FCS的過渡產(chǎn)品。因為該網(wǎng)絡(luò)具有數(shù)字化的特點,加上RS-485標(biāo)準(zhǔn)在國內(nèi)已經(jīng)非常流行,所以具有良好的擴展性和通用性, 完全可以滿足現(xiàn)場控制和遠程監(jiān)控的要求,可廣泛應(yīng)用于各類測控系統(tǒng)中。 <!--→參考文獻CH(開始)-->
參考文獻
1.耿德根,等.AVR高速嵌入式單片機原理與應(yīng)用.北京航空航天大學(xué)出版社.2001
2.吳錫祺,何鎮(zhèn)湖.多級分布式控制與集散系統(tǒng).中國計量出版社,2000
3.HTTP://WWW.ATMEL.COM
4.MAXIMCorporation.NewReleases Data Book VolumeIX.2000
<!--標(biāo)題EN(結(jié)束)←-->
5.蘇學(xué)花,楊壽保.基于RS-485的分布式監(jiān)控系 統(tǒng)的設(shè)計.計算機應(yīng)用.2001年8 |