嵌入式arm(四)arm的UART串口知识与裸机编程

使用开发板:FS4412,Soc:Exynos4412,内核型号:cortex-A9,架构:armv7;
文档:开发板原理图,Soc数据手册;
环境:文件编写及编译:Linux;下载程序:超级终端hypertrm;串口下载
编译器:交叉编译器arm

1 UART知识

1.1 概念

Universal Asynchronous Receiver and Transmitter是异步通讯;
本文用的是armv7架构的cortex-A9;

1.2 单工、半双工、全双工

单工:A->B 一根数据线,方向不能改变
半双工:A->B 或者 B->A 一根数据线,方向可以改变
全双工:A->B B->A 两根数据线
在这里插入图片描述

1.3 同步和异步

A–》B一帧数据 下一帧数据什么时候来不知道–》异步
A–》B一帧数据 下一帧数据1s之后到–》同步
简单理解:
有时钟线就是同步,没有时钟线就是异步的
时钟:给各大硬件接口提供工作节拍的,就好比人的心脏
晶振提供基本的时钟,会经过倍频,提供给cpu,又会进行分频,提供给各大硬件接口
在这里插入图片描述

1.4 串口通讯协议
1.4.1 通信协议

通信双方约定好的通信规则,双方在通信时,都需要遵守;
Uart一般用于:开发板《=》开发板通信;开发板《=》pc通信;

1.4.2 串口通讯帧数据格式

Uart通信时的一帧数据=起始位+5-8位的数据段+奇偶校验位+停止位;
停止位的值:1,数据线在不工作的时候默认是高电平;

起始位的值:0,发送方和接收方用的是同一根数据线,这根数据线在空闲的时候是高电平,因为是异步通信,所以什么时候会发数据以及什么时候需要接收数据是不知道的,所以就需要在正式的发送数据之前先通知一下,所以需要发送方先发送一位起始位0,将数据线由高拉低,那么接收方就知道此时发送方给它要发送数据,它就会准备接收数据,接收数据是按照波特率的速度来接收的,也就是如果波特率是115200,那么发送方就会每隔1/115200秒发送一位数据,接收方就会每隔1/115200秒接收一位数据,直到结束,停止位又会将数据线拉高,下一帧数据什么时候要接收,不知道,直到再次数据线被拉低(起始位)又开始接收。
所以:一帧数据和下一帧数据之间是异步的,但是每一帧数据中的每一位又是同步的,所以这种通信方式也叫起止同步式。
在这里插入图片描述

1.5 波特率

别整那些复杂的概念,波特率就是串口每秒钟传输二进制的位数;
比如波特率是9600,那就是一秒传9600个位,那频率就是9600Hz;那你就要拿cpu或UART的时钟频率来分频,分成9600的大小来给UART传输数据用;
别整没用的概念,分频就是除;2分频就是除以2;9分频就是除以9;cpu频率是100mhz,我要4mhz,那就25分频;除就完了;

1.6 Soc中的串口框图

在这里插入图片描述

2 UART裸机编程流程

2.1 整体流程

(1) 设置TXD引脚为串口输出;RXD引脚为串口输入;
(2) 找寄存器设置数据段位数、有无奇偶校验、停止位、发送与接收的处理方式、波特率;
(3) 找到发送与接收寄存器,进行数据的发送与接受;

2.2 看原理图,查引脚

在这里插入图片描述
在这里插入图片描述
查得:
Txd GPA1_1
Rxd GPA1_0
那么GPA1_1需要设置为输出模式;GPA1_0设置为输入模式;

2.3 看数据手册,查寄存器用法
2.3.1 查GPIO

在这里插入图片描述
由图知,只需要将GPA1CON设置为0x22;

2.3.2 查UART相关寄存器

上一张图可以知道使用的是UART2;
在这里插入图片描述
我们要设置一个简单的轮询串口,要用到ULCONn,UCONn,UTRSTATn,UTXHn,RTXHn,UBDIVn,UFRACVALn寄存器;
(1) ULCONn用来设置数据位位数、停止位、奇偶校验、是否红外模式;
(2) UCONn用来设置发送和接收的相应模式是轮询还是中断等;
(3) UTRSTATn寄存器用来在轮询中查询可读/可写状态;
(4) UTXHn,RTXHn用于发送和接收数据;
(5) UBDIVn,UFRACVALn用来设置波特率;
在这里插入图片描述
如图,这个Soc共有5个串口

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值