mini2440硬件篇之UART
通用異步收發(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)!='