mini2440硬件篇之UART
扫描二维码
随时随地手机看文章
通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART,是一种异步收发传输器。UART以全双工方式传输数据,最简单的连线只有2根,TxD用于发送,RxD用于接收,Gnd地。UART使用标准的TTL电平(0~3.3V或0~5V),表示高低电平,为了增加抗干扰能力,增加传输长度,通常将TTL电平转换为RS-232电平。3~12V表示0,-3~-12表示1。
平常数据引脚处于空闲1状态,发送数据时,TxD变低电平,表示一个起始信号。然后后面可以跟5、6、7、8位的数据,LSB低位优先。如果使用校验,数据发完后再发送一个校验位,最后发送1、2位停止位。
芯片手册
mini2440电路图
3.S3C2440寄存器
对于s3c2440来说,它有3个UART,配置过程如下。
对应的GPIO引脚设置成UART引脚。
ULCONLINE寄存器,配置校验、数据位、停止位。
UCON控制寄存器,可以配置时钟源,中断或查询方式,不使用DMA。
UFCONFOFO寄存器,不使用FIFO。
UMCONMODEM寄存器,不使用流控。
UTRSTAT状态寄存器,只读,读取UART状态。
UERSTAT错误寄存器,也是只读。
UFSTATFIFO的状态寄存器,也是只读。
UMSTATMODEM状态寄存器,只读。
UTXH发送缓冲区。
URXH接收缓冲区。
UBRDIV波特率设置寄存器
uart.h
/*******************************************************************
*Copyright(C),2011-2012,XXX.
*FileName:uart.h
*Author:HuangYinqing
*Version:1.0
*Date::2012-04-22
*Description:串口0驱动.
*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)
/*函数声明*/
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驱动.
*FunctionList:
*History:
******************************************************************/
#include"common.h"
#include"uart.h"
/********************************************************************
函数功能:发送一个字符。
入口参数:
ucChar:待发送的字符
返回:无。
备注:无。
********************************************************************/
voidUart0PutChar(unsignedcharucChar)
{
while(!(rUTRSTAT0&TXD0READY));//发送一个字节
rUTXH0=ucChar;
}
/********************************************************************
函数功能:接收一个字符。
入口参数:无。
返回:接收的字符。
备注:无。
********************************************************************/
unsignedcharUart0GetChar(void)
{
while(!(rUTRSTAT0&RXD0READY));//接收一个字节
returnrURXH0;
}
/********************************************************************
函数功能:发送字符串。
入口参数:
pucStr:待发送的字符串指针。
返回:无。
备注:无。
********************************************************************/
voidUart0SendString(char*pucStr)
{
while((*pucStr)!='