AVR單片機(學習ing)-ATMEGA16的USART與PC機串行通信
五—(01)、PC機發(fā)送字符給單片機控制發(fā)光管亮,同時將其傳回PC機,其中單片機的發(fā)送和接收都采用查詢方式(下一篇中有例程~)
本文引用地址:http://cafeforensic.com/article/201611/322201.htm1、USART的主要特點
通用同步和異步串行接收器和轉發(fā)器(USART) 是一個高度靈活的串行通訊設備。主要特
點為:
• 全雙工操作( 獨立的串行接收和發(fā)送寄存器)
• 異步或同步操作
• 主機或從機提供時鐘的同步操作
• 高精度的波特率發(fā)生器
• 支持5, 6, 7, 8, 或9 個數(shù)據(jù)位和1 個或2 個停止位
• 硬件支持的奇偶校驗操作
• 數(shù)據(jù)過速檢測
• 幀錯誤檢測
• 噪聲濾波,包括錯誤的起始位檢測,以及數(shù)字低通濾波器
• 三個獨立的中斷:發(fā)送結束中斷, 發(fā)送數(shù)據(jù)寄存器空中斷,以及接收結束中斷
• 多處理器通訊模式
• 倍速異步通訊模式
USART 分為了三個主要部分: 時鐘發(fā)生器,發(fā)送器和接收器??刂萍拇嫫饔扇?br />個單元共享。時鐘發(fā)生器包含同步邏輯,通過它將波特率發(fā)生器及為從機同步操作所使用
的外部輸入時鐘同步起來。XCK ( 發(fā)送器時鐘) 引腳只用于同步傳輸模式。發(fā)送器包括一個寫緩沖器,串行移位寄存器,奇偶發(fā)生器以及處理不同的幀格式所需的控制邏輯。寫緩
沖器可以保持連續(xù)發(fā)送數(shù)據(jù)而不會在數(shù)據(jù)幀之間引入延遲。由于接收器具有時鐘和數(shù)據(jù)
恢復單元,它是USART 模塊中最復雜的。恢復單元用于異步數(shù)據(jù)的接收。除了恢復單
元,接收器還包括奇偶校驗,控制邏輯,移位寄存器和一個兩級接收緩沖器UDR。接收
器支持與發(fā)送器相同的幀格式,而且可以檢測幀錯誤,數(shù)據(jù)過速和奇偶校驗錯誤。
3、時鐘產生
1)USART支持4種模式的時鐘
時鐘產生邏輯為發(fā)送器和接收器產生基礎時鐘。USART 支持4 種模式的時鐘:正常的異
步模式,倍速的異步模式,主機同步模式,以及從機同步模式。USART 控制位UMSEL
和狀態(tài)寄存器C (UCSRC) 用于選擇異步模式和同步模式。倍速模式( 只適用于異步模式
) 受控于UCSRA 寄存器的U2X。使用同步模式 (UMSEL = 1) 時,XCK 的數(shù)據(jù)方向寄存器
(DDR_XCK)決定時鐘源是由內部產生(主機模式)還是由外部生產(從機模式)。僅在同步模
式下XCK 有效。
2)內部時鐘用于異步模式和同步主機模式(這里我也不是很懂~~,專業(yè)術語太多,不過說白了就是波特率的計算公式唄,不過好好看看肯定能明白的)
USART 的波特率寄存器UBRR 和降序計數(shù)器相連接,一起構成可編程的預分頻器或波特
率發(fā)生器。降序計數(shù)器對系統(tǒng)時鐘計數(shù),當其計數(shù)到零或UBRRL 寄存器被寫時,會自動
裝入UBRR 寄存器的值。當計數(shù)到零時產生一個時鐘,該時鐘作為波特率發(fā)生器的輸出
時鐘,輸出時鐘的頻率為fosc/(UBRR+1)。發(fā)生器對波特率發(fā)生器的輸出時鐘進行2、8
或16 的分頻,具體情況取決于工作模式。波特率發(fā)生器的輸出被直接用于接收器與數(shù)據(jù)
恢復單元。數(shù)據(jù)恢復單元使用了一個有2、8或16個狀態(tài)的狀態(tài)機,具體狀態(tài)數(shù)由UMSEL、
U2X 與 DDR_XCK 位設定的工作模式決定。
Table 60 給出了計算波特率(位/秒)以及計算每一種使用內部時鐘源工作模式的UBRR值
的公式。
3)倍速工作模式
通過設定UCSRA 寄存器的U2X 可以使傳輸速率加倍。該位只對異步工作模式有效。當
工作在同步模式時,設置該位為"0”。
設置該位把波特率分頻器的分頻值從16 降到8,使異步通信的傳輸速率加倍。此時接收
器只使用一半的采樣數(shù)對數(shù)據(jù)進行采樣及時鐘恢復,因此在該模式下需要更精確的系統(tǒng)
時鐘與更精確的波特率設置。發(fā)送器則沒有這個要求。
評論