S5PV210串行通信编程实战-1

1、整个程序流程分析:
程序是第五章icache项目复制过来的有:clock.S 、led.S、start.S(添加bl main调用)、Makefile(依懒里要添加uart.o和main.o)、mkv210_image.c、多添加一个,uart.c再添加一个main.c调用uart.c
(1)、整个串口通信相关程序包含2部分:uart_init负责初始化串口,uart_putc负责发送一个字节。

void main(void)
{
	uart_init( );
	uart_putc( ' a ' );
	
}
//串口初始化程序
void uart_init(void)
{

}
//串口发送程序,发送一个字节
void uart_putc(char  c)
{

}
//串口接收程序,轮询方式,接收一个字节
char  uart_getc(void)
{
}

2、串口控制器初始化关键步骤:
(1)、初始化串口的Tx(发)和(Rx)收,引脚所对应的GPIO(这个引脚是复用的),查原理图可知Rx和Tx分别对应GPA0_0和GPA0_1。
(2)、GPA0CON(0xE0200000),bit[3 : 0] = 0b0010 , bit[4 : 7] = 0b0010其余位不变。
(3)、初始化这几个关键寄存器:UCON0 ULCON0 UMCON0 UFCON0 UBRDIV0 UDIVSLOT0
3、主要的几个寄存器:
(1)、ULCON0 = 0X3 //0校验位、8位数据位、1停止位
(2)、UCON = 0x5 //发送和接收都是polling mode (轮询模式)
(3)、UMCON0 =0x0 //禁止MODEM(在此和流控有关)、afc(流控)
(4)、UFCON0 = 0x0 //禁止FIFO模式
(5)、UBRDIV0 和 UDIVSLOT0和波特率有关,要根据公式去算的。
4、在C源文件中定义访问寄存器的宏:
#define GPA0CON 0xE0200000
#define UCON0 0xE2900004
#define ULCON0 0xE2900000
#define UMCON0 0xE290000c
#define UFCON0 0xE2900008
#define UBRDIV0 0xE2900028
#define UDIVSLOT0 0xE290002c
#define UTRSTAT0 0xE2900010
#define UTXH0 0xE2900020
#define URXH0 0xE2900010
//这里是强制类型转换后访问
#define rGPA0CON (*(volatile unsigned int )GPA0CON)
#define rUCON0 (
(volatile unsigned int )UCON0)
#define rULCON0 (
(volatile unsigned int )ULCON0 )
#define rUMCON0 (
(volatile unsigned int )UMCON0 )
#define rUFCON0 (
(volatile unsigned int )UFCON0 )
#define rUBRDIV0 (
(volatile unsigned int )UBRDIV0 )
#define rUDIVSLOT0 (
(volatile unsigned int )UDIVSLOT0 )
#define rUTRSTAT0 (
(volatile unsigned int )UTRSTAT0 )
#define rUTXH0 (
(volatile unsigned int )UTXH0 )
#define rURXH0 (
(volatile unsigned int *)URXH0 )

原理图:
在这里插入图片描述
Tx和Rx引脚对应寄存器设置:
在这里插入图片描述

ULCON0:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值