首页 > 应用 > qy002千赢国际应用
[导读]通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART,是一种异步收发传输器。UART以全双工方式传输数据,最简单的连线只有2根,TxD用于发送,RxD用于接收,Gnd地。UART使用标准的TTL电平
通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART,是一种异步收发传输器。UART以全双工方式传输数据,最简单的连线只有2根,TxD用于发送,RxD用于接收,Gnd地。UART使用标准的TTL电平(0~3.3V或0~5V),表示高低电平,为了增加抗干扰能力,增加传输长度,通常将TTL电平转换为RS-232电平。3~12V表示0,-3~-12表示1。本文引用地址: http://www.21ic.com/app/mcu/201812/784735.htm平常数据引脚处于空闲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)!=''){Uart0PutChar(*pucStr++);}}/********************************************************************函数功能:发送指定长度数据。入口参数:pucStr:待发送的字符串指针。ulCount:待发送的字节数。返回:无。备注:无。********************************************************************/voidUart0SendData(char*pucStr,intulCount){while(ulCount--){Uart0PutChar(*pucStr++);}}/********************************************************************函数功能:串口0中断函数。入口参数:无。返回:无。备注:无。********************************************************************/staticvoid__irqUart0Handler(void){charch;ClearSubPending(BIT_SUB_RXD0);ClearPending(BIT_UART0);while(rUTRSTAT0&1)//==接收缓冲区有数据{ch=rURXH0;rUTXH0=ch;}}/********************************************************************函数功能:串口0初始化函数。入口参数:无。返回:无。备注:无。********************************************************************/voidUart0Init(void){rGPHCON&=~(0xf<<4);rGPHCON|=0xa<<4;//==GPH2,GPH3用作TXD0,RXD0rGPHUP|=3<<2;//==GPH2,GPH3内部上拉rULCON0=(0x03<<0);//==数据格式:数据位为8位,1位停止,无奇偶校验,不使用红外rUCON0=(1<<0)|(1<<2);//==允许查询或中断方式,不使用DMA通道rUFCON0=0x00;//==不使用FIFOrUMCON0=0x00;//==不使用流控rUBRDIV0=UART_BRD;//==设置波特率为115200kb/spISR_UART0=(unsignedint)Uart0Handler;//==串口收中断函数rINTMOD&=~BIT_UART0;//==普通中断模式rINTMSK&=~BIT_UART0;//==打开中断屏蔽rINTSUBMSK&=~BIT_SUB_RXD0;//==打开接收子中断屏蔽}//

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客