當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]通用異步收發(fā)傳輸器(UniversalAsynchronousReceiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器。UART以全雙工方式傳輸數(shù)據(jù),最簡(jiǎn)單的連線只有2根,TxD用于發(fā)送,RxD用于接收,Gnd地。UART使用標(biāo)準(zhǔn)的TTL電平

通用異步收發(fā)傳輸器(UniversalAsynchronousReceiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器。UART以全雙工方式傳輸數(shù)據(jù),最簡(jiǎn)單的連線只有2根,TxD用于發(fā)送,RxD用于接收,Gnd地。UART使用標(biāo)準(zhǔn)的TTL電平(0~3.3V或0~5V),表示高低電平,為了增加抗干擾能力,增加傳輸長(zhǎng)度,通常將TTL電平轉(zhuǎn)換為RS-232電平。3~12V表示0,-3~-12表示1。

平常數(shù)據(jù)引腳處于空閑1狀態(tài),發(fā)送數(shù)據(jù)時(shí),TxD變低電平,表示一個(gè)起始信號(hào)。然后后面可以跟5、6、7、8位的數(shù)據(jù),LSB低位優(yōu)先。如果使用校驗(yàn),數(shù)據(jù)發(fā)完后再發(fā)送一個(gè)校驗(yàn)位,最后發(fā)送1、2位停止位。

芯片手冊(cè)

mini2440電路圖


3.S3C2440寄存器

對(duì)于s3c2440來(lái)說(shuō),它有3個(gè)UART,配置過(guò)程如下。

對(duì)應(yīng)的GPIO引腳設(shè)置成UART引腳。

ULCONLINE寄存器,配置校驗(yàn)、數(shù)據(jù)位、停止位。

UCON控制寄存器,可以配置時(shí)鐘源,中斷或查詢方式,不使用DMA。

UFCONFOFO寄存器,不使用FIFO。

UMCONMODEM寄存器,不使用流控。

UTRSTAT狀態(tài)寄存器,只讀,讀取UART狀態(tài)。

UERSTAT錯(cuò)誤寄存器,也是只讀。

UFSTATFIFO的狀態(tài)寄存器,也是只讀。

UMSTATMODEM狀態(tài)寄存器,只讀。

UTXH發(fā)送緩沖區(qū)。

URXH接收緩沖區(qū)。

UBRDIV波特率設(shè)置寄存器

uart.h


/*******************************************************************

*Copyright(C),2011-2012,XXX.

*FileName:uart.h

*Author:HuangYinqing

*Version:1.0

*Date::2012-04-22

*Description:串口0驅(qū)動(dòng).

*FunctionList:

*History:

******************************************************************/

#ifndef__UART_H__

#define__UART_H__

#definePCLK50000000//50M

#defineUART_CLKPCLK

#defineUART_BAUD_RATE115200

#defineUART_BRD((int)(UART_CLK/(UART_BAUD_RATE*16))-1)

#defineTXD0READY(1<<2)

#defineRXD0READY(1)

/*函數(shù)聲明*/

voidUart0Init(void);

unsignedcharUart0GetChar(void);

voidUart0SendString(char*pucStr);

voidUart0SendData(char*pucStr,intulCount);

#endif


uart.c


/*******************************************************************

*Copyright(C),2011-2012,XXX.

*FileName:uart.c

*Author:HuangYinqing

*Version:1.0

*Date::2012-04-22

*Description:串口0驅(qū)動(dòng).

*FunctionList:

*History:

******************************************************************/

#include"common.h"

#include"uart.h"

/********************************************************************

函數(shù)功能:發(fā)送一個(gè)字符。

入口參數(shù):

ucChar:待發(fā)送的字符

返回:無(wú)。

備注:無(wú)。

********************************************************************/

voidUart0PutChar(unsignedcharucChar)

{

while(!(rUTRSTAT0&TXD0READY));//發(fā)送一個(gè)字節(jié)

rUTXH0=ucChar;

}

/********************************************************************

函數(shù)功能:接收一個(gè)字符。

入口參數(shù):無(wú)。

返回:接收的字符。

備注:無(wú)。

********************************************************************/

unsignedcharUart0GetChar(void)

{

while(!(rUTRSTAT0&RXD0READY));//接收一個(gè)字節(jié)

returnrURXH0;

}

/********************************************************************

函數(shù)功能:發(fā)送字符串。

入口參數(shù):

pucStr:待發(fā)送的字符串指針。

返回:無(wú)。

備注:無(wú)。

********************************************************************/

voidUart0SendString(char*pucStr)

{

while((*pucStr)!='