嵌入式学习笔记(26)5S5PV210串行通信编程实战

嵌入式学习笔记(26)5S5PV210串行通信编程实战_第1张图片

5.5.1整个流程分析

整个串口通信相关程序包含2部分:uart_init负责初始化串口,uart_putc负责发送一个字节

5.5.2串口初始化关键步骤

(1)初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Tx和Rx分别对应GPA0_1和GPA0_0)

(2)GPA0CON(0xE0200000),bit[3:0] = 0b0010 bit[7:4] = 0b0010

(3)初始化这几个关键寄存器UCON0 ULCONO UMCON0 UFCON0 UBRDIV0 UDIVSLOT0

5.5.3主要的几个寄存器

(1)ULCON0 = 0x3 //0校验位、8数据位、1停止位

(2)UCON = 0x5 //发送和接收都是polling mode

(3)UMCON0 = 0x0 //禁止modem、afc

(4)UFCON0 = 0x0 //禁止FIFO模式

(5)UBRDIV0和UDIVSLOT0和波特率有关,要根据公式去算

嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击这里扫码进群领资料,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!

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

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

5.5.5串口Tx、Rx对应的GPIO的初始化

给GPA0CON的相应bit位赋值为相应值,用C语言位操作来完成。

5.5.6 UCON、ULCON、UMCON、UFCON等主要控制寄存器赋值

5.5.7波特率的计算和设置

(1)第一步,用PCLK_PSYS和目标波特率去计算DIV_VAL

DIV_VAL = (PCLK / (bps x 16)) - 1

(2)第二步,UBRDIV0寄存器中写入DIV_VAL的整数部分

(3)第三步,用小数部分*16得到1的个数,查表得UBDIVSLOT0寄存器的设置值

5.5.8串口发送和接收函数的编写

写发送函数,主要发送前要用while循环等待发送缓冲区为空才能发送。

5.5.9综合调试:注意Makefile的修改

你可能感兴趣的:(嵌入式学习笔记,编程,嵌入式,单片机,嵌入式硬件,嵌入式实时数据库)