UART配置的相關寄存器如下(按s3c2440手冊中的順序列出):
1. ULCONn寄存器:線性控制寄存器
功能:設置奇偶校驗,停止位, 數據位(5-8位)
注意:一般設置為無校驗,一個停止位,數據位為8位,也就是常說的“8N1”,此時寄存器值為0x3。(bit[6]=0為正常模式,否則為紅外模式);
2. UCONn寄存器:通道n控制器
功能:選擇UART時鐘源、設置UART中斷方式
注意:可選擇PCLK、UEXTCLK或FCLK/n。bit[5]=1為回送模式,用於測試;bit[3:2]和bit[1:0]分別控制傳輸和接收模式,初學者常設置為中斷請求或查詢模式,bit[3:2]=bit[1:0]=01。
3. UFCONn寄存器:FIFO控制寄存器
功能:用於設置是否使用FIFO,設置各FIFO的觸發阙值,即發送FIFO中有多少個數據時產生中斷、接收FIFO中有多少個數據時產生中斷。並可以通過設置UFCONn寄存器來復位各個FIFO。讀取UFSTATn寄存器可以知道各個FIFO是否已經滿,其中有多少個數據。
注意:bit[0]=1時,FIFO使能,否則禁止。初學者可不使用FIFO
4. UMCONn寄存器:UART MODEM控制寄存器
注意:bit[4]=0,AFC無效
5.UBRDIVn寄存器:波特率除數寄存器
功能:設置波特率除數
注意:UBRDIVn=(int)(UART時鐘/(波特率*16))-1;
UART時鐘:PCLK,FCLK/n或者UEXTCLK,例如,如果波特率為115200bps並且UART時鐘為40MHz,則UBRDIVn為:
UBRDIVn=(int)(40000000/(115200*16))-1=(int)(21.7)-1(取最接近的整數)=22-1=21。
5. UTRSTATn寄存器:接收/發送狀態寄存器
功能:顯示接收/發送緩存寄存器狀態
注意:在非FIFO模式時,bit[0]=1表明接收到數據;bit[1]=1表明發送緩存寄存器為空。在FIFO模式時,UFSTAT寄存器的相關位,具體見手冊。
6. UERSTATn寄存器:錯誤狀態寄存器
功能:表示各種錯誤是否發生
注意:初學者可以不關注其狀態,待深入學習時,再查相關資料
7. UFSTATn寄存器:FIFO狀態寄存器
功能:表明FIFO的相關狀態
注意:bit[14]=1,表明發送FIFO已滿,暫時不能再發送數據。Bit[6]=0,表明接收FIFO中有數據(個人理解,不過不太嚴謹)。
8. UMSTATn寄存器:UART MODEM 狀態寄存器
注意:初學者可以不管
9. UTXHn寄存器:發送緩存寄存器
功能:UART即會將它保存到緩沖區中,並自動發送出去
注意:bit[7:0]=發送數據。
10. URXHn寄存器:接收緩存寄存器
功能:當UART接收到數據時,CPU讀取這個寄存器,即可獲得數據。
注意:bit[7:0]=接收數據;
注:URXHn與UTXHn有大、小端之分,定義寄存器時要注意,不過一般都是用小端法。