基於fl2440的串口通訊

來源:互聯網
上載者:User
文章目錄
  • 編程實現:

串口通訊的格式:

 

 

起始位 資料位元 同位位元 停止位

傳輸速率:
每一個資料位元的寬度定於發送傳輸速率的倒數。微機非同步串列通訊中,常用的傳輸速率為110、
150、300、600、1200、2400、4800、9600、57600、115200 等。
電氣特性:
要完成基本的通訊功能,實際上值需要RXD、TXD 和GND 即可,但由於RS-232-C 標準所
定義的高、低電平訊號於S3C2440A 系統的LVTTL 電路定義的高、低電平訊號完全不同,LVTTL
的標準邏輯“1”對應2-3.3V,標準邏輯“0”對應0-0.4V,而RS-232C 標準採用負邏輯方
式,邏輯“1”對應-5――15V,標準邏輯“0”對應+5-+15V。顯然兩者間要進行通訊,必
須經過電平的轉換,轉換晶片採用max202。

RS-232C 標準規定,當誤碼率小於4%時,要求導線的電容值應小於2500PF。
對於普通導線,其電容值約為170PF/M。則允許距離L=2500PF/(170PF/M)=15M.這一距離的計
算,是偏於保守的,實際應用中,當使用9600bps,普通雙絞屏蔽線時,距離可達30~35 米。
零Modem 的最簡連線(3 線制)

由此可以看出,串口只是適合於短距離的地方,在選擇每一種器件的時候都必須考慮其使用場合,精度,溫度影響,等等。否則前功盡棄。

 

串口的模組功能圖:

其中包括,控制單元,接受移位,發送移位, 接受/發送fifo模組,傳輸速率產生器。

編程實現:

1)設定串口傳輸格式,資料位元數,同位位元,停止位

2)設定傳輸速率產生器的時鐘源、設定串口工作方式(查詢方式(polling mode), 中斷模式(interrupt mode), DMA( direct memory access))

3)通過各種狀態標誌,或者中斷服務子程式發送、接受資料

 原始碼:

 AREA |DATA|, CODE, READONLY
 
 ENTRY
 
 ;LDR R13,=0x1000 /*將本句注釋掉發現似乎沒有什麼影響,不知道寫上為何用意?刪除後執行效果一樣!*/
 IMPORT rs232Main
 
 B rs232Main
 
 END

 

/*宏定義*/

#define ULCON0   (*(volatile unsigned *)0X50000000)  //UART線控制寄存器
#define UCON0    (*(volatile unsigned *)0X50000004)  //UART控制寄存器
#define UFCON0   (*(volatile unsigned *)0X50000008)  //FIFO控制寄存器
#define UTRSTAT0  (*(volatile unsigned *)0X50000010)  //UART狀態寄存器
#define UBRDIV0  (*(volatile unsigned *)0X50000028) //傳輸速率
#define UTXH0    (*(volatile unsigned *)0X50000020)
#define URXH0    (*(volatile unsigned *)0X50000024)
#define GPBDAT   (*(volatile unsigned *)0X58000054)

 
 void rs232Main()

{
    char buf;

    ULCON0 &= 0xffffff00;/*將0-7位置零*/
    ULCON0 |= 0x03;/*設定為8位,無同位,停止位1位,正常模式*/
    UCON0   = 0X0805;/*查詢方式(polling mode)正常運行模式,不產生,接受或者發送錯誤中斷,串口時鐘是PCLK,*/
    /*計算公式:UBRDIVn = (int)( UART clock / ( buad rate x 16) ) - 1*/
    /*26+1 = 27 27*16*115200 PCLK 約等於 50M*/
    UBRDIV0 = 0x1a; /*設定傳輸速率為115200*/
   
    while (1)
    {
        while (UTRSTAT0 & 0x01)
        {
            buf = URXH0;
            while (!(UTRSTAT0 & 0X04));
            UTXH0 = buf;   
        }

    }//這裡必須使用while(1)不然,其會執行到linux的作業系統上去,最開始還不知道是什麼原因...

}

位址範圍

Please select which region to write : Esc to abort
0 : offset 0x00000000, size 0x00020000 [boot]
1 : offset 0x00020000, size 0x00060000 [bootParam]
2 : offset 0x00080000, size 0x00100000 [pic]
3 : offset 0x00180000, size 0x00380000 [MyApp]
4 : offset 0x00500000, size 0x00300000 [kernel]/*緊跟其後的就是linux核心*/
5 : offset 0x00800000, size 0x03c00000 [fs_yaffs]/*檔案系統*/
6 : offset 0x04400000, size 0x00080000 [eboot]
7 : offset 0x04480000, size 0x03b80000 [wince]

 

--------------------------------------------------------------堅持不懈、追求卓越--------------------------------------------------------------------------

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.