十 UART 串列埠通訊

2021-10-10 14:14:18 字數 2261 閱讀 7900

uart:通用非同步收發器,通常用於微控制器和電腦之間以及微控制器和微控制器之間的通訊。

在 uart 通訊過程中,是低位先發,高位後發的原則。

波特率:傳送二進位制資料位的速率,習慣上用 baud 表示,即我們傳送一位二進位制資料的持續時間=1/baud。

台式電腦 rs232介面:

微控制器和pc進行通訊,使用序列通訊標準,但電平標準不一致,需要進行轉換。rs232串列埠執行負邏輯電平標準,即-3v~-15v電壓表示1,+3v~+15v電壓表示0,而微控制器執行ttl電平標準,即5v代表高電平,0v代表低電平。在開發板中使用max232晶元進行電平轉換。膝上型電腦普遍不再整合串列埠,而用usb介面代替,則需在開發板中整合usb轉串列埠電路,使用到ch340晶元進行電平轉換。

微控制器中整合uart硬體模組,用於自動收發資料。51微控制器中的uart串列埠由序列口控制暫存器scon、傳送和接收電路三部分構成。

在硬體串列埠模組中,有乙個專門的波特率發生器用來控制傳送和接收資料的速度。對於stc89c52 微控制器來講,這個波特率發生器只能由定時器 t1 或定時器 t2 產生,而不能由定時器 t0 產生。

方式 1 下的波特率發生器必須使用定時器 t1 的模式 2,也就是自動重裝載模式,定時器的過載值計算公式為:th1 = tl1 = 256 - 晶振值/12 /2/16 /波特率

和波特率有關的還有乙個暫存器,是乙個電源管理暫存器 pcon,他的最高位可以把波特率提高一倍,也就是如果寫 pcon |= 0x80 以後,計算公式就成了:th1 = tl1 = 256 - 晶振值/12 /16 /波特率

解釋:256 是 8 位定時器的溢位值,也就是 tl1 的溢位值;晶振值是 11059200,12 是說 1 個機器週期等於 12 個時鐘週期;乙個波特率包含高電平和低電平時段,在這取其中乙個時段所以除以2;串列埠模組接收資料採取的方式是把一位訊號採集 16 次,其中第 7、8、9 次取出來,這三次中其中兩次如果是高電平,那麼就認定這一位資料是 1,如果兩次是低電平,那麼就認定這一位是 0。這樣一旦受到意外干擾讀錯一次資料,也依然可以保證最終資料的正確性。

序列通訊基本步驟:(1)配置串列埠為模式1;(2)配置定時器t1為模式2,即自動重灌模式;(3)根據波特率計算th1和tl1的初值,如果有需要可以使用pcon進行波特率加倍;(4)開啟定時器控制暫存器tr1,執行定時器,同時關閉t1中斷。

通訊例項**:

#include sbit addr0 = p1^0;

sbit addr1 = p1^1;

sbit addr2 = p1^2;

sbit addr3 = p1^3;

sbit enled = p1^4;

unsigned char code ledchar = ;

unsigned char ledbuff[7] = ;

unsigned char thr0,tlr0;

unsigned char rxdbyte = 0; //串列埠接收到的位元組

void configtimer(unsigned long ms);

void configuart(unsigned int baud);

void main()

}void configtimer(unsigned long ms)

void configuart(unsigned int baud)

void ledscan()

}void interrupttimer0() interrupt 1

void interruptuart() interrupt 4

if(ti)

}

十六進製制收發和字元收發解釋:十六進製制收發都是按位元組資料的真實值進行的;而字元格式傳送和字元格式接收,是按 ascii 碼表中字元形式進行的,但它實際上最終傳輸的還是乙個位元組資料。

UART串列埠通訊

先簡單說說串列埠通訊 uart 我做的這個實驗只針對rs232標準,在fpga與上位機給出的rs232口之間通過電平轉換電路 最上面圖中的max232晶元 實現ttl電平與rs232電平之間的轉換。我們只關心rs232 tx和rs232 rx兩個訊號,rs232 tx是資料傳送埠,rs232 rx是...

匯流排 UART串列埠通訊

uart universal asynchronous receiver transmitter,通用非同步接收 傳送裝置 不知道資料什麼時候來 soc和pc等裝置都是ttl電平 0v 為 0 3.3v 5v為1 電平轉換模組的作用 因為串列埠用於遠距離通訊,會影響到電路的電壓,如果還是如上面這樣採...

UART串列埠非同步通訊

1.波特率 通訊裝置之間需要約定好波特率 每秒鐘傳送的二進位制位的個數,單位baud 常見的波特率有4800,9600,115200。2.通訊的起始訊號和停止訊號 usart協議空閒位預設為高電平,起始訊號拉低,停止位 0.5 1 1.5 2位的高電平 3.有效資料 起始位後緊著著就是傳輸的有效資料...