ARM专题:串口通信的一些基本概念和原理


1、RS232电平和TTL电平


01 RS232电平

概念:个人计算机上的通讯接口之一,由电子工业协会所制定的异步传输标准接口

常见:RS-232 接口常以9个引脚(DB9) 或25个引脚 (DB25) 的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。

电平标准:
逻辑1(MARK)=-3V~-15V
逻辑0(SPACE)=+3~+15V

补充:
01 DB9接口是串口通信早期常用的一种规范化接口。那时计算机都有标准配置的串口以实现和外部通信,那时定义了一套标准的串口规约,DB9接口就是标准接口。
02 DB9接口中有9根通信线,其中3根很重要,为GND、Tx、Rx,必不可少,剩余6根都和流控有关,现代我们使用串口都是用来做调试一般都禁用流控,所以这6根没用。
03 一般使用串口时要记得把流控禁止掉,不然可能发生意想不到的问题,例如在SecureCRT软件中,使用串行通信的时候,默认可能勾选了RTS/CTS流控项,需要关掉


02 TTL电平

概念:规定,+5V等价于逻辑“1”,0V等价于逻辑“0”这样的数据通信及电平规定方式,被称做TTL。

电平标准:
逻辑1(MARK)=+5V
逻辑0(SPACE)=0V


2、波特率

概念:串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位。

例如:每秒种可以传输9600个二进制位(传输一个二进制位需要的时间是1/9600秒,也就是104us),波特率就是9600

备注:
01 串口通信的波特率不能随意设定,应该在一些值中去选择。
02 一般最常见的波特率是9600或者115200(低端单片机如51常用9600,高端单片机和嵌入式SoC一般用115200)。
03 为什么波特率不可以随便指定?
第一,通信双方必须事先设定相同的波特率这样才能成功通信,如果发送方和接收方按照不同的波特率通信则根本收不到,因此波特率最好是大家熟知的而不是随意指定的
第二,常用的波特率经过长久发展,就形成了共识,大家常用就是9600或者115200。


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

串口通信时,收发是按周期进行的,每周期传输n个二进制位。这一个周期就叫做一个通信单元,一个通信单元是由:起始位+数据位+奇偶校验位+停止位组成(是按顺序发送和接收的)。


01 起始位

概念:表示发送方要开始发送一个通信单元

备注:起始位的定义是串口通信标准事先指定的,是由通信线上的电平变化来反映的,比如电平由低变高等。以前写单片机的代码经常需要用GPIO来模拟这个串口电平变化,来发送起始位。


02 数据位

概念:表示一个通讯单元中发送的有效信息位。

备注:
01 数据位是本次通信真正要发送的有效数据,串口通信一次发送多少位有效数据是可以设定的。
02 一般可选的有6、7、8、9,99%情况下我们都是选择8位数据位。因为我们一般通过串口发送的文字信息都是ASCII码编码的,而ASCII码中一个字符刚好编码为8位。


03 奇偶校验位

概念:是用来校验数据位的,防止数据位出错。

备注:
01 奇偶校验是把待校验的有效数据逐个位的加起来,总和为奇数奇偶校验位就为1,总和为偶数奇偶校验位就为0(可能是反的),可以在一定程度上防止位反转。
02 一般是不会发生问题的,概率极小,这个手段仅仅是再进行一下保护。


04 停止位

概念:是发送方用来表示本通讯单元结束的标志的。

备注:停止位是串口通信标准事先指定的,是由通信线上的电平变化来反映的。常见的有1位停止位,1.5位停止位,2位停止位等。99%情况下都是用1位停止位


4、串口通信基本原理


01 通讯线

说明:串口通信是有线通信,是通过串口线来通信的。

备注:
01 串口通信线最少需要2根(GND和信号线),可以实现单工通信,也可以使用3根通信线(Tx、Rx、GND)来实现全双工。
02 一般开发板都会引出SoC上串口引脚直接输出的TTL电平的串口(X210开发板没有),插座用插针式插座,每个串口引出的都有3个线(Tx、Rx、GND),可以用这些插座直接连接外部的TTL电平的串口设备。

补充:
01 单工就是单方向,双工就是双方同时收发,同时只能单方向但方向可以改变叫半双工。
02 如果只能A发B收则单工,A发B收或者B发A收(两个方向不能同时)叫半双工,A发B收同时B发A收叫全双工。


02 通讯参数

说明:串口通信属于基层基本性的通信规约,本身不会去协商通信参数,需要通信前通信双方事先约定好通信参数。

备注:一般4个最重要的:波特率、数据位、奇偶校验位和停止位。


03 二进制流在信道上传输

说明:串口通信的发送方每隔一定时间(时间固定为1/波特率,单位是秒)将有效信息(1或者0)放到通信线上去,逐个二进制位的进行发送。

备注:
01 接收方通过定时(起始时间由读到起始位标志开始,间隔时间由波特率决定)读取通信线上的电平,来区分发送的是1还是0。
02 依次读取数据位、奇偶校验位、停止位,停止位就表示这一个通信单元(帧)结束,然后中间是不定长短的非通信时间(发送方有可能紧接着就发送第二帧,也可能半天都不发第二帧,这就叫异步通信),下来就是第二帧·····

在这里插入图片描述


5、小结

01 串口通信时是异步通信,通信双方必须事先约定好通信参数,这些通信参数包括:波特率、数据位、奇偶校验位、停止位(串口通信中起始位定义是唯一的,所以一般不用选择)。

02 波特率非常重要,波特率错了整个通信就乱套了;数据位、奇偶校验位、停止位也很重要,否则可能认不清数据

03 通过串口不管发数字、还是文本还是命令还是什么,都要先对发送内容进行编码,编码成二进制再进行逐个位的发送。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学不懂啊阿田

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值