1、 概述
USART 0和USART 1串行通信接口,它們能夠分別運行于異步UART模式和同步SPI模式。兩個(gè)USART具有相同的功能,并分配了各自的引腳。
2、 UART模式
UART模式提供異步串行接口。在UART模式中,接口使用2線(xiàn)或者含有RXD、TXD、RTS和CTS的4線(xiàn)。UART模式具有以下特點(diǎn):
a) 8位或9位有效載荷
b) 奇校驗、偶校驗或者無(wú)奇偶校驗
c) 配置起始位和停止位電平
d) 配置LSB或者M(jìn)SB首先傳送
e) 獨立收發(fā)中斷
f) 獨立收發(fā)DMA觸發(fā)
g) 奇偶校驗和幀校驗出錯狀態(tài)
UART模式提供全雙工異步傳輸,而且接收端的位同步不會(huì )干擾發(fā)送功能。發(fā)送的一個(gè)UART字節含有1個(gè)開(kāi)始位、8個(gè)數據位、1個(gè)作為可選項的第9位數據或者奇偶校驗位、1個(gè)或2個(gè)停止位。注意被發(fā)送的數據看做1個(gè)字節,雖然數據經(jīng)常包含8位或者9位。
UART操作由USART控制狀態(tài)寄存器(UxCSR)和UART控制寄存器(UxUCR)來(lái)控制的,其中x是USART編號,0或1;
當UxCSR.MODE設1時(shí),USART選擇的是UART模式。
2.1、UART發(fā)送
當USART收發(fā)數據緩存器(UxDBUF)寫(xiě)入數據,該字節傳送到TXDx輸出引腳上,UART開(kāi)始發(fā)送。UxDBUF寄存器是雙緩存的。
當傳送開(kāi)始時(shí)UxCSR.ACTIVE位置高,當傳送結束時(shí)UxCSR.ACTIVE位置低。當傳送結束后,UxCSR.TX_BYTE位置1。當UxDBUF寄存器準備接收新的發(fā)送數據時(shí),將產(chǎn)生一個(gè)中斷請求。該中斷在開(kāi)始傳送后就立即發(fā)生;因此,當字節正在發(fā)送時(shí),新的字節能夠裝入數據緩存器。
2.2、UART接收
當UxCSR.RE位置1時(shí),UART啟動(dòng)接收數據。然后UART搜索RXDx輸入腳的有效起始位,并設置UxCSR.ACTIVE為高位。當檢測到一個(gè)有效起始位,接收到的字節被轉移到接收寄存器。當接收完畢時(shí),UxCSR.RX_BYTE位置1并產(chǎn)生一個(gè)接收中斷請求。與此同時(shí),UxCSR.ACTIVE變低位。
UxDBUF寄存器里接收到的數據是有效的,當UxDBUF數據被讀取后,硬件將清除UxCSR.RX_BYTE位。
注意:當應用讀取UxDBUF時(shí),它不會(huì )馬上清除UxCSR.RX_BYTE位,這是非常重要的。清除UxCSR.RX_BYTE位會(huì )使UART認為UART RX轉移寄存器是空的,甚至認為它可能正在等待數據(通常由于連續傳輸)。(。。。。未翻譯完)
2.3、UART硬件流控制
當UxUCR.FLOW位設1后,硬件流控制功能被啟用。當接收寄存器是空的并接收使能后,RTS輸出器設低電平。在CTS輸入腳變低電平之前,不會(huì )發(fā)生字節傳輸。
2.4、UART特征格式
如果寄存器UxUCR中的BIT9和PARITY都被設置為1,那么奇偶校驗產(chǎn)生而且檢測使能。奇偶校驗計算出來(lái),作為第9位來(lái)傳送。在接收期間,奇偶校驗位計算出來(lái)而且與收到的第9位進(jìn)行比較。如果奇偶校驗出錯,則UxCSR.ERR位設置為1。當UxCSR讀取時(shí),UxCSR.ERR位清0。
被傳送的停止位數量可設為1位或2位,由寄存器UxUCR.SPB來(lái)設置。接收器總是檢查1個(gè)停止位。如果接收到的第1個(gè)停止位不是期望的停止位電平,通過(guò)設置UxCSR.FE為高電平來(lái)標記出現幀錯誤。當UxCSR被讀取后,UxCSR.FE被清除。當UxUCR.SPB被設置后,接收器將檢查2位停止位。
注意,當第1個(gè)停止位被檢查為OK時(shí),接收中斷被設置。如果第2位不是OK,將有一個(gè)設置幀出錯位(UxCSR.FE)的延遲,這個(gè)延遲取決于波特率。
(...未翻譯)
8、USART寄存器
每一個(gè)USART都有5個(gè)寄存器,如下
--UxCSR:USART 0/1 控制和狀態(tài)器
--UxUCR:USART 0/1 UART控制器
--UxGCR:USART 0/1 一般控制器
--UxDBUF:USART 0/1 收發(fā)數據緩存器
--UxBAUD:USART 0/1 波特率控制器
U0CSR/U1CSR:控制和狀態(tài)器
端口 | Bit位 | 名稱(chēng) | 初始化 | 讀/寫(xiě) | 描述 |
U0CSR\ U1CSR | 7 | MODE | 0 | R/W | USART模式選擇 0:SPI模式 1:UART模式 |
6 | RE | 0 | R/W | UART接收使能,注意在接收器全配置之前不能夠使能。 0:接收禁止 1:接收使能 | |
5 | SLAVE | 0 | R/W | SPI主從模式選擇 0:SPI主要模式 1:SPI次要模式 | |
4 | PE | 0 | R/W0 | UART幀校驗出錯狀態(tài) 0:沒(méi)有檢測到幀校驗出錯 1:接收到不正確停止位電平的字節 | |
3 | ERR | 0 | R/W0 | UART奇偶校驗出錯狀態(tài) 0:沒(méi)有檢測到奇偶校驗出錯 1:接收到奇偶校驗出錯的字節 | |
2 | RX_BYTE | 0 | R/W0 | 接收字節狀態(tài),UART模式和SPI從模式。 當讀取U0DBUF/U1DBUF時(shí),該位自動(dòng)被清除。 當寫(xiě)入0清除時(shí),將丟棄U0DBUF/U1DBUF中的數據。 0:字節沒(méi)有接收到 1:收到的字節已準備好 | |
1 | TX_BYTE | 0 | R/W0 | 發(fā)送字節狀態(tài),UART模式和SPI主模式 0:字節沒(méi)有被發(fā)送 1:寫(xiě)入數據緩存寄存器的最后字節被發(fā)送 | |
0 | ACTIVE | 0 | R | USART收發(fā)器活動(dòng)狀態(tài)。在SPI從模式中,此位等同于從選擇(slave select) 0:USART空閑 1:USART在收發(fā)模式忙 |
U0UCR/U1UCR:USART 0/1 UART控制器
端口 | Bit位 | 名稱(chēng) | 初始化 | 讀/寫(xiě) | 描述 |
U0UCR/ U1UCR | 7 | FLUSH | 0 | R0/W1 | 刷新單元。當設置的時(shí)候,該事件會(huì )立即停止當前操作,并使此單元恢復到空閑狀態(tài)。 |
6 | FLOW | 0 | R/W | UART硬件流使能。選用RTS和CTS引腳的硬件流。 0:流控制禁止 1:流控制使能 | |
5 | D9 | 0 | R/W | UART奇偶位。當PARITY使能后,D9的值決定第9位發(fā)送的值;并在接收端,如果第9接收位不匹配接收到字節的奇偶校驗位,則在ERR中報告出來(lái)。 如PARITY已使能,則本位設置如下: 0:奇數校驗 1:偶數校驗 | |
4 | BIT9 | 0 | R/W | UART 9位使能。設1使能校驗位傳輸(作為第9位)。如果PARITY使能,第9位的內容在D9中給出。 0:8位傳輸 1:9位傳輸 | |
3 | PARITY | 0 | R/W | UART奇偶校驗使能。除了設置本位用來(lái)計算校驗為,還必須使能9位模式。 0:奇偶校驗禁止 1:奇偶校驗使能 | |
2 | SPB | 0 | R/W | UART停止位個(gè)數。選擇傳送的停止位個(gè)數。 0:1個(gè)停止位 1:2個(gè)停止位 | |
1 | STOP | 1 | R/W | UART停止位電平,必須和起始位電平不同。 0:停止位低電平 1:停止位高電平 | |
0 | START | 0 | R/W | UART起始位電平。 0:起始位低電平 1:起始位高電平 |
U0GCR/U1GCR:USART 0/1 一般控制器
端口 | Bit位 | 名稱(chēng) | 初始化 | 讀/寫(xiě) | 描述 |
U0GCR/ U1GCR | 7 | CPOL | 0 | R/W | SPI時(shí)鐘極性 0:負時(shí)鐘極性 1:正時(shí)鐘極性 |
6 | CPHA | 0 | R/W | SPI時(shí)鐘相位 0:當SCK從倒置CPOL到CPOL時(shí)數據輸出到MOSI,當SCK從CPOL到倒置CPOL時(shí)數據輸入抽樣到MISO。 1:當SCK從CPOL到倒置CPOL時(shí)數據輸出到MOSI,當SCK從倒置CPOL到CPOL時(shí)數據輸入抽樣到MISO。 | |
5 | ORDER | 0 | R/W | 傳送位順序 0:LSB先傳送 1:MSB先傳送 | |
4:0 | BAUD_E[4:0] | 00000 | R/W | 波特率指數值。BAUD_E和BAUD_M決定了UART波特率和SPI的主SCK時(shí)鐘頻率。 |
U0DBUF/U1DBUF:USART 0/1 收發(fā)數據緩存器
端口 | Bit位 | 名稱(chēng) | 初始化 | 讀/寫(xiě) | 描述 |
U0DBUF/ U1DBUF | 7:0 | DATA[7:0] | 0X00 | R/W | USART接收到的和要發(fā)送的數據。 當寫(xiě)該寄存器的時(shí)候,數據寫(xiě)到內部發(fā)送數據寄存器。當讀該數據寄存器的時(shí)候,數據來(lái)自?xún)炔孔x取數據寄存器。 |
U0BAUD/U1BAUD:USART 0/1 波特率控制器
端口 | Bit位 | 名稱(chēng) | 初始化 | 讀/寫(xiě) | 描述 |
U0BAUD/ U1BAUD | 7:0 | BAUD_M[7:0] | 0X00 | R/W | 波特率小數部分的值。BAUD_E和BAUD_M決定了UART的波特率和SPI的主SCK時(shí)鐘頻率。 |
聯(lián)系客服