新聞中心

atmega16串口通信

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
ATmega16單片機(jī)帶有一個(gè)全雙工的通用同步/異步串行收發(fā)模塊USART,該接口是一個(gè)高度靈活的串行通訊設(shè)備。其主要特點(diǎn)如下:

全雙工操作,可同時(shí)進(jìn)行收發(fā)操作;

本文引用地址:http://butianyuan.cn/article/201612/324120.htm

支持同步或異步操作;

支持5、6、7、8 和9 位數(shù)據(jù)位,1 位或者2 位停止位的串行數(shù)據(jù)幀結(jié)構(gòu);

三個(gè)完全獨(dú)立的中斷,TX 發(fā)送完成,TX 發(fā)送數(shù)據(jù)寄存器空,RX 接收完成;

支持多機(jī)通訊模式;

相關(guān)寄存器:

USART 數(shù)據(jù)寄存器—UDR;

USART 控制和狀態(tài)寄存器—UCSRA,UCSRB,UCSRC;

波特率寄存器—UBRRL 和UBRRH;

串口背景知識(shí)

(1)串行通訊簡(jiǎn)介

串行同步通訊容易理解,約定一個(gè)同步時(shí)鐘,每一時(shí)刻傳輸線(xiàn)上的信息就是要傳送的信息單元。串行異步通訊是把 一個(gè)字符看作一個(gè)獨(dú)立的信息單元,每一個(gè)字符中的各位是以固定的時(shí)間傳送。因此,這種傳送方式在同一字節(jié)內(nèi)部是同步的,而字符間是異步的。在異步通信中收 發(fā)雙方取得同步的方法是采用在字符格式中設(shè)置起始位,而在字符結(jié)束時(shí)發(fā)送1~2 個(gè)停止位。當(dāng)接收器檢測(cè)到起始位時(shí),便能知道經(jīng)接著的是有效的字符位,于是開(kāi)始接收字符,檢測(cè)到停止位時(shí),就將接收到的有效字符裝載到接收緩沖器中。最簡(jiǎn)單的串口通信使用3根線(xiàn)完成:(1)地線(xiàn),(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線(xiàn)上發(fā)送數(shù)據(jù)同時(shí)在另一根線(xiàn)上接收數(shù)據(jù)。其他線(xiàn)用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通行的端口,這些參數(shù)必須匹配:


a,波特率:這是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個(gè)數(shù)。例如300波特表示每秒鐘發(fā)送300個(gè)bit。當(dāng)我們提到時(shí)鐘周期時(shí),我們就是指波特率例如如果協(xié)議需要4800波特率,那么時(shí)鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線(xiàn)上的采樣率為4800Hz。通常電話(huà)線(xiàn)的波特率為14400,28800和36600。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。


b,數(shù)據(jù)位:這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開(kāi)始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語(yǔ)“包”指任何通信的情況。


c,停止位:用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線(xiàn)上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。


d,奇偶校驗(yàn)位:在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒(méi)有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位位1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步

通常異步通信的格式如圖:

USART 接受以下30 種組合的數(shù)據(jù)幀格式:

• 1 個(gè)起始位

• 5、 6、 7、 8 或9 個(gè)數(shù)據(jù)位

• 無(wú)校驗(yàn)位、奇校驗(yàn)或偶校驗(yàn)位

• 1或2 個(gè)停止位

數(shù)據(jù)幀以起始位開(kāi)始;緊接著是數(shù)據(jù)字的最低位,數(shù)據(jù)字最多可以有9 個(gè)數(shù)據(jù)位,以數(shù)據(jù)的最高位結(jié)束。如果使能了校驗(yàn)位,校驗(yàn)位將緊接著數(shù)據(jù)位,最后是結(jié)束位。當(dāng)一個(gè)完整的數(shù)據(jù)幀傳輸后,可以立即傳輸下一個(gè)新的數(shù)據(jù)幀,或使傳輸線(xiàn)處于空閑狀態(tài)。

數(shù)據(jù)幀的結(jié)構(gòu)由UCSRB 和 UCSRC 寄存器中的UCSZ2:0、 UPM1:0、USBS 設(shè)定。接收與發(fā)送使用相同的設(shè)置。設(shè)置的任何改變都可能破壞正在進(jìn)行的數(shù)據(jù)傳送與接收。

(2)串口的組成

串口由陰陽(yáng)兩種接口組成。最常使用的信號(hào)引腳是TD、RD 和SG,因此最簡(jiǎn)單的串口調(diào)試只需要包含3 條引線(xiàn)就可以了。在RS232(一種串行工業(yè)總線(xiàn)標(biāo)準(zhǔn))標(biāo)準(zhǔn)中,利用RD、TD 作為接收、發(fā)送信號(hào)線(xiàn),加入地線(xiàn),約定好通訊的波特率,實(shí)現(xiàn)串行信號(hào)傳輸。

(3)串口電平轉(zhuǎn)換電路

PC 的串口工作TTL 信號(hào)是12V 的,而在我們一般使用的電路板上,電源信號(hào)和TTL電平是5V 的(在低功耗電路中是3.3V 的),為了將信號(hào)轉(zhuǎn)化為可用,需要做串口的電平轉(zhuǎn)換。這一部分電路已經(jīng)有相應(yīng)的生產(chǎn)廠(chǎng)商做出了各種集成芯片,例如MAXIM 公司的MAX232/MAX233 芯片,就是實(shí)現(xiàn)5V 電路中和PC 實(shí)現(xiàn)串口通信的電平轉(zhuǎn)換芯片,而MAX3232/MAX3233 可以實(shí)現(xiàn)3.3V 的電平轉(zhuǎn)換。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: atmega16串口通

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉