ARM芯片(S5PV210芯片)——串口通信详解

发布者:正在搬砖的河马71最新更新时间:2022-08-01 来源: csdn关键字:ARM芯片  S5PV210芯片  串口通信 手机看文章 扫描二维码
随时随地手机看文章

1、电子通信的基本概念

1.1、同步通信和异步通信

1.同步通信:通信双方有统一的工作节拍,一般需要发送方给接收方发送信息的同时发送时钟信号,接收方根据发送方给它的时钟信号来安排自己的工作节奏。同步通信用在通信双方信息交换频率固定,或者通信频率比较高的场景。

2.异步通信:又叫异步通知,简单来说就是发送方不必考虑接收方,想发信息就发信息,没有固定的工作节拍。但是需要遵循一定的通信协议,比如发送方发送信息时,需要先发起始位通知接收方,然后发送数据,数据发送完成要发结束位表示一帧数据发送完成。

区别:

(1)同步通信有统一工作节拍,异步通信没有统一工作节拍。一般来说,同步通信的连接线里有一根是时钟信号线。

(2)同步通信适合通信频率固定或者通信频率较高的场景;异步通信适合通信频率不固定或者通信频率较低的场景。


1.2、电平信号和差分信号

1.电平信号:电平信号有一根是参考电平线,信号线的信号值有信号线和参考电平线之间的电压差决定;

2.差分信号:差分信号没有参考电平线,传输一路数据需要两根信号线,信号线的信号值由两根信号线的电压差决定。

区别:

(1)信号值的表示不同:电平信号的信号值是信号线和参考电平线的电压差决定;差分信号的信息值是由两条信号线的电压差决定;

(2)传输相同路数的信号,电平信号用的数据线根数比差分信号少。比如传输3路信号,电平信号需要1根参考电平+3根数据线;而差分信号需要2x3=6根数据线;

(3)现在通信大部分是差分信号,因为差分信号的抗干扰性更强,可以在更短的周期传输一个数据。


1.3、并行接口和串行接口

并行接口:一次可以发送过个bit位数据。

串行接口:一次只能发送一个bit位数据。

区别:

(1)并行接口和串行接口一次发送的bit位不相同,串行一次只能发一个bit数据,并行接口可以一次发多位bit数据;

(2)并行接口的抗干扰性比串行接口差,虽然并行接口一次发送的数据位比串行接口多,但是因为抗干扰性差的原因,并行接口的发送频率不能很高,串行接口的通信速率是可能比并行接口更快的;

(3)串行接口比并行接口更省信号线;


1.4、单工通信、双工通信、半双共通信

单工通信:只能单向发送消息,只能A向B发消息,B不能向A发消息;

双工通信:A和B可以互相发消息,并且互不排斥,可以同时给对方发消息;

半双工通信:A和B可以互相发消息,但是同一时间只能一方发消息,另一方收消息,算是单工通信和双工通信的结合体;


2、串口通信介绍

2.1、串口通信的特点

串口通信:异步、电平信号、串行、双工。

异步:串口的接收方和发送方没有统一的时钟信号;

电平信号:串口通信出现比较早,传输的距离比较近,所有用的电平信号。后期出现的通信协议,都改成了差分信号;

串行:每次只能传输一个二进制位;

双工:通信双方可以同时接收和发送信号。


2.2、波特率

指的就是串口的通信速率,也就是串口每秒能传输多少个二进制位。比如常用的波特率115200,也就是指串口每秒发送115200个二进制位。接收和发送必须使用相同的波特率,不然会通信紊乱,导致不能正常收发数据。


2.3、起始位、数据位、奇偶校验位、停止位

(1)起始位:接收方收到该数据位就表示发送方马上要发送数据了;

(2)数据位:本次传输周期里要传输的有效数据,可配置;

(3)奇偶校验位:防止数据出错的,可配置;

(4)停止位:表示本次传输周期结束,可配置;

总结:串口通信时,是以周期为单位进行收发数据的,既然是周期性的收发数据,那就要规定好周期的开启和结束,也就是要提前商量好通信协议,上面的位定义就是通信

协议,在建立串口通信时要收发双方配置一致;


2.4、通信线:Rx、Tx、GND

(1)Rx、Tx、GND是串口的通信线,Rx是接收数据的信号线,Tx是发送数据的信号线,GND是参考电平线,串口是全双工通信;

(2)通信线的解法:发送方Rx–接收方Tx、发送方Tx–接收方Rx、发送方GND–接收方GND。


2.5、DB9接口、USB转串口、4脚接口

(1)DB9接口:串口通信早期比较常用的规范化接口,有9根线,其中就包括Rx、Tx、GND,其余的6根线和流控有关。现在的串口通信一般都没有

用流控,所以这6根线基本没用,现在笔记本电脑上已经没有DB9接口;

(2)4脚接口:现在的嵌入式设备上大多也没有DB9接口,但是会引出来一个4脚的串口来输出信息,方便调试。4脚串口就是在原来Rx、Tx、GND的基础上,多了一根电源正极线。4脚的串口通常会会通过一个电路板来转成DB9接口来对外通信;

(3)USB转串口:现在的电脑可能没有DB9接口,所以要使用USB转串口线来连接开发板;


2.6、自动流控(AFC:Auto flow control)

自动流控和串口安全通信有关的,因为串口在早期是作为设备间数据交互的通路,必须确保通信数据的正确性。但是在现在串口大多作为打印信息输出,并且通信速度也不快,就取消了自动流控。自动流控的细节就不讲了,反正现在也用不上,在建立串口通信时记得把自动流控取消掉,就是不要勾选RTS/CTS。


3、串口工作原理框图

在这里插入图片描述

(1)时钟总线:串口属于低速外设,挂载在PCLK_PSYS(Peripheral BUS)时钟线上;

(2)组成:控制单元(control unit)、波特率发生器(Buad-rate Generator)、发送缓冲寄存器(Transmit Buffer Register)、发送移位器(Transmit Shifter)、

接收缓冲寄存器(Receive Buffer Register)、接收移位器(Receive Register);

(3)控制单元:控制整个串口的通信过程,什么时候发数据,什么时候收数据;

(4)波特率发生器:产生串口通信需要的波特率,和时钟频率有关,需要配置;

(5)发送缓冲寄存器:把要发送的数据写到发送缓冲寄存器;

(6)发送移位器:把发送缓冲寄存器里的数据一位一位的发送到数据线上,这是硬件自动的;

(7)接收缓冲寄存器:保存接收到的数据;

(8)接收移位器:把数据线上接收到的数据一位一位的写到接收缓冲寄存器里;


4、串行通信模式

4.1、FIFO模式

普通模式下串口只有一个发送缓冲寄存器和一个接收缓冲寄存器,CPU要不断切换上下文去处理串口通信,这会导致效率低下,浪费CPU的性能。FIFO模式就是扩大缓冲寄存器的数量,从一个寄存器扩大到64个寄存器。这样以前要一个字节处理一次串口通信变成64个字节才处理一次串口通信,

降低了CPU处理串口通信的频率。这只是在一定程度上解决,当有大量数据要发送时FIFO模式还是不能满足需求,于是就有了DMA模式。(每个串口的FIFO模式扩充的缓冲寄存器数量可能是不同的,有256、64、16,具体看数据手册说明)

补充:

(1)FIFO(First In First Out)其实是一种数据结构的名字,数据按照先进先出的原则进行处理。叫FIFO模式是因为扩大的缓冲区类似FIFO这种数据结构,也是先进先出;

(2)FIFO模式在策略上就不能解决大量数据通信,因为不能无限的扩大缓冲寄存器的数量,在CPU中寄存器是有限且珍贵的;


4.2、DMA模式

DMA(direct memory access)模式是为了解决串口大量数据传输的,DMA模式下缓冲区不再是寄存器,而是划定一块内存用作缓冲区,这样CPU就不用再频繁去处理串口通信。


4.3、IrDA模式

(1)IrDA(Infrared)就是红外线通信,电视机、空调的遥控器就是红外线通信。红外通信是发送方固定间隔向接收方发送红外信号,这和串口通信是类似的,所以可以用串口通信来实现红外通信;

(2)不是每个串口都支持IrDA模式,具体要查数据手册;并且需要外部硬件支持,至少你得有一个红外线的发送、模块吧。


5、串行通信工作模式:轮询模式、中断模式

(1)轮询方式::CPU不断去查询串口控制器的状态位,当缓冲区空/满时就去填充/获取数据。这样比较耗费CPU性能,但是程序简单。

(2)中断模式:当缓冲区空/满时串口控制器会发出中断信号,通知CPU去处理串口缓冲区的数据。这样会降低CPU处理串口的频率,但是需要用到终端,程序要复杂些。

总结:两种方式各有优劣,串口通信是异步的,更契合中断模式,但是轮询方式胜在简单。在uboot阶段的串口通信时,我所接触到的就是使用的轮询模式,因为当uboot

进入到shell界面时,uboot就等着接受指令,CPU也不着急做其他的事情,浪费CPU性能也无所谓。


6、串行控制器的时钟框图

在这里插入图片描述

右边虚线框里是UART的时钟框图,主要包括Clock_Selection、UCLK_Generator、Clock_Selection:可以通过UCON寄存器的10bit位选择时钟来源;UCLK_Generator:对上一步的时钟源进行分频,产生合适的波特率;分频系数需要根据时钟频率和波特率进行计算,将计算好的分频系数填到UBDIV和UDIVSLOT寄存器中。


7、串行通信的配置寄存器

7.1、ULCONn

在这里插入图片描述

配置校验位、数据位、停止位、决定是否用IrDA模式。


7.2、UCONn寄存器

选择是轮询模式还是中断模式、选择时钟来源


7.3、UMCONn寄存器

禁止modem、afc


7.4、UFCONn寄存器

FIFO模式的相关配置


7.5、UBRDIVn寄存器

在这里插入图片描述

UBRDIV寄存器的bit0-bit15保存的是串口时钟的分频系数整数部分;


7.6、UDIVSLOTn寄存器

在这里插入图片描述


UDIVSLOT寄存器的bit0-bit15保存的分频系数的小数部分,但不是直接将小数部分写入,而是要查表来确认写入的值。


7.7、UTXHn寄存器

将要发送的数据写到该寄存器;


7.8、URXHn寄存器

接收到的数据会保存到该寄存器;


8.1、波特率计算

在这里插入图片描述

(1) 分频系数的计算公式:DIV_VAL = (PCLK / (bps x 16)) -1;

(2) 串口的时钟来源是PCLOCK_PSYS=66MHZ,如果要将波特率设置成115200,根据上面的公式可得,DIV_VAL=(66000000/(115200x16)-1)=34.8;

(3) 于是UBRDIVn的值是34,小数部分是0.8,要根据小数来计算UDIVSLOTn的值;


8.2、UDIVSLOTn值计算

在这里插入图片描述

(1)UDIVSLOTn中的值满足关系:UDIVSLOTn中1的个数除以16等于上面计算出的DIV_VAL的小数部分值。

(2)上面计算得小数部分是0.8,于是UDIVSLOTn中1的个数为0.8*16=12(向下取整),查表可知UDIVSLOTn应该填0XDDDD;

(3)按照上面的计算公式,只要知道UBRDIVn中有几个1,UBRDIVn的值在满足条件的情况下是任意的,但是实际却是固定的,需要查表来转换。这是因为这里计算分频系数不是纯数学计算,是要依赖具体的物理器件,物理器件有自己的物理特性,芯片开发工程师很了解,在表格里给了建议值,我们查表即可。

关键字:ARM芯片  S5PV210芯片  串口通信 引用地址:ARM芯片(S5PV210芯片)——串口通信详解

上一篇:ARM芯片开发(S5PV210芯片)——定时器、看门狗、RTC
下一篇:ARM芯片开发(S5PV210芯片)——SD卡启动

推荐阅读最新更新时间:2024-11-10 04:08

51系列单片机之串口通信
单片机的串口通信看起来是很复杂的,主要是因为他用到了更多的寄存器,与前面的知识相比他更具综合能力,写起来考虑的问题自然也变多了.而前面学习过的定时器与中断将是单片机通信的基础. 单片机的中断系统中第4个中断就是串口中断,要进行串口通信首先就要打开CPU总中断EA,还要打开串口通信中断ES,这是串口通信的前堤,而串口通信也跟计时器一样有很多的模式,因此我们还要设置SCON寄存器来指定采用哪一种方式进行通信,而在通信的过程中,我们还要设定通信的波特率,不然的话,单片机是没办法进行采样的,这样也不会得到正确的结果了.我在实验过程中用到的是1号定时器来设定的波特率,用到了计时器方式2,也就是8位自动重装,这样可以简化编程,她的实现思想
[单片机]
关于MSP430单片机串口通信数据丢失问题
研究摸索了接近一个星期,把所遇到的问题写出来以供参考。 最开始看一个官方的串口收发数据的示例,然后自己操作后收发数据老是会丢失一个数据,然后看User’s Guide,取消了函数收发的方法直接用寄存器操作,问题解决。 接下来写一个组帧协议,收发完全正常。但是看上去逻辑思维非常的杂乱不清晰,就想整理一下,就开始写函数,进行函数调用。好了,这下问题又来了,数据又会丢失。 接近一个星期研究,发现不是自己写的代码有问题,是官方示例的波特率配置问题。大家都知道波特率表示每秒钟传送的码元符号的个数,是衡量数据传输速率的指标,它用单位时间内载波调制状态改变的次数来表示。晶振为1MHz波特率为115200,我自己改成了9600,问题解决。如
[单片机]
51单片机GPIO口模拟串口通信
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采集会需要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,但我们知道一般的51系列只提供一个串口,那么另一个串口只能靠程序模拟。 本文所说的模拟串口, 就是利用51的两个输入输出引脚P1.0和P1.1,置1或0分别代表高低电平,也就是串口通信中所说的位,如起始位用低电平,则将其置0,停止位为高电平,则将其置1,各种数据位和校验位则根据情况置1或置0。 以11.0592MHz的晶振为例,通过定时计数器0产生中断信号来模拟串口电平,下面附上具体源
[单片机]
基于LabVIEW串口通信的数据采集串口收录系统设计
可视化编程软件LabVIEW不仅能很轻松地将各种软硬件连接起来,还提供了强大的后续数据处理能力。与传统仪器相比,虚拟仪器提高了仪器资源的可再用性和可移植性,只需在原有基础上作相应改动即可增强它的功能,无需更换硬件设备 。基于此,本文在研究LabVIEW的基础上,开发了基于LabVIEW的串口收录系统,以单片机为核心的硬件部分作为前端数据采集系统,可实现200 kHz的采样速率、16 bit的分辨率,具有采样率高、应用性强等优点。该收录系统将采集数据以曲线方式显示在上位机上,以二进制.dat格式记录,并且可回放记录的数据,这是该系统的创新点。 1 系统总体方案 系统总体方案框图如图1所示,主要由前端数据采集和上位机波形显示记录两大
[测试测量]
LabVIEW串口通信的一个例子-串口"示波器"
很早就想做一个类似的东西了,正好这学期学了LabVIEW,作业就交了这个,基于LabVIEW的 串口示波器 上位机。 1.程序界面: 功能介绍:左边上方串口接收区,下方为串口字符发送区。右方为一个波形图表,在程序内部每次将串口发送过来的数据,以f%格式化,显示在波形图表上。 按钮介绍:从左至右依次,发送按钮;清除计数按钮;打开/关闭串口按钮;清除接收区数据;清除波形图表;保存波形;退出程序。 2.主程序框图: 主程序框图介绍:主程序框图主要由3个状态组成:程序的初始化,程序事件的响应,程序的退出。 状态Init:程序初始化,主要把OpenCom等按钮,串口状态,串口接收字符串,波形图标,TX/RX计数等控件,置为
[测试测量]
LabVIEW<font color='red'>串口通信</font>的一个例子-串口
STC15F2K60S2串口通信程序
//**********************************************//STC15F2K60S2串口通信程序,将串口接受到的数据从串口发出去//采用22.1184M晶振,波特率115200//为方便大家调试,特附该程序的项目工程文件下载地址,下载打开即可调试下载到单片机////*********************************************#include stc15fxxxx.h //调用stc15f系列头文件,下载地址: http://pan.baidu.com/s/1eRUbjLS/*************常量定义****************/#define M
[单片机]
51单片机学习笔记(五)_C51实现单片机串口通信仿真
1、效果图 2、虚拟串口 通过VSPD虚拟串口工具虚拟出两个串口用于通信 VSPD虚拟串口工具下载:http://download.csdn.net/detail/leytton/7565589 3、串口调试 打开两份串口调试工具,第一个打开com1,第二个打开com2,这时在任一串口调试工具发送信息,另一个串口调试工具中能接收到信息 串口调试工具下载:http://download.csdn.net/detail/leytton/7565561 4、Proteus电路设计图 P1串口:属性原件值COMPIM,Physical port为com2,Physical Baud ra
[单片机]
51单片机学习笔记(五)_C51实现单片机<font color='red'>串口通信</font>仿真
51单片机串口通信软件程序集
串口通信的单片机程序 beep bit p3.7 ;蜂鸣器定义 org 00h jmp main org 23h ;串行中断入口地址 jmp com_int ;串行中断服务程序 ;*********** 主程序开始 ******************* org 30h main: mov sp,#30h ;设置堆栈 lcall rest ;初始化 lcall comm ;串口初始化 jmp $ ;原地等待 ; ******
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved