S3C6410 UART

本文详细介绍了S3C6410处理器中UART(通用异步接收/发送器)的配置步骤,包括设置GPA0和GPA1为UART模式,配置ULCON0、UCON0、UFCON0寄存器以设定数据格式、波特率和FIFO,以及通过UMCON0、UBRDIV0、UDIVSLOT0设置波特率。同时,讲解了如何通过UFSTAT0判断发送接收状态并操作URXH0和UTXH0缓存区。
摘要由CSDN通过智能技术生成

UART:universal asynchronous receiver/transmitter

通用异步发送接收装置

异步:与时钟无关,因此为异步。

ok6410使用RXD0 TXD0 连接GPA0 GPA1

1 使用时需要将GPA0-1设置为UART模式

2配置UART LINE CONTROL REGISTER
                  ULCON0  0x7F005000 此寄存器可以设置第0组UART 的数据位位数 停止位位数 校验方式 这里我们设置为8N1     8(数据位)NO 1(停止位) 

3配置UART CONTROL REGISTER
       UCON0 0x7F005004   此寄存器设置波特率相关信息

4配置UART FIFO CONTROL REGISTER 

     UFCON0  0x7F005008  此寄存器设置发送/接收FIFO 开启及大小

5配置 ,设置波特率

UMCON0

UBRDIV0

UDIVSLOT0

6通过对UFSTAT0的为满为空的判断将数据载入或者取出缓存区。

相关寄存器URXH0  UTXH0  UFSTAT0


代码如下:

#define ULCON0     (*((volatile unsigned long *)0x7F005000))
#define UCON0      (*((volatile unsigned long *)0x7F005004))
#define UFCON0     (*((volatile unsigned long *)0x7F005008))
#define UMCON0     (*((volatile unsigned long *)0x7F00500C))
#define UTRSTAT0   (*((volatile unsigned long *)0x7F005010))
#define UFSTAT0    (*((volatile unsigned long *)0x7F005018))
#define UTXH0      (*((volatile unsigned char *)0x7F005020))
#define URXH0      (*((volatile unsigned char *)0x7F005024))
#define UBRDIV0    (*((volatile unsigned short *)0x7F005028))
#define UDIVSLOT0  (*((volatile unsigned short *)0x7F00502C))

#define GPACON     (*((volatile unsigned short *)0x7F008000))


void init_uart(void)
{
	GPACON &= ~0xff;
	GPACON |= 0x22;//0x00100010 	设置端口为UART
	
	/* ULCON0 */
	ULCON0 = 0x3;  /* 数据位:8, 无较验, 停止位: 1, 8n1 */
	UCON0  = 0x5;  /* 使能UART发送、接收 */
	UFCON0 = 0x01; /* FIFO ENABLE */

	UMCON0 = 0;
	
	/* 波特率 */
	/* DIV_VAL = (PCLK / (bps x 16 ) ) - 1 
	 * bps = 57600
	 * DIV_VAL = (66500000 / (115200 x 16 ) ) - 1 
	 *         = 35.08
	 */
	UBRDIV0   = 35;

	/* x/16 = 0.08
	 * x = 1
	 */
	UDIVSLOT0 = 0x1;
	
}

char getchar(void)
{
	while ((UFSTAT0 & (1<<6)) == 0);//UART channe l 0 FIFO status register ,when Rx fifo fulling,bit[6]is 1
	return URXH0;
}

void putchar(char c)
{
	while ((UFSTAT0 & (1<<14)) == 1);
	UTXH0 = c;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值