基于AT90S8515的串行通信及其應(yīng)用
出處:wangfyfe 發(fā)布于:2007-11-28 14:16:36
摘 要:介紹了高性能AVR微控制器AT90S8515的串行通信接口UART的主要性能特點(diǎn),并給
出串行數(shù)據(jù)通信的程序。
關(guān)鍵詞:AT90S8515微控制器 串行接口UART 應(yīng)用程序
0 引 言
美國(guó)ATMEL公司推出的90系列單片機(jī)是增強(qiáng)RISC內(nèi)載Flash的高性能八位單片機(jī),通稱(chēng)為AVR
單片機(jī),設(shè)計(jì)上采用低功耗CMOS技術(shù),而且在軟件上有效支持C語(yǔ)言(用IAR系統(tǒng)的ICC90C編譯器編譯)及匯編語(yǔ)言(用ATP匯編器編譯)。
其中AT90S8515是功能較強(qiáng)的一種型號(hào),它有40引腳PDIP和44引腳PLCC、TQFP等多種封裝形
式,具有120條功能強(qiáng)大的指令,而且大多數(shù)執(zhí)行時(shí)間為單時(shí)鐘周期,指令周期短僅為125ns。它具有以下主要特征:片內(nèi)有8K字節(jié)可的Flash存儲(chǔ)器,程序采用其SPI串行接口,使用壽命為1000次;32條通用I/O線及32個(gè)通用8位寄存器R0~R31,64個(gè)I/O專(zhuān)用寄存器;512字節(jié)的EEPROM(使用壽命為10萬(wàn)次)及512字節(jié)的內(nèi)部SRAM;供電電壓在VCC為4.0~6.0V內(nèi)可以全靜態(tài)工作范圍為0~8MHz;提供內(nèi)部及外部中斷源;帶片內(nèi)晶振器的可編程看門(mén)狗定時(shí)器;并有2種可通過(guò)軟件選擇的電源節(jié)電模式:閑置模式、掉電模式;可編程的全雙工串行通信接口UART;一個(gè)8位定時(shí)器/計(jì)數(shù)器T/C0,一個(gè)16位的帶預(yù)分頻及比較模式、捕獲模式及雙工8位、9位或10位的PWM輸出的定時(shí)器/計(jì)數(shù)器T/C1。本文著重介紹其片內(nèi)UART在實(shí)際中的應(yīng)用。
1 串行接口UART的主要特征和工作原理
1.1 串行接口UART的主要特征
AT90S8515帶有一個(gè)全雙工的通用異步收發(fā)器(UART),特征如下:
(1)波特率發(fā)生器可以生成任何波特率;
(2)在XTAL低頻率下有高的波特率;
(3)8位和9位數(shù)據(jù);
(4)噪聲濾波;
(5)超越誤差的檢測(cè);
(6)幀錯(cuò)誤檢測(cè);
(7)錯(cuò)誤起始位檢測(cè);
(8)3個(gè)獨(dú)立的中斷,即TX完成,TX數(shù)據(jù)寄存器空,RX完成。
其數(shù)據(jù)發(fā)送通過(guò)把被傳送的數(shù)據(jù)寫(xiě)入U(xiǎn)ART的I/O數(shù)據(jù)寄存器UDR來(lái)初始化,然后數(shù)據(jù)從UDR傳送到移位寄存器中。在波特率時(shí)鐘加載到移位寄存器的傳送操作時(shí),起始位從TXD引腳移出,然后是數(shù)據(jù)位在先。當(dāng)停止位被移出時(shí),如果在傳送中有新數(shù)據(jù)寫(xiě)入U(xiǎn)DR中,則被裝入移位寄存器中,同時(shí),UART的狀態(tài)寄存器USR的UDRE位(UART狀態(tài)寄存器空)被設(shè)置,直到UDR被重寫(xiě)。當(dāng)沒(méi)有新的數(shù)據(jù)被寫(xiě)入時(shí),而且停止位在TXD上保持了一位的長(zhǎng)度,USR的TX完成標(biāo)志位TXC被設(shè)置。
當(dāng)UART的控制寄存器UCR中的TXEN位被置為1時(shí),允許UART發(fā)送,此時(shí)PD1被作為發(fā)送線。
通過(guò)讀UDR寄存器,接收數(shù)據(jù)寄存器被訪問(wèn)。接收器以16倍波特率采樣RXD引腳的信號(hào),當(dāng)線路閑置時(shí),一個(gè)邏輯0的采樣將被轉(zhuǎn)換為起始位的下降沿,并且起始位的探測(cè)序列被初始化,然后,接受器在第8、9和10個(gè)采樣點(diǎn)采樣中,如果得到兩個(gè)或兩個(gè)以上是邏輯1,則認(rèn)為起始位是噪聲尖峰而拒絕,繼續(xù)探測(cè)下一個(gè)1到0的轉(zhuǎn)換。如果起始位被發(fā)現(xiàn)后,開(kāi)始采樣數(shù)據(jù)位,這些位也在第8、9和10個(gè)采樣點(diǎn)采樣,3取2作為該位的邏輯值,在采樣的同時(shí)被移入傳送寄存器。當(dāng)停止位為邏輯0,則USR的FE(幀錯(cuò)誤)標(biāo)志被置1,在讀UDR前,用戶(hù)應(yīng)檢查FE幀錯(cuò)誤標(biāo)志。在讀UDR后應(yīng)檢查OR位來(lái)檢測(cè)任何的超越錯(cuò)誤
當(dāng)UART的控制寄存器UCR中的RXEN位被置為1時(shí),允許UART數(shù)據(jù)接收,此時(shí)PD0被作為接收
線。
1.2 UART的主要寄存器及設(shè)置
UART的I/O數(shù)據(jù)寄存器UDR是兩個(gè)物理分離的寄存器分享相同的I/O地址,當(dāng)寫(xiě)入U(xiǎn)DR寄存器時(shí),UART的發(fā)送寄存器被寫(xiě)入;當(dāng)讀UDR寄存器時(shí),讀的是UART的接收寄存器。
UART的波特率寄存器UBRR是8位可讀/寫(xiě)的寄存器,用以確定波特率。用戶(hù)進(jìn)行串行通信編程的重點(diǎn)是了解UCR及USR的使用。
1.2.1 UART控制寄存器———UCR
位7——RXCIE:RX完成中斷使能,當(dāng)該位置1且SREG中的I位設(shè)為1時(shí),在USR中設(shè)置RXC位
將導(dǎo)致接收完成中斷被執(zhí)行;
位6———TXCIE:TX完成中斷使能,當(dāng)該位置1且SREG中的I位設(shè)為1時(shí),在USR中設(shè)置TXC位
將導(dǎo)致發(fā)送完成中斷被執(zhí)行;
位5———UDRIE:UART數(shù)據(jù)寄存器空中斷使能,當(dāng)該位置1且SREG中的I位設(shè)為1時(shí),在USR
中設(shè)置UDRIE位將導(dǎo)致發(fā)送UART數(shù)據(jù)寄存器空中斷被執(zhí)行;
位4———RXEN:接收使能,當(dāng)該位被設(shè)置時(shí)允許UART接收,當(dāng)接收器被禁止時(shí),TXC、OR、FE位的狀態(tài)標(biāo)志不能設(shè)置,否則,在把RXEN關(guān)閉時(shí)不能消除它們;
位3———TXEN:發(fā)送使能,當(dāng)該位被設(shè)置時(shí)允許UART發(fā)送,如在發(fā)送數(shù)據(jù)時(shí)禁止發(fā)送器,則在移位寄存器的數(shù)據(jù)和后續(xù)UDR中的數(shù)據(jù)被全部發(fā)送完成之前,發(fā)遂器不會(huì)被禁止;
位2———CHR9:9位字符的發(fā)送或接收,發(fā)送和接收的數(shù)據(jù)是9位數(shù)據(jù)位和1位起始位、1位停止位。第9位通過(guò)UTP中的RXB8和TXB8位分別讀和寫(xiě);
位1———RXB8:當(dāng)CHR9被設(shè)置時(shí),RXB8是收到數(shù)據(jù)的第9數(shù)據(jù)位;
位0———TXB8:當(dāng)CHR9被設(shè)置時(shí),TXB8是發(fā)送數(shù)據(jù)的第9數(shù)據(jù)位。
1.2.2 UART狀態(tài)寄存器———USR
USR提供各種狀態(tài)信息,其格式如下:
位7——RXC:UART接收完成,當(dāng)使用中斷數(shù)據(jù)接收時(shí),接收完成中斷子程序必須讀UDR而消除
RXC,否則在子程序完成時(shí)又引起新的中斷;
位6———TXC:UART發(fā)送完成,當(dāng)發(fā)送移位寄存的全部數(shù)據(jù)被移出后且沒(méi)有新的數(shù)據(jù)寫(xiě)入U(xiǎn)DR時(shí),該位置1,TXC在執(zhí)行相應(yīng)的中斷向量時(shí)被硬件清除;
位5———UDRE:UART數(shù)據(jù)寄存器空,當(dāng)寫(xiě)入U(xiǎn)DR的字符被傳送到發(fā)送移位寄存器中時(shí)該位被設(shè)置,表示發(fā)送器準(zhǔn)備新的數(shù)據(jù)發(fā)送。
位4———FE:幀出錯(cuò),當(dāng)收到的數(shù)據(jù)的停止位為0時(shí),該位置1,F(xiàn)E在收到的數(shù)據(jù)的停止們?yōu)?時(shí)被清除;
位3———OR:超越出錯(cuò),當(dāng)UDR寄存器的數(shù)據(jù)沒(méi)有在新的數(shù)據(jù)被移入到接收移位寄存器之前被讀走,該位置1,即OR位被緩沖。意味著移入移位寄存器的數(shù)據(jù)字節(jié)不能被送到UDR中而丟失。
1.2.3 波特率發(fā)生器
依據(jù)以下等式的分頻器產(chǎn)生波特率:
BAUD=f/[16(UBRR+1)]
BAUD表示波特率,f為晶振頻率;UBRR表示UART波特率寄存器的值(0~255)。例如,波特率確定為9600波特時(shí),選用標(biāo)準(zhǔn)的晶振頻率1.8432MHz(誤差為0),則可計(jì)算出UBRR的初始化值為11;波特率確定為9600波特時(shí)選用晶振頻率為3.6864MHz,UBRR的初始化值為23。
2 AT90S8515與上位PC機(jī)的串行通信應(yīng)用
2.1 與上位PC機(jī)的硬件連接
AT90S8515與上位PC機(jī)通信采用RS485總線,通過(guò)RS-485接收/發(fā)送器連接,使用MAXIM公司的MAX3080CPD芯片,為了使電磁干擾及終端末匹配的連接所產(chǎn)生的反射,MAX3080適合速率為115Kbps以下的應(yīng)用,而且具有平衡發(fā)送,差分接收,抑制共模干擾和故障保護(hù)的特點(diǎn),適合遠(yuǎn)距離傳送。為提高系統(tǒng)可靠性,在MAX3080與CPU之間還可增加光電耦合器6N137,更好地與上位機(jī)電氣隔離。硬件連接原理圖如圖1所示。
2.2 與PC機(jī)的串行通信軟件設(shè)計(jì)
應(yīng)用AT90S8515的串行接口UART與PC機(jī)進(jìn)行串行通信軟件設(shè)計(jì)可以采用中斷接受與查詢(xún)發(fā)送
的方式,通過(guò)判斷UART中的UDR發(fā)送數(shù)據(jù)寄存器是否為空決定是否發(fā)送,并激活接收完成中斷。
下面的程序采用查詢(xún)方式向上位PC機(jī)發(fā)送數(shù)據(jù),采用中斷方式接收數(shù)據(jù),字符數(shù)據(jù)位為8位,接受數(shù)據(jù)塊將包含數(shù)據(jù)幀幀頭及幀尾(各占一個(gè)字節(jié)),還有符合本節(jié)點(diǎn)的標(biāo)識(shí)碼(地址),從而提高數(shù)據(jù)接收的安全性及可靠性,并適合多個(gè)AVR微控制器與PC機(jī)通信。
選用標(biāo)準(zhǔn)的晶振頻率3.864MHz(誤差為0),波特率確定為19200波特,且用PD7引腳控制
MAX3080發(fā)送的開(kāi)啟與關(guān)閉。









3 結(jié)束語(yǔ)
以上的程序模塊已經(jīng)在作者的課題項(xiàng)目開(kāi)發(fā)中加以應(yīng)用,同時(shí)對(duì)AT908535、AT90S2313等其它型號(hào)AVR單片機(jī)也完全通用。
總之,相對(duì)以往的AT89系列單片機(jī),以AT90S8515作為嵌入式高效微控制器,在性能上要
強(qiáng)得多,程序的效率高而且運(yùn)行速度大大提高,開(kāi)發(fā)手段也更方便。
另外,AVR單片機(jī)的內(nèi)部又有硬件看門(mén)狗電路即看門(mén)狗定時(shí)器和看門(mén)狗定時(shí)器的控制寄存器WDTTP相相應(yīng)的看門(mén)狗指令控制,大大提高了系統(tǒng)的可靠性及安全性,因此,目前應(yīng)用ATP系列單片機(jī)更適合組成工業(yè)現(xiàn)場(chǎng)總線控制系統(tǒng)的智能檢測(cè)及采集處理節(jié)點(diǎn)。
參考文獻(xiàn):
[1]. AT90S8515 datasheet http://www.hbjingang.com/datasheet/AT90S8515_143990.html.
[2]. RISC datasheet http://www.hbjingang.com/datasheet/RISC_1189725.html.
[3]. TQFP datasheet http://www.hbjingang.com/datasheet/TQFP_1528902.html.
[4]. XTAL datasheet http://www.hbjingang.com/datasheet/XTAL_1134460.html.
[5]. RS485 datasheet http://www.hbjingang.com/datasheet/RS485_585289.html.
[6]. MAXIM datasheet http://www.hbjingang.com/datasheet/MAXIM_1062568.html.
[7]. MAX3080CPD datasheet http://www.hbjingang.com/datasheet/MAX3080CPD_858510.html.
[8]. MAX3080 datasheet http://www.hbjingang.com/datasheet/MAX3080_858518.html.
[9]. 6N137 datasheet http://www.hbjingang.com/datasheet/6N137_91364.html.
[10]. AT90S2313 datasheet http://www.hbjingang.com/datasheet/AT90S2313_143786.html.
[11]. AT89 datasheet http://www.hbjingang.com/datasheet/AT89_2309618.html.
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 單片機(jī)技術(shù)特性與嵌入式開(kāi)發(fā)實(shí)踐指南2026/1/7 10:00:02
- 單片機(jī)(MCU)與數(shù)字信號(hào)處理器(DSP)分類(lèi)及選型技術(shù)指南2025/12/30 10:02:37
- 工業(yè)級(jí)DSP信號(hào)處理系統(tǒng):硬件適配與抗干擾工程方案2025/12/15 14:41:00
- HOLTEK推出HT32F65533G/733G內(nèi)建N/N預(yù)驅(qū)電機(jī)專(zhuān)用SoC單片機(jī)2025/11/26 14:11:41
- 什么是C51數(shù)據(jù)類(lèi)型擴(kuò)充定義2025/10/27 13:59:22
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
- PCB焊盤(pán)與過(guò)孔設(shè)計(jì)核心實(shí)操規(guī)范(含可焊性與可靠性保障)
- 汽車(chē)電子常用電子元器件選型指南
- MOSFET驅(qū)動(dòng)與隔離方案設(shè)計(jì)
- 高溫環(huán)境下電源IC選型建議
- 安防監(jiān)控設(shè)備連接器應(yīng)用分析
- 高速PCB信號(hào)完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對(duì)系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測(cè)試方法









