當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]ATmega16 單片機(jī)帶有一個(gè)全雙工的通用同步/異步串行收發(fā)模塊USART,該接口是一個(gè)高度靈活的串行通訊設(shè)備。其主要特點(diǎn)如下:全雙工操作,可同時(shí)進(jìn)行收發(fā)操作;支持同步或異步操作;支持5、6、7、8 和9 位數(shù)據(jù)位,1 位

ATmega16 單片機(jī)帶有一個(gè)全雙工的通用同步/異步串行收發(fā)模塊USART,該接口是一個(gè)高度靈活的串行通訊設(shè)備。其主要特點(diǎn)如下:

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

支持同步或異步操作;

支持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;

串口背景知識

(1)串行通訊簡介

串行同步通訊容易理解,約定一個(gè)同步時(shí)鐘,每一時(shí)刻傳輸線上的信息就是要傳送的信息單元。串行異步通訊是把一個(gè)字符看作一個(gè)獨(dú)立的信息單元,每一個(gè)字符中的各位是以固定的時(shí)間傳送。因此,這種傳送方式在同一字節(jié)內(nèi)部是同步的,而字符間是異步的。在異步通信中收發(fā)雙方取得同步的方法是采用在字符格式中設(shè)置起始位,而在字符結(jié)束時(shí)發(fā)送1~2 個(gè)停止位。當(dāng)接收器檢測到起始位時(shí),便能知道經(jīng)接著的是有效的字符位,于是開始接收字符,檢測到停止位時(shí),就將接收到的有效字符裝載到接收緩沖器中。最簡單的串口通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對于兩個(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ù)線上的采樣率為4800Hz。通常電話線的波特率為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ù)不會是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語“包”指任何通信的情況。


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


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

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

? 1 個(gè)起始位

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

? 無校驗(yàn)位、奇校驗(yàn)或偶校驗(yàn)位

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

數(shù)據(jù)幀以起始位開始;緊接著是數(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ù)幀,或使傳輸線處于空閑狀態(tài)。

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

(2)串口的組成

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

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

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


串口寄存器介紹

USART I/O數(shù)據(jù)寄存器- UDR

USART 發(fā)送數(shù)據(jù)緩沖寄存器和USART 接收數(shù)據(jù)緩沖寄存器共享相同的I/O 地址,稱為USART 數(shù)據(jù)寄存器或UDR。將數(shù)據(jù)寫入U(xiǎn)DR 時(shí)實(shí)際操作的是發(fā)送數(shù)據(jù)緩沖器存器(TXB),讀UDR 時(shí)實(shí)際返回的是接收數(shù)據(jù)緩沖寄存器(RXB) 的內(nèi)容。在5、6、7 比特字長模式下,未使用的高位被發(fā)送器忽略,而接收器則將它們設(shè)置為0。只有當(dāng)UCSRA寄存器的UDRE標(biāo)志置位后才可以對發(fā)送緩沖器進(jìn)行寫操作。如果UDRE沒有置位,那么寫入U(xiǎn)DR 的數(shù)據(jù)會被USART 發(fā)送器忽略。當(dāng)數(shù)據(jù)寫入發(fā)送緩沖器后,若移位寄存器為空,發(fā)送器將把數(shù)據(jù)加載到發(fā)送移位寄存器。然后數(shù)據(jù)串行地從TxD 引腳輸出。接收緩沖器包括一個(gè)兩級FIFO,一旦接收緩沖器被尋址FIFO 就會改變它的狀態(tài)。因此不要對這一存儲單元使用讀- 修改- 寫指令(SBI 和CBI)。使用位查詢指令(SBIC 和SBIS)時(shí)也要小心,因?yàn)檫@也有可能改變FIFO 的狀態(tài)。


USART控制和狀態(tài)寄存器A -UCSRA

? Bit 7 – RXC: USART接收結(jié)束

接收緩沖器中有未讀出的數(shù)據(jù)時(shí)RXC 置位,否則清零。接收器禁止時(shí),接收緩沖器被刷新,導(dǎo)致RXC 清零。RXC 標(biāo)志可用來產(chǎn)生接收結(jié)束中斷( 見對RXCIE 位的描述)。

? Bit 6 – TXC: USART發(fā)送結(jié)束

發(fā)送移位緩沖器中的數(shù)據(jù)被送出,且當(dāng)發(fā)送緩沖器 (UDR) 為空時(shí)TXC 置位。執(zhí)行發(fā)送結(jié)束中斷時(shí)TXC 標(biāo)志自動清零,也可以通過寫1 進(jìn)行清除操作。TXC 標(biāo)志可用來產(chǎn)生發(fā)送結(jié)束中斷( 見對TXCIE 位的描述)。

? Bit 5 – UDRE: USART數(shù)據(jù)寄存器空

UDRE標(biāo)志指出發(fā)送緩沖器(UDR)是否準(zhǔn)備好接收新數(shù)據(jù)。UDRE為1說明緩沖器為空,已準(zhǔn)備好進(jìn)行數(shù)據(jù)接收。UDRE標(biāo)志可用來產(chǎn)生數(shù)據(jù)寄存器空中斷(見對UDRIE位的描述)。復(fù)位后UDRE 置位,表明發(fā)送器已經(jīng)就緒。

? Bit 4 – FE:幀錯(cuò)誤

如果接收緩沖器接收到的下一個(gè)字符有幀錯(cuò)誤,即接收緩沖器中的下一個(gè)字符的第一個(gè)停止位為0,那么FE 置位。這一位一直有效直到接收緩沖器(UDR) 被讀取。當(dāng)接收到的停止位為1 時(shí), FE 標(biāo)志為0。對UCSRA 進(jìn)行寫入時(shí),這一位要寫0。

? Bit 3 – DOR:數(shù)據(jù)溢出

數(shù)據(jù)溢出時(shí)DOR 置位。當(dāng)接收緩沖器滿( 包含了兩個(gè)數(shù)據(jù)),接收移位寄存器又有數(shù)據(jù),若此時(shí)檢測到一個(gè)新的起始位,數(shù)據(jù)溢出就產(chǎn)生了。這一位一直有效直到接收緩沖器(UDR) 被讀取。對UCSRA 進(jìn)行寫入時(shí),這一位要寫0。

? Bit 2 – PE:奇偶校驗(yàn)錯(cuò)誤

當(dāng)奇偶校驗(yàn)使能(UPM1 = 1),且接收緩沖器中所接收到的下一個(gè)字符有奇偶校驗(yàn)錯(cuò)誤時(shí)UPE 置位。這一位一直有效直到接收緩沖器 (UDR) 被讀取。對UCSRA 進(jìn)行寫入時(shí),這一位要寫0。

? Bit 1 – U2X:倍速發(fā)送

這一位僅對異步操作有影響。使用同步操作時(shí)將此位清零。此位置1 可將波特率分頻因子從16 降到8,從而有效的將異步通信模式的傳輸速率加倍。

? Bit 0 – MPCM:多處理器通信模式

設(shè)置此位將啟動多處理器通信模式。MPCM 置位后, USART 接收器接收到的那些不包含地址信息的輸入幀都將被忽略。發(fā)送器不受MPCM設(shè)置的影響。詳細(xì)信息請參考 P150“多處理器通訊模式” 。


USART控制和狀態(tài)寄存器B -UCSRB

? Bit 7 – RXCIE:接收結(jié)束中斷使能

置位后使能RXC 中斷。當(dāng)RXCIE 為1,全局中斷標(biāo)志位SREG 置位, UCSRA 寄存器的RXC 亦為1 時(shí)可以產(chǎn)生USART 接收結(jié)束中斷。

? Bit 6 – TXCIE:發(fā)送結(jié)束中斷使能

置位后使能TXC 中斷。當(dāng)TXCIE 為1,全局中斷標(biāo)志位SREG 置位,UCSRA 寄存器的TXC 亦為1 時(shí)可以產(chǎn)生USART 發(fā)送結(jié)束中斷。

? Bit 5 – UDRIE: USART數(shù)據(jù)寄存器空中斷使能

置位后使能UDRE 中斷。當(dāng)UDRIE 為1,全局中斷標(biāo)志位SREG 置位,UCSRA 寄存器的UDRE 亦為1 時(shí)可以產(chǎn)生USART 數(shù)據(jù)寄存器空中斷。

? Bit 4 – RXEN:接收使能

置位后將啟動USART 接收器。RxD 引腳的通用端口功能被USART 功能所取代。禁止接收器將刷新接收緩沖器,并使 FE、DOR 及PE 標(biāo)志無效。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉