當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]五、ATMEGA16的USART與PC機(jī)串行通信五—(01)、PC機(jī)發(fā)送字符給單片機(jī)控制發(fā)光管亮,同時(shí)將其傳回PC機(jī),其中單片機(jī)的發(fā)送和接收都采用查詢(xún)方式(下一篇中有例程~)1、USART的主要特點(diǎn)通用同步和異步串行接收器和轉(zhuǎn)發(fā)

五、ATMEGA16的USART與PC機(jī)串行通信

五—(01)、PC機(jī)發(fā)送字符給單片機(jī)控制發(fā)光管亮,同時(shí)將其傳回PC機(jī),其中單片機(jī)的發(fā)送和接收都采用查詢(xún)方式(下一篇中有例程~)

1、USART的主要特點(diǎn)

通用同步和異步串行接收器和轉(zhuǎn)發(fā)器(USART) 是一個(gè)高度靈活的串行通訊設(shè)備。主要特
點(diǎn)為:
? 全雙工操作( 獨(dú)立的串行接收和發(fā)送寄存器)
? 異步或同步操作
? 主機(jī)或從機(jī)提供時(shí)鐘的同步操作
? 高精度的波特率發(fā)生器
? 支持5, 6, 7, 8, 或9 個(gè)數(shù)據(jù)位和1 個(gè)或2 個(gè)停止位
? 硬件支持的奇偶校驗(yàn)操作
? 數(shù)據(jù)過(guò)速檢測(cè)
? 幀錯(cuò)誤檢測(cè)
? 噪聲濾波,包括錯(cuò)誤的起始位檢測(cè),以及數(shù)字低通濾波器
? 三個(gè)獨(dú)立的中斷:發(fā)送結(jié)束中斷, 發(fā)送數(shù)據(jù)寄存器空中斷,以及接收結(jié)束中斷
? 多處理器通訊模式
? 倍速異步通訊模式

2、異步串行收發(fā)器

USART 分為了三個(gè)主要部分: 時(shí)鐘發(fā)生器,發(fā)送器和接收器??刂萍拇嫫饔扇?br/>個(gè)單元共享。時(shí)鐘發(fā)生器包含同步邏輯,通過(guò)它將波特率發(fā)生器及為從機(jī)同步操作所使用
的外部輸入時(shí)鐘同步起來(lái)。XCK ( 發(fā)送器時(shí)鐘) 引腳只用于同步傳輸模式。發(fā)送器包括一個(gè)寫(xiě)緩沖器,串行移位寄存器,奇偶發(fā)生器以及處理不同的幀格式所需的控制邏輯。寫(xiě)緩
沖器可以保持連續(xù)發(fā)送數(shù)據(jù)而不會(huì)在數(shù)據(jù)幀之間引入延遲。由于接收器具有時(shí)鐘和數(shù)據(jù)
恢復(fù)單元,它是USART 模塊中最復(fù)雜的?;謴?fù)單元用于異步數(shù)據(jù)的接收。除了恢復(fù)單
元,接收器還包括奇偶校驗(yàn),控制邏輯,移位寄存器和一個(gè)兩級(jí)接收緩沖器UDR。接收
器支持與發(fā)送器相同的幀格式,而且可以檢測(cè)幀錯(cuò)誤,數(shù)據(jù)過(guò)速和奇偶校驗(yàn)錯(cuò)誤。

3、時(shí)鐘產(chǎn)生

1)USART支持4種模式的時(shí)鐘

時(shí)鐘產(chǎn)生邏輯為發(fā)送器和接收器產(chǎn)生基礎(chǔ)時(shí)鐘。USART 支持4 種模式的時(shí)鐘:正常的異
步模式,倍速的異步模式,主機(jī)同步模式,以及從機(jī)同步模式。USART 控制位UMSEL
和狀態(tài)寄存器C (UCSRC) 用于選擇異步模式和同步模式。倍速模式( 只適用于異步模式
) 受控于UCSRA 寄存器的U2X。使用同步模式 (UMSEL = 1) 時(shí),XCK 的數(shù)據(jù)方向寄存器
(DDR_XCK)決定時(shí)鐘源是由內(nèi)部產(chǎn)生(主機(jī)模式)還是由外部生產(chǎn)(從機(jī)模式)。僅在同步模
式下XCK 有效。





2)內(nèi)部時(shí)鐘用于異步模式和同步主機(jī)模式(這里我也不是很懂~~,專(zhuān)業(yè)術(shù)語(yǔ)太多,不過(guò)說(shuō)白了就是波特率的計(jì)算公式唄,不過(guò)好好看看肯定能明白的)

USART 的波特率寄存器UBRR 和降序計(jì)數(shù)器相連接,一起構(gòu)成可編程的預(yù)分頻器或波特
率發(fā)生器。降序計(jì)數(shù)器對(duì)系統(tǒng)時(shí)鐘計(jì)數(shù),當(dāng)其計(jì)數(shù)到零或UBRRL 寄存器被寫(xiě)時(shí),會(huì)自動(dòng)
裝入U(xiǎn)BRR 寄存器的值。當(dāng)計(jì)數(shù)到零時(shí)產(chǎn)生一個(gè)時(shí)鐘,該時(shí)鐘作為波特率發(fā)生器的輸出
時(shí)鐘,輸出時(shí)鐘的頻率為fosc/(UBRR+1)。發(fā)生器對(duì)波特率發(fā)生器的輸出時(shí)鐘進(jìn)行2、8
或16 的分頻,具體情況取決于工作模式。波特率發(fā)生器的輸出被直接用于接收器與數(shù)據(jù)
恢復(fù)單元。數(shù)據(jù)恢復(fù)單元使用了一個(gè)有2、8或16個(gè)狀態(tài)的狀態(tài)機(jī),具體狀態(tài)數(shù)由UMSEL、
U2X 與 DDR_XCK 位設(shè)定的工作模式?jīng)Q定。
Table 60 給出了計(jì)算波特率(位/秒)以及計(jì)算每一種使用內(nèi)部時(shí)鐘源工作模式的UBRR值
的公式。



3)倍速工作模式

通過(guò)設(shè)定UCSRA 寄存器的U2X 可以使傳輸速率加倍。該位只對(duì)異步工作模式有效。當(dāng)
工作在同步模式時(shí),設(shè)置該位為"0”。
設(shè)置該位把波特率分頻器的分頻值從16 降到8,使異步通信的傳輸速率加倍。此時(shí)接收
器只使用一半的采樣數(shù)對(duì)數(shù)據(jù)進(jìn)行采樣及時(shí)鐘恢復(fù),因此在該模式下需要更精確的系統(tǒng)
時(shí)鐘與更精確的波特率設(shè)置。發(fā)送器則沒(méi)有這個(gè)要求。

4)外部時(shí)鐘(這些東西感覺(jué)都是扯淡的~~呵呵)

同步從機(jī)操作模式由外部時(shí)鐘驅(qū)動(dòng),如Figure 70 所示。
輸入到XCK 引腳的外部時(shí)鐘由同步寄存器進(jìn)行采樣,用以提高穩(wěn)定性。同步寄存器的輸
出通過(guò)一個(gè)邊沿檢測(cè)器,然后應(yīng)用于發(fā)送器與接收器。這一過(guò)程引入了兩個(gè)CPU 時(shí)鐘周
期的延時(shí),因此外部XCK 的最大時(shí)鐘頻率由以下公式限制:

fsck

要注意fosc 由系統(tǒng)時(shí)鐘的穩(wěn)定性決定,為了防止因頻率漂移而丟失數(shù)據(jù),建議保留足夠的
裕量。

5)同步時(shí)鐘操作

使用同步模式時(shí)(UMSEL = 1)XCK 引腳被用于時(shí)鐘輸入( 從機(jī)模式) 或時(shí)鐘輸出( 主機(jī)模
式)。時(shí)鐘的邊沿、數(shù)據(jù)的采樣與數(shù)據(jù)的變化之間的關(guān)系的基本規(guī)律是:在改變數(shù)據(jù)輸出
端TxD 的XCK 時(shí)鐘的相反邊沿對(duì)數(shù)據(jù)輸入端RxD 進(jìn)行采樣。

4、幀格式

串行數(shù)據(jù)幀由數(shù)據(jù)字加上同步位( 開(kāi)始位與停止位) 以及用于糾錯(cuò)的奇偶校驗(yàn)位構(gòu)成。

1)數(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ù)幀,或使傳輸線處于空閑狀態(tài)。Figure
72 所示為可能的數(shù)據(jù)幀結(jié)構(gòu)組合。括號(hào)中的位是可選的。



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

USART的字長(zhǎng)位UCSZ2:0確定了數(shù)據(jù)幀的數(shù)據(jù)位數(shù);校驗(yàn)?zāi)J轿籙PM1:0用于使能與決
定校驗(yàn)的類(lèi)型; USBS 位設(shè)置幀有一位或兩位結(jié)束位。接收器忽略第二個(gè)停止位,因此
幀錯(cuò)誤(FE) 只在第一個(gè)結(jié)束位為"0” 時(shí)被檢測(cè)到。

2)校驗(yàn)位的計(jì)算

校驗(yàn)位的計(jì)算是對(duì)數(shù)據(jù)的各個(gè)位進(jìn)行異或運(yùn)算。如果選擇了奇校驗(yàn),則異或結(jié)果還需要取
反。校驗(yàn)位與數(shù)據(jù)位的關(guān)系如下:



注意:校驗(yàn)位位于最后一個(gè)數(shù)據(jù)位與第一個(gè)停止位之間。

5、USART的寄存器及設(shè)置

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



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

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



? Bit 7 – RXC: USART 接收結(jié)束
接收緩沖器中有未讀出的數(shù)據(jù)時(shí)RXC 置位,否則清零。接收器禁止時(shí),接收緩沖器被刷
新,導(dǎo)致RXC 清零。RXC 標(biāo)志可用來(lái)產(chǎn)生接收結(jié)束中斷( 見(jiàn)對(duì)RXCIE 位的描述)。
? Bit 6 – TXC: USART 發(fā)送結(jié)束
發(fā)送移位緩沖器中的數(shù)據(jù)被送出,且當(dāng)發(fā)送緩沖器 (UDR) 為空時(shí)TXC 置位。執(zhí)行發(fā)送結(jié)
束中斷時(shí)TXC 標(biāo)志自動(dòng)清零,也可以通過(guò)寫(xiě)1 進(jìn)行清除操作。TXC 標(biāo)志可用來(lái)產(chǎn)生發(fā)送
結(jié)束中斷( 見(jiàn)對(duì)TXCIE 位的描述)。
? Bit 5 – UDRE: USART 數(shù)據(jù)寄存器空
UDRE標(biāo)志指出發(fā)送緩沖器(UDR)是否準(zhǔn)備好接收新數(shù)據(jù)。UDRE為1說(shuō)明緩沖器為空,已
準(zhǔn)備好進(jìn)行數(shù)據(jù)接收。UDRE標(biāo)志可用來(lái)產(chǎn)生數(shù)據(jù)寄存器空中斷(見(jiàn)對(duì)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。對(duì)UCSRA 進(jìn)行寫(xiě)入時(shí),這一位要寫(xiě)0。
? Bit 3 – DOR: 數(shù)據(jù)溢出
數(shù)據(jù)溢出時(shí)DOR 置位。當(dāng)接收緩沖器滿( 包含了兩個(gè)數(shù)據(jù)),接收移位寄存器又有數(shù)據(jù),
若此時(shí)檢測(cè)到一個(gè)新的起始位,數(shù)據(jù)溢出就產(chǎn)生了。這一位一直有效直到接收緩沖器
(UDR) 被讀取。對(duì)UCSRA 進(jìn)行寫(xiě)入時(shí),這一位要寫(xiě)0。
? Bit 2 – PE: 奇偶校驗(yàn)錯(cuò)誤
當(dāng)奇偶校驗(yàn)使能(UPM1 = 1),且接收緩沖器中所接收到的下一個(gè)字符有奇偶校驗(yàn)錯(cuò)誤時(shí)
UPE 置位。這一位一直有效直到接收緩沖器 (UDR) 被讀取。對(duì)UCSRA 進(jìn)行寫(xiě)入時(shí),這一
位要寫(xiě)0。
? Bit 1 – U2X: 倍速發(fā)送
這一位僅對(duì)異步操作有影響。使用同步操作時(shí)將此位清零。
此位置1 可將波特率分頻因子從16 降到8,從而有效的將異步通信模式的傳輸速率加倍。
? Bit 0 – MPCM: 多處理器通信模式
設(shè)置此位將啟動(dòng)多處理器通信模式。MPCM 置位后, USART 接收器接收到的那些不包
含地址信息的輸入幀都將被忽略。發(fā)送器不受MPCM設(shè)置的影響。

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



? 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: 接收使能
置位后將啟動(dòng)USART 接收器。RxD 引腳的通用端口功能被USART 功能所取代。禁止
接收器將刷新接收緩沖器,并使 FE、DOR 及PE 標(biāo)志無(wú)效。
? Bit 3 – TXEN: 發(fā)送使能
置位后將啟動(dòng)將啟動(dòng)USART 發(fā)送器。TxD 引腳的通用端口功能被USART 功能所取代。
TXEN 清零后,只有等到所有的數(shù)據(jù)發(fā)送完成后發(fā)送器才能夠真正禁止,即發(fā)送移位寄存
器與發(fā)送緩沖寄存器中沒(méi)有要傳送的數(shù)據(jù)。發(fā)送器禁止后,TxD引腳恢復(fù)其通用I/O功能。
? Bit 2 – UCSZ2: 字符長(zhǎng)度
UCSZ2與UCSRC寄存器的UCSZ1:0結(jié)合在一起可以設(shè)置數(shù)據(jù)幀所包含的數(shù)據(jù)位數(shù)(字符
長(zhǎng)度)。
? Bit 1 – RXB8: 接收數(shù)據(jù)位 8
對(duì)9 位串行幀進(jìn)行操作時(shí),RXB8 是第9 個(gè)數(shù)據(jù)位。讀取UDR 包含的低位數(shù)據(jù)之前首先
要讀取RXB8。
? Bit 0 – TXB8: 發(fā)送數(shù)據(jù)位8
對(duì)9 位串行幀進(jìn)行操作時(shí),TXB8 是第9 個(gè)數(shù)據(jù)位。寫(xiě)UDR 之前首先要對(duì)它進(jìn)行寫(xiě)操作。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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