51 UART配置流程

2021-07-25 15:50:47 字數 1515 閱讀 8612

step1: 設定txd、rxd pin的輸入輸出屬性,根據各晶元定義設定

例:p2cr &= 0xfb;//p2^1:uart_txd, p2^2:uart_rxd

step2: 設定uart工作方式

設定scon暫存器。例,sh88f02設定為工作方式1,scon = 0x40;

在sh88f02應用中發現,必須先配置scon在配置定時器,如果順序顛倒uart不工作。

正常順序見最後例程。

設定pcon的bit7可以設定波特率加不加倍。

step3: 選擇產生波特率的定時器

例,sh88f02選擇定時器2為波特率發生器。

t2con = 0x30;     //(tclk=1, rclk=1)

step4: 設定產生波特率定時器的工作方式及定時器過載值

一般產生波特率的定時器都工作在過載方式下。在這步就根據各晶元設定對應的定時器工作,設定完畢後注意要啟動定時器:trx = 1;

例, sh88f02定時器2設定如下:

t2con = 0x30;		//uart波特率由定時器2產生

t2mod = 0x00; //定時器2時鐘源為系統時鐘

rcap2l = 0xd8; //波特率為9600

rcap2h = 0xff;

tl2 = 0xd8;

th2 = 0xff;

tr2 = 1;

step5: 啟動uart

向sbuf中寫入資料即啟動了uart的傳送。

ren = 1;// 允許接收

ren設定後,接收資料線rxd上偵測到低電平的起始訊號即會開始接收資料。

ti = 1; //特別強調一下

其中ti = 1的設定與printf的使用有關。在實際測試中,如果在初始化中沒有這句,用printf()語句不能正常輸出,但是給sbuf賦值還是能正常輸出的。

step6: 中斷設定:

eadc = 1;

ea  = 1;

設定後當傳送資料完畢,或接收資料完畢即會進入中斷

void interruptuart() interrupt 4  using	3

}

例,sh88f02 uart配置工作例程:

void init_port()   

void init_uart() //串列埠通訊初始化

void main(void)  

}}

bit uartreadflag = 0;			//uart讀到值標誌

unsigned int rdatauart = 0; //uart接收buffer

void interruptuart() interrupt 4 using 3

}

上述配置後,用printf即可與串列埠助手通訊。

UART配置流程

常用的串列埠一般都rs232和rs485,在linux中,所有的裝置檔案一般都位於 dev 下,其中串列埠1和串列埠2對應的裝置名依次為 dev ttys0 和 dev ttys1 而且usb轉串列埠的裝置名通常為 dev ttyusb0 下面以指紋識別系統為例介紹下串列埠的操作流程 1 儲存原先串...

V210 UART 整體流程

2.6核心以後,多數驅動都是以平台匯流排的方式編寫,因此對於這種型別的驅動,實際就是要分成兩個流程來分析 平台匯流排裝置的構造,平台匯流排驅動的構造。1.arch arm mach s5pv210 mach x210.c smdkc110 map io s3c24xx init uarts smdk...

51微控制器 UART串列埠通訊

使用半雙工通訊 使用硬體uart模組和串列埠中斷 include typedef unsigned int uint void configuart uint baud void main void configuart uint baud 中斷型別碼為4,中斷向量的位址 中斷型別碼 8 3 voi...