s5pv210嵌入式开发(一)之---UART

最近将以前写的东西整理总结了下,会陆续加载到自己博客中,学有疏,常有漏,只有不断地总结和归纳,才能有进一步的飞跃。

1 UART协议介绍

(1)UART使用的是 异步,串行通信,全双工通信

异步通信

以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。

串行通信

是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合

数据传送速率

用波特率来表示,即每秒钟传送的二进制位数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特。

波特率

是衡量数据传输速率的指征。表示每秒钟传送的二进制位数(bit数)。例如资料传送速率是120字符/秒,而每个字符是10位,则其传送的波特率为10x120=1200字符/秒=1200波特。

(2)数据传输格式

在这里插入图片描述

起始位:先发出一个逻辑”0”信号,表示传输字符的开始。
数据位:可以是5~8位逻辑”0”或”1”。如ASCII码(7位),扩展BCD码(8位)。小端传输
校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验)
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

电路图

(1)串口引脚图
在这里插入图片描述
![](https://img-blog.csdnimg.cn/20200812232345799.png#pic_center
(2)max3232芯片引脚图
在这里插入图片描述
(3)s5pv210 芯片控制引脚图
在这里插入图片描述

s5pv210寄存器(手册867页)

常用寄存器:

a) GPIO选择
b) Uart控制器(开关)
c) 数据格式控制ULCONn
d) 波特率配置UBRDIV UDIVSLOT
e) 数据收发缓存器UTXH URXH
f) 数据收发状态UTRSYAT

裸机部分核心代码

/uart.c/

#include "uart.h"
#include "cpu_io.h"
#include "gpio.h"
void uart_init()
{

struct s5pv210_gpio *gpio_base=(struct s5pv210_gpio *)S5PV210_GPIO_BASE;//这种定义方法不用重新请求分配空间
struct s5pv2xx_uart *uart_base=(struct s5pv2xx_uart *)S5PV210_UART_BASE;//这种定义方法不用重新请求分配空间

	  unsigned int var;
	/*上面的等价于找到base地址来进行查找值
	struct s5pv210_gpio *base
	base->gpio_a0.con=xx;*/
	
	/*根据引脚选择功能*/
	var=readl(&gpio_base->gpio_a0.con);
	
	var &=~(0xff<<0);//
	var |=(0x22<<0);//p133
    	 writel (var, &gpio_base->gpio_a0.con);
	 /*对串口控制器进行功能配置*/
	  _REG (&uart_base->ulcon)=0x3;//11   8 bit p867
	  _REG (&uart_base->ucon)=0x5;//0101  轮询模式p867
	  /*计算波特率*/
	  _REG (&uart_base->ubrdiv)=35;//p879计算公式得到,时钟频率为66.5MHZ,计算的35.07=35.1
	  _REG (&uart_base->udivslot)=0x80;//0101  轮询模式p867,0.1*16向下取整得1,查表

}
void myputc(char c){
	struct s5pv2xx_uart *uart_base=(struct s5pv2xx_uart *)S5PV210_UART_BASE;
	
	/*等待发送完成p873状态寄存器*///判断是否为空
	while(_REG (&uart_base->utrstat)&(0x1<<2));
	/*发送数据*/
    _REG(&uart_base->utxh)=c;

}
void myputs(const char *str){
	while(*str)
		{
     myputc(*str);
	 str++;

	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值