1. 通用異步收發器(UARTx)
1.1. 模塊介紹
CIU32M010、CIU32M030 集成的通用異步收發器(UART)提供了一種靈活的方法與使用工業標準NRZ 異步串行數據格式的外部設備之間進行全雙工數據交換。
1.2. 功能特點
• 支持 8bit 數據和 9bit 數據模式
• 支持 18bit 波特率寄存器靈活配置
• 支持全雙工異步通信、單工發送、單工接收、單線通信模式
• 支持硬件奇偶校驗可選
• 具有 4 幀數據的接收緩存,1 幀數據的發送緩沖
• 硬件檢測接收超時,超時長度可以配置,配置范圍:1~16384 比特率時間
• 支持幀出錯檢測
• 可選 STOP 位為 1 位或 2 位
1.3. 功能說明
1.3.1. 波特率生成功能
波特率計算公式 = SYSCLK/(UART_BAUD+1) (UART_BAUD>=6)
UART 模塊的工作時鐘為系統時鐘,因此,應當根據當前系統時鐘頻率以及需要的波特率計算 UART_BAUD 的配置值。一旦系統時鐘頻率改變,應當相應修改波特率配置。
1.3.2. UART 發送器
發送器可發送 8/9bit 數據,由寄存器 UART_CON 中的 BIT9_EN 位的配置值決定。軟件向寄存器
UART_DATA 寫入數據時,發送器將通過 IO 管腳 UART_TX 發送數據幀,UART_TX 的極性可以通過寄存
器 UART_CON 中的 TX_INV 位來配置。
發送數據流程:發射器輸出管腳(UART_TX)閑置狀態時,默認為高電平。模塊使能后,軟件向寄存
器 UART_DATA 寫入要發送的數據啟動發送。發送器有一幀的發送緩沖,寄存器 UART_STA 中
TX_BUF_EMPTY 為高電平時,軟件可向寄存器 UART_DATA 再寫入一幀數據,它將被存入發送緩沖區,
TX_BUF_EMPTY 會變零,在當前幀發送完成時,會接著發送緩沖區中的數據。
數據發送完成且緩沖區為空時,寄存器 UART_STA 中 TC_PEND 位置 1,此時如果寄存器 UART_CON
中 TCIE 位使能,則產生中斷。
發送器發送序列:起始位->數據位(LSB)->停止位
1.3.3. UART 接收器
接收器可接收 8/9bit 數據,由寄存器 UART_CON 中的 BIT9_EN 位的配置值決定。
數據字符由邏輯 0 的起始位、8/9bit 數據位,奇偶校驗位和邏輯 1 的停止位組成。
接收器有 4 個 8/9bit 的數據緩沖。在緩沖區接收到 4 個數據之后,且又有一幀數據接收完成時,寄存器 UART_STA 中 RX_BUF_OV 會置 1,新的數據將不會存儲在數據緩沖區中,即新數據丟失。 在接收一個數據幀的過程中可使能奇偶錯誤檢測、幀錯誤檢測和超時檢測,通過配置寄存器 UART_CON 打開相應的錯誤檢測使能位和相應的錯誤中斷使能位。
幀錯誤檢測機制是指在 stop 位檢測到 IO 引腳 UART_RX 是低電平時,為幀錯誤。
超時檢測機制是指在接收到 1byte 之后,檢測是否超過了設置的時間,如果沒有則繼續接收數據,超時時間可以通過寄存器 UART_CON 中 TO_BIT_LEN 進行配置。接收緩沖區有數據,即寄存器 UART_STA 中的 RX_BUF_NOT_EMPTY=1 時,軟件可以通過讀
UART_DATA 寄存器的方式來獲取收到的數據。
1.4 模塊框圖與接口時序
1.4.1. UART 模塊架構圖
圖 1-1 UART 模塊架構圖
1.4.2. UART 協議圖
UART 數據發送/接收的數據格式如下所示,其中數據位可選擇 8bit 或 9bit,需要注意的是,選擇 9bit 數據時,就不可以使能奇偶校驗位。相反,使能奇偶校驗位時,不能選擇 9bit 數據。
圖 1-2 UART 時序圖
1.5 時鐘與復位
1.5.1. 時鐘介紹
該模塊時鐘來源于系統時鐘,可通過配置系統寄存中 CLKCON2 來使能時鐘。
1.5.2. 復位介紹
該模塊的復位源有兩個,分別是系統復位和軟件復位,軟件復位可通過配置系統寄存器觸發。