1 / 19

串列埠通訊實驗

串列埠通訊實驗. 實驗目的 掌握 ARM 的串列埠工作原理 學習編程實現 S3C2410X 的 UART 通訊. 串列通訊傳輸格式. UART 腳位. 要完成基本的通信功能,實際上只需要 RXD , TXD , GND 即可. 腳位電氣特性. 但由於 RS-232-C 標準所定義的高,低電壓信號與 S3C210X 系統的 LVTTL 電路定義的高,低電壓信號完全不同 LVTTL 標準邏輯“ 1” 對應 2V~3.3V 電壓 標準邏輯“ 0” 對應 0V~0.4V 電壓 而 RS-232-C 標準採用負邏輯方式 標準邏輯“ 1” 對應 -5V~-15V 電壓

tal
Download Presentation

串列埠通訊實驗

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 串列埠通訊實驗 實驗目的 掌握ARM的串列埠工作原理 學習編程實現S3C2410X的UART通訊

  2. 串列通訊傳輸格式

  3. UART腳位 要完成基本的通信功能,實際上只需要RXD,TXD,GND即可

  4. 腳位電氣特性 • 但由於RS-232-C標準所定義的高,低電壓信號與S3C210X系統的LVTTL電路定義的高,低電壓信號完全不同 • LVTTL • 標準邏輯“1”對應2V~3.3V電壓 • 標準邏輯“0”對應0V~0.4V電壓 • 而RS-232-C標準採用負邏輯方式 • 標準邏輯“1”對應-5V~-15V電壓 • 標準邏輯“0”對應+5V~+15V。 • 顯然,兩者間要進行通信,必須經過電壓的轉換,轉換晶片採用的MAX232。

  5. UART電路

  6. UART電路 • 每個UART電路包含 • 串列傳輸速率發生器,接收器,發送器和控制單元。 • 串列傳輸速率發生器 • 以MCLK為時鐘源。 • 發送器和接收器包含 • 16位元組FIFO暫存器和移位暫存器,當發送資料的時候,資料先寫到FIFO然後複製到發送移位暫存器,然後從資料輸出埠(TxDn)依次被移位輸出。 • 被接收的資料也同樣從接收埠(RxDn)移位輸入到移位暫存器,然後複製到FIFO中。

  7. UART資料發送 • 資料發送封包的格式是可編程的,它包含一個開始位,5到8個資料位元,一個可選的奇偶位和一個或兩個停止位元,這些可以通過線性控制器UCONn)來設置。 • 發送器也能夠產生發送中止條件。中止條件迫使串列埠輸出保持在邏輯0狀態,這種狀態保持一個傳輸封包的時間長度。 • 通常在一封包傳輸資料完整地傳輸完之後,在通過這個全0狀態將中止信號發送給對方。中止信號發送之後,傳送資料連續放到FIFO中(在不使用FIFO模式下,將被放到輸出保持暫存器)。

  8. UART資料接收 • 與資料發送一樣,資料接收的封包也是可以編程的,它包含一個開始位,5到8個資料, • 一個可選的奇偶位和一位或兩位停止位元,它們都是通過線性控制器(ULCONn)來設置的。 • 接收器能夠檢測溢出錯誤,奇偶校驗錯誤,封包錯誤和中止狀況,每種情況下都將會將一個錯誤標誌位元。

  9. 串列傳輸速率發生器 • 每個UART的串列傳輸速率發生器為傳輸提供了串列移位元時鐘。 • 串列傳輸速率產生器的時鐘源可以C、從S3C2410X的內部系統時鐘或UCLK中來選擇。 • 串列傳輸速率由時鐘源(PCLK或UCLK)16分頻和UART串列傳輸速率除數暫存器(UBRDIVn)指定的16位除數決定。 • UBRDIVn的值可以按照下式確定: UBRDIVn=(int)(PCLK/(bps*16))-1 除數的範圍為1到(216-1)。

  10. 串列傳輸速率 • 如果串列傳輸速率為115200bps且PCLK或UCLK為40MHz,則UBRDIVn為: UBRDIVn =(int)(40000000)(115200*16))-1 = (int)(21.7)-1 = 21-1 = 20

  11. 線路控制暫存器(ULCONn)

  12. 控制暫存器(UCONn)

  13. 狀態暫存器(UTRSTATn)

  14. 串列傳輸速率(UBRDIV)

  15. 串列埠初始化 • /* 設置串列埠的FIFO屬性,並清除FIFO中的內容 */ • rUFCON0=0xf7; • /* 關閉流控功能 */ • rUMCON0=0x0; • /* 設置8位元資料位元、1位元停止位、無奇偶校驗串列埠模式 */ • rULCON0=0x3; • /* 設置收發的中斷模式為電壓觸發,關閉超時功能 */ • rUCON0=0x345; • /* 設置串列傳輸速率,pclk為CPU主頻,baud為串列傳輸速率 */ • rUBRDIV0=( (int)(pclk/16./baud + 0.5) -1 );

  16. 接受資料 • 接受資料,相關程式如下: • /* 等待接收緩衝清空.*/ • while(!(rUTRSTAT0 & 0x1)); • /* 將資料寫到資料埠 */ • Data = rURXH0;

  17. 發送資料 • /* 等待發送緩衝區空 */ • while(!(rUTRSTAT0 & 0x2)) • /* 發送資料 */ • rURXH0 = data

  18. 主函數Main 從串列埠接收字串,然後通過超級終端回顯

  19. UART 程式

More Related