歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> S3C2440串口通訊的相關配置

S3C2440串口通訊的相關配置

日期:2017/3/1 10:05:45   编辑:Linux編程

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有大、小端之分,定義寄存器時要注意,不過一般都是用小端法。

Copyright © Linux教程網 All Rights Reserved