CC3220學習筆記---UART(翻譯)
阿新 • • 發佈:2019-01-01
當RTSEN為1時,軟體無法通過 UARTCTL暫存器的request-to-send (RTS)位更改 U1RTS輸出值,並且RTS位狀態將被忽略。
6.2.3.1.2 軟體流控制(Modem Status Interrupts)
兩個裝置間的軟體流控制需要使用中斷來指示UART狀態。可使用UARTIM暫存器第一位來讓 U1CTS和U1RI訊號分別產生中斷。可通過使用UARTRIS和UARTMIS暫存器來檢查源遮蔽中斷。這些中斷可使用UARTICR暫存器清除。
6.2.3.2 FIFO操作
UART有兩個16×8 FIFO,一個用於傳送,一個用於接收。兩個FIFO都通過UART Data(UARTDR)暫存器訪問。UARTDR暫存器讀操作返回一個12bit值,它由8個數據位和4個錯誤標誌位組成,而寫操作將8bit資料放入傳送FIFO。
復位後,兩個FIFO都不可用,並被保持為1位元組深度暫存器。FIFO可通過設定UARTLCRH暫存器中的FEN位來啟用。
FIFO的狀態可通過UART Flag(UARTFR)暫存器和UART Receive Status(UARTRSR)暫存器來監測。硬體監測空、滿、溢位狀況。UARTFR暫存器包含空和滿標誌位(TXFE、TXFF、RXFE和RXFF位),UARTRSR暫存器通過OE位顯示溢位狀態。如果禁用FIFO,則空和滿標誌位則按照1位元組深度暫存器狀態進行設定。
FIFO產生中斷的觸發點由UART Interrupt FIFO Level Select (UARTIFLS)暫存器控制。兩個FIFO可單獨配置以在不同水平上觸發中斷。可用的配置有 ?、?、?、?和?。例如,如果接收FIFO選擇了?選項,UART會在接收到4個位元組資料後再產生一個接收中斷。復位後,兩個FIFO都被配置為在 ?記號處觸發中斷。
6.2.3.3 中斷
當檢測到以下條件時,UART會產生中斷:
要為接收通道啟用DMA操作,需設定DMA Control(UARTDMACTL)暫存器的RXDMAE位。要為傳送通道啟用DMA操作,需要設定UARTDMACTL暫存器的TXDMAE位。UART還可被配置為在接收錯誤發生時讓接收通道停止使用DMA。當UARTDMACR暫存器的DMAERR位置1,並且發生了接收錯誤時,DMA接收請求會自動禁用。可通過清除適當的UART錯誤中斷來清除此錯誤條件。 如果啟用了DMA,當傳輸完成時, μDMA控制觸發一箇中斷。中斷髮生在UART中斷向量上。因此,如果中斷用於UART操作並且DMA啟用,UART中斷處理程式必須設計為處理 μDMA完成中斷。 6.2.4 初始化和配置 啟用並初始化UART,需要進行以下步驟:
- 溢位錯誤
- Break錯誤
- 奇偶校驗錯誤
- 幀錯誤
- 接收超時
- 傳送(當在UARTIFLS暫存器中的TXIFLSEL位定義的條件滿足時,或如果UARTCTL中的EOT位置1,當所有傳送資料的最後一個位離開序列器時)
- 接收(當在UARTIFLS暫存器中的RXIFLSEL位定義的條件滿足時)
- FIFO啟用並且接收FIFO到達程式設計觸發電平時,RXRIS位置1。在從接收FIFO讀取資料時接收中斷被清除,直到它變為小於觸發電平或在RXIC位寫1清除中斷。
- 如果禁用FIFO(一個位置深度),並且接收資料從而填充了些位置,RXRIS位被設定。接收中斷通過執行接收FIFO的單個讀取來清除,或通過在RXIC位寫1來清除。
- 如果FIFO啟用,並且傳送FIFO程序通過程式設計觸發電平,TXRIS位被置1。傳送中斷是基於電平轉換的,因此FIFO必須在程式設計觸發電平之後或無更多傳送中斷髮生時才會寫入。傳送中斷在向傳送FIFO中寫入資料時清除,直到它大於觸發電平,或通過將TXIC位置1清除中斷。
- 如果禁用FIFO(一個位置深度),並且此位置不存在資料,TXRIS位被設定。通過向傳送FIFO執行單個寫操作業清除它,或將TXIC位置1來清除中斷。
要為接收通道啟用DMA操作,需設定DMA Control(UARTDMACTL)暫存器的RXDMAE位。要為傳送通道啟用DMA操作,需要設定UARTDMACTL暫存器的TXDMAE位。UART還可被配置為在接收錯誤發生時讓接收通道停止使用DMA。當UARTDMACR暫存器的DMAERR位置1,並且發生了接收錯誤時,DMA接收請求會自動禁用。可通過清除適當的UART錯誤中斷來清除此錯誤條件。 如果啟用了DMA,當傳輸完成時, μDMA控制觸發一箇中斷。中斷髮生在UART中斷向量上。因此,如果中斷用於UART操作並且DMA啟用,UART中斷處理程式必須設計為處理 μDMA完成中斷。 6.2.4 初始化和配置 啟用並初始化UART,需要進行以下步驟:
- 使用UART0CLKEN/UART1CLKEN暫存器啟用UART模組。
- 為適當的引腳設定 GPIO_PAD_CONFIG的CONFMODE位。
- 115200波特率
- 8bit資料長度
- 一個停止位
- 無奇偶校驗
- FIFO不可用
- 無中斷
- 清除UARTCTL暫存器的UARTEN位來禁用UART。
- 將BRD的整數部分寫入UARTIBRD暫存器。
- 將BRD的小數部分寫入UARTFBRD暫存器。
- 將所需串列埠引數寫入UARTLCRH暫存器(此例為0x0000.0060)。
- 可選地,配置 μDMA通道並在UARTDMACTL暫存器啟用DMA選項。
- 通過設定UARTCTL暫存器的UARTEN位啟用UART。