1.7.ARM裸机第七部分-串口通信详解

本文详细介绍了串口通信的基础概念,包括同步通信、异步通信、电平信号、串行接口与并行接口。深入讲解了串口通信的波特率、起始位、数据位、奇偶校验位和停止位等关键参数。此外,还探讨了S5PV210处理器的串行通信接口,包括FIFO、DMA模式和IrDA模式,以及串口控制器的中断设计和时钟设置。最后,文章提供了S5PV210串口通信的编程实战,包括初始化步骤、波特率计算和stdio移植过程,以及烧录过程中遇到的问题与解决方案。
摘要由CSDN通过智能技术生成

1.7.1.通信涉及的几个基础概念

1.7.1.1、通信的发展历史

(1)、最早通信:烽火台、狼烟;信件;电子通信(电报、电话、网络信号)


(2)、通信中最重要的两个方面:信息表示、解析方法 + 信息的传输方法


(3)、通信双方事先需要约定好信息的表示方法和解析方法,做到一致,否则信息不能有效传递


(4)、信号的传输方法是指经过编码后的通信信息如何在传输介质上传输的过程。


总结:通信过程其实分为3个步骤:首先发送方先按照信息编码方式对有效信息进行编码(编程成可以在通信线路上传输的信号形态),然后编码后的信息在传输介质上进行传输,输送给接收方;最后接收方接收到编码信息后进行解码,解码后得到可以理解的有效信息。


1.7.1.2、电子通信概念1:同步通信和异步通信

(1)、同步和异步的区别:首先很多地方都有同步和异步的概念,简单来说就是发送方和接收方按照同一个时钟节拍工作就叫同步,发送方和接收方没有统一的时钟节拍、而各自按照自己的节拍工作就叫异步。


(2)、同步通信中,通信双方按照统一节拍工作,所以配合很好;一般需要发送方给接收方发送信息同时发送时钟信号,接收方根据发送方给它的时钟信号来安排自己的节奏。同步通信用在通信双方信息交换频率固定,或者经常通信时。


(3)、异步通信又叫异步通知。在双方通信的频率不固定时(有时3ms收发一次,有时3天才收发一次)不适合使用同步通信,而适合异步通信。异步通信时接收方不必一直在意发送方,发送方需要发送信息时会首先给接收方一个信息开始的起始信号,接收方接收到起始信号后就认为后面紧跟着的就是有效信息,才会开始注意接收信息,直到收到发送方发过来的结束标志。


1.7.1.3、电子通信概念2:电平信号和差分信号

(1)、电平信号和差分信号是用来描述通信线路传输方式的。也就是说如何在通信线路上表达1和0.


(2)、电平信号的传输线中有一个参考电平线(一般是GND),然后信号线上的信号值是由信号线电平和参考电平线的电压差决定。


(3)、差分信号的传输线中 没有参考电平,所有都是信号线。然后1和0的表达靠信号线之间的电压差。

总结:电平信号的2根通信线之间的电平差异容易受到干扰,传输容易失败;差分信号不容易受到干扰因此传输质量比较稳定,现代通信一般都使用差分信号,电平信号几乎没有了。


总结2:看起来似乎相同根数的通信线下,电平信号要比差分信号要快;但是实际还是差分信号快,因为差分信号抗干扰能力强,因此1个发送周期更短。


1.7.1.4、电子通信概念3:并行接口和串行接口

(1)、串行、并行主要是考虑通信线的根数,就是发送方和接收方同时可以传递的信息量的多少


(2)、譬如在电平信号下,1根参考电平线+1根信号线可以传递1位二进制;如果我们有3根线(2根信号线+1根参考线)就可以同时发送2位二进制;如果想同时发送8位二进制就需要9根线。


(3)、在差分信号下,2根线(彼此差分)可以同时发送1位二进制;如果需要同时发送8位二进制,需要16根线。
总结:听起来似乎并行接口比串行接口要快(串行接口一次只能发送1位二进制,而并行接口一次可以发送多位二进制)要更优秀;但是实际上串行接口才是王道,用的比较广。因为更省信号线,而且对传输线的要求更低、成本更低;而且串行时可以通过提高通信速度来提高总体通信性能,不一定非得要并行。

总结:其实这么多年发展,最终胜出的是:异步、串行、差分,譬如USB和网络通信。

1.7.2.串口通信的基本概念

1.7.2.1、串口通信的特点:异步、电平信号、串行

(1)、异步:串口通信的发送方和接收方之间是没有统一的时钟信号的。


(2)、电平信号:串口通信出现的时间较早,速率较低,传输的距离较近,所以干扰还不太明显,因此当时使用了电平信号传输。后期出现的传输协议都改成差分信号传输了。

(3)、串行通信:串口通信每次同时只能传输1个二进制位。


1.7.2.2、RS232电平和TTL电平

(1)电平信号是用信号线电平减去参考线电平得到电压差,这个电压差决定了传输值是1还是0.


(2)在电平信号时多少V代表1,多少V代表0不是固定的,取决于电平标准。譬如RS232电平中-3V~-15V表示1;+3~+15V表示0;TTL电平则是+5V表示1,0V表示0.


(3)不管哪种电平都是为了在传输线上表示1和0.区别在于适用的环境和条件不同。RS232的电平定义比较大,适合干扰大、距离远的情况;TTL电平电压范围小,适合距离近且干扰小的情况。


(4)我们台式电脑后面的串口插座就是RS232接口的,在工业上用串口时都用这个,传输距离小于15米;TTL电平一般用在电路板内部两个芯片之间。


(5)对编程来说,RS232电平传输还是TTL电平是没有差异的。所以电平标准对硬件工程师更有意义,而软件工程师只要略懂即可。(把TTL电平和RS232电平混接是不可以的)


1.7.2.3、波特率

(1)波特率(bandrate),指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位。譬如每秒种可以传输9600个二进制位(传输一个二进制位需要的时间是1/9600秒,也就是104us),波特率就是9600.


(2)串口通信的波特率不能随意设定,而应该在一些值中去选择。一般最常见的波特率是9600或者115200(低端单片机如51常用9600,高端单片机和嵌入式SoC一般用115200)

.为什么波特率不可以随便指定?主要是因为:第一,通信双方必须事先设定相同的波特率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值