嵌入式系统编程图解(嵌入式学习之串口)

学习嵌入式的同学大多数都会使用串口与电脑通讯,但是你真的了解他的原理吗,你知道他的波特率,停止位,校验位,数据位到底代表什么含义呢?实际应用中我们应该注意他的那些东西来提高通讯的可靠性和稳定性呢,今天我们就来聊一聊最常见的串口通讯。

嵌入式系统编程图解(嵌入式学习之串口)(1)

串口参数-COMMIX软件

串口定义

串行接口简称串口,是指数据一位一位地按照顺序发送,通信电路简单,只需要两根线(TX和RX)就可以实现数据的收发,大大降低了成本,特别适合远距离通讯。

在工业中串口应用非常广泛,如打印机,台式机电脑的显示屏与主机连接,电话机等等。串口通讯过程中的可靠性非常重要,不能因为干扰或者外界因素影响。经常会有客户要求丢包率不能超过千分之一,军工产品不允许超过十万分之一。所以深入了解他的特性就非常重要,下面一一讲解他的特性。

嵌入式系统编程图解(嵌入式学习之串口)(2)

串口的应用

数据格式

串口的数据格式为停止位,校验位,数据位和起始位。

嵌入式系统编程图解(嵌入式学习之串口)(3)

数据帧格式

停止位可选1bits/1.5bits/2bits;校验位可选择为None/Odd/Even/Mark/Space;数据位可选为5bits/6bits/7bits和8bits;由于一个字节有8位,所以我们常见的串口的配置为1bits停止位,None校验和8bits数据位。根据典型配置方式,我们来举个例子看下数据在线上传输过程。

如下,在不传输数据时候,信号位高电平,一旦单片机接收到发送数据指令时候,首先发送起始位,将电平拉低,然后在传输8个数据位,再传输一个停止位高位,表示这一个字节传输结束。单片机也是通过计算停止位和起始位之间的个数来判定这个传输是否正常的。

嵌入式系统编程图解(嵌入式学习之串口)(4)

数据0x55传输过程

波特率

波特率表示在单位时间内,传输位的个数。比如波特率9600bps,表示一秒能传输9600bits;如果按照1个停止位,无校验位和8个数据位来配置,1S最多传输9600/10(1StopBits 8DataBits 1StartBits)个字节,也就是960个字节,这个非常重要,大家需要牢记.。1S中最大传输字节数=波特率/10。如115200bps就是11520字节,以此类推。在示波器上测试停止的频率就是他的波特率。

嵌入式系统编程图解(嵌入式学习之串口)(5)

示波器测试的波特率—传输速率

校验位

对可靠性要求非常苛刻的设备都会带上校验位,来验证传输的数据是否正常;如果传输出错了会重新发送或者做对应处理;分别有如下几种校验方式:

1:even-每个字节传送整个过程中bit为1的个数是偶数

2:odd 每个字节传送整个过程中bit为1的个数是奇数

3:noparity 没有校验位

4:space 校验位总为0

5:mark 校验位总为1

一般的校验都有上述几种,单片机会根据校验位的正确与否决定重发或其他操作,提高通讯的可靠性。

读完我的文章,希望你下次做设计或者查问题时会更加地得心应手,大家有什么想问的可以一起讨论。

问个问题,各位知道UART,RS232,RS485,RS422之间有什么区别吗?一起来我的评论区聊聊吧!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页