S5PV210串行通信接口详解1

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

学习地址:www.zhulaoshi.org


 s5pv210串口通信


见数据手册《S5PV210_UM_REV1.1》8.1


串口,也叫UART,英文全称是UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER


下面是我们要讲解的串口原理图

图的最左边是外设总线,peripheral bus

右边是发送器,transmitter,接收器,receiver,

这两个部分是独立的,

都由control unit来控制。


从总线的角度来看,

串口控制器是接在APB总线上的,

以后串口控制器的时钟是以APB总线来计算的。


发送器transmitter有发送缓冲区和发送移位器组成,

首先将信息进行编码成二进制流,

然后将一帧数据写入发送缓冲区,以后程序就不用管了,

剩下的发送部分是硬件自动的,

发送移位器会自动从发送缓冲区中读取一帧数据,

然后自动移位,

移位的目的就是将一帧数据的各个位分别拿出来,

将其发送到我们的TX通信线上。

S5PV210串行通信接口详解1_第1张图片


receiver由接收缓冲区和接收移位器组成,

当有人通过串口向我发送信息时,

信息通过RX通信线进入我的接收移位器,

然后接收移位器自动移位将该二进制保存入我的接收缓冲区,

接收完一帧数据后receiver会产生一个中断给CPU,

CPU接收到中断后就知道receiver接收满一帧数据了,就会回来读取这帧数据。


总结下:

发送缓冲区和接收缓冲区是关键,

发送移位器和接收移位器的工作都是自动的,不用编程控制的,

所以我们写串口的代码就是:

首先初始化好串口控制器,

然后要发送数据时,直接写入发送缓冲区,

而要接收数据时,直接去接收缓冲区读取即可。

可见串口底层的工作,

比如串口怎么移位的,

起始位怎么定义的,

TTL电平还是RS232电平等,

都程序员是隐藏的,程序员不用管,

软件工程师对串口操作的接口就是,

发送/接收缓冲区,其实质就是寄存器,

又因为IO与内存统一编址,操作方式就是读写内存。

ps:初始化串口的实质就是读写寄存器


串口控制器中有一个波特率发生器,

作用是产生串口发送/接收的节拍时钟,

波特率发生器作用于我们的移位器,

它告诉其多长时间动一次,

它的节拍从哪里来的呢?

其实就是个时钟分频器,

它的工作需要源时钟,

从APB总线来,

然后内部将源时钟分频(软件设置寄存器来配置)得到目标时钟,

然后再用这个目标时钟产生波特率(这个过程是硬件自动完成的)。


我们以后编程要做的就是,初始化,收发。


自动流控(AFC:auto flow control)

流控线:接收方来不及接收,就把流控线拉低,

发送方看见流控线被拉低,就会地址发送,

接收方接收完毕,就拉高流控线,

发送方就会继续发送。


流控让串口通信非常可靠,
不过现在基本已经不用了,更多是用来输出调试信息的。
现在的硬件速率已经远远高于串口速率了,所以流控基本没什么用了。

你可能感兴趣的:(ARM裸机)