S3C2440UART

本文介绍了S3C2440处理器的UART特性,包括其3个独立的串行I/O端口,每个UART的组成部分如波特率发生器、发送器、接收器和控制单元。讲解了UART的基本工作原理,如内部波特率发生器如何为数据传输提供时钟,并详细描述了UART的寄存器配置。同时,提到了波特率分频寄存器UBRDIVn的计算公式,用于确定串行传输的波特率。最后,举例说明了配置波特率的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

S3C2440 的通用异步收发器(UART)配有3个独立异步串行I/O(SIO)端口
每个 UART 包含一个波特率发生器、发送器、接收器和一个控制单元

UART 基本工作原理
 内置波特率发生器,为串行数据的发送和接收提供时钟,根据这个时钟节拍,数据先写到FIFO中然后在拷贝到发送移位器中,在移位发送到引脚TxDn, 期间,发送过来的数据通过引脚RxDn进入移位器中然后拷贝到接收器的FIFO中

UART寄存器(详情见数据手册)
ULCONn(3个)
UCONn(3个)
UFCONn(3个)
UMCONn(2个)
UTRSTATn(3个)
UERSTATn(3个)
UFSTATn(3个)
UMSTATn(2个)
UTXHn(3个)
URXHn(3个)
UBRDIVn(3个)

存储在波特率分频寄存器中的值(UBRDIVn)是用于决定如下的串行Tx/Rx时钟率(波特率):  
 UBRDIVn = (int)( UART时钟 / ( 波特率 × 16) ) –1   
 ( UART时钟:PCLK,FCLK/n 或UEXTCLK )

一个例子(启动代码自己添加)

#include "config.h"
#define PCLK 50000000

void Uart0_Init(unsigned int bandrate)
{
	rGPHCON &=~((3<<4)|(3<<6));	
	rGPHCON |=(2<<4)|(2<<6);	//GPH2--TXD[0];GPH3--RXD[0]
	
	rGPHUP=0x00;		//使能上拉功能
	
	rULCON0 |=0x03;		//8位数据,1位停止位
	rUCON0  = 0x05;
	rUBRDIV0= PCLK/bandrate/16-1;
	rURXH0 =0; 		//清空UART0接收缓冲器	
}

void Sendchar(unsigned char c)
{
	rUTXH0=c;		//写入UART0发送缓冲器
	while(!(rUTRSTAT0 & (1<<2)));	//等待字符发送完
}

unsigned char Getchar(void)
{
	unsigned char c;
	while(!(rUTRSTAT0 & (1<<0)));	//等待接收字符
	c=rURXH0;	//接收缓冲器的字符
	return c;
}

int Main()
{
	unsigned char Z_char;
	Uart0_Init(115200);
	while(1)
	{
		Z_char=Getchar();
		Sendchar(Z_char);
		
	}
	return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值