1.7.7.S5PV210串行通信编程实战1

1.7.7.1、整个程序流程分析
(1)整个串口通信相关程序包含2部分:uart_init负责初始化串口,uart_putc负责发送一个字节
1.7.7.2、串口控制器初始化关键步骤
(1)初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Rx和Rx分别对应GPA0_1和GPA0_0)
(2)GPA0CON(0xE0200000),bit[3:0] = 0b0010 bit[7:4] = 0b0010
(3)初始化这几个关键寄存器UCON0 ULCON0 UMCON0 UFCON0 UBRDIV0 UDIVSLOT0
1.7.7.3、主要的几个寄存器
(1)ULCON0 = 0x3 // 0校验位、8数据位、1停止位
(2)UCON = 0x5 // 发送和接收都是polling mode
(3)UMCON0 = 0x0 // 禁止modem、afc
(4)UFCON0 = 0x0 // 禁止FIFO模式
(5)UBRDIV0和UDIVSLOT0和波特率有关,要根据公式去算的


1.7.7.4、在C源文件中定义访问寄存器的宏

定义好了访问寄存器的宏之后,将来写代码时直接使用即可。


《朱老师物联网大讲堂》学习笔记

学习地址:www.zhulaoshi.org


代码是在上次的基础上增加

添加了main.c和uart.c

注意修改start.S和Makefile文件,

在start.S中调用main函数,main函数中调用uart.c中的串口初始化和输出函数,


这节课还是看看寄存器为主,只是引子,看一个就可以,







串口初始化的关键步骤:

1.初始化TX和RX引脚所对应的GPIO,它们分别对应GPA0_1和GPA0_0,



2.GPA0CON(0xE020_0000),bit【0~3】 = 0b0010 bit【4:7】 = 0b0010



3.接下来是几个关键性的寄存器

UCON0 ULCON0 UMCON0 UFCON0 UBRDIV0 UDIVSLOTO

ULCONn
31~7 保留
6 红外相关
5~3 奇偶校验,暂时不用
2 使用1bit来设置
1~0  数据位长度




UCONn
31~21保留
20没用到DMA,随便设
19~17保留
16没用到DMA,随便设
15~11保留
10选用0,也就是PCLK
9中断,暂时不用
8中断,暂时不用
7FIFO暂时没用
6中断,暂时没用
5LOOP_BACK,回环,也就是用来测试自己,可以不用
4不知道有什么用
3~2设置01,使用轮询
1~001,设置轮询






UMCONn
全都设置为0




UFCON0
FIFO相关的,可以不用


UBRDIVn和UDIVSLOTn和波特率有关,后面根据公式去算。


这些寄存器都熟悉了以后,我们要进行相关宏的定义

#define UTRSTAT00xE2900010
#define UTXH0 0xE2900020
#define URXH0 0xE2900024


#define rUTRSTAT0(*(volatile unsigned int *)UTRSTAT0)
#define rUTXH0(*(volatile unsigned int *)UTXH0)
#define rURXH0(*(volatile unsigned int *)URXH0)










































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值