关于串口通信

news/2024/11/30 6:02:35/

串口通信在嵌入式领域使用非常广泛,如3G、4G、5G、NB-iot、Lora等几乎都是。因此,做嵌入式开发人员很有必要学习一下。

首先要了解计算机的通信方式,通过硬件发出的高、低电平,计算机处理0、1数字信号,完成通信。

一、串口通信介绍

1、串口接头

常用的串口接头有两种,一种是9针串口(简称DB-9),其中三根(GND(地线)、TXD(输出)、RXD(输入))非常重要,其他六根一般是用来做流控的,而我们平常的测试中一般用不上。还有一种是25针串口(简称DB-25)

如图,带针状的是公头,带孔状的是母头。购买串口接头的时候需要注意自己需要的是公还是木哦

2、串口通信连线

串口通信最少通过两根线(GND和信号线)就可以完成单工通信。大多数的串口通信都是三根线(GND、RXD、TXD)来实现的双工通信。

3、串口通信的方式通常为异步串行通信

关于异步和同步通信:

同步通信:有时钟,如SPI,I2C通信

异步通信:无时钟,如UART

关于串行和并行:

串口通信即可以实现半双工,也可以实现全双工

单工:数据传输只支持数据在一个方向上传输

半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输

全双工:允许数据同时在两个方向上传输

4.串口通信电平

串口通信电平中,常用的便是TTL电平和RS232电平。电平信号是用信号线减去参考线(GND)电平得到的电压差,这个电压差决定了传输值是1还是0。电平信号中多少V代表1或0是不固定的,取决于电平标准。

TTL是MUC或芯片电平,高电平时5V(51单片机)或3.3V(ARM)表示1,低电平表示0;

RS232电平时用-15V~-3V表示1,+3V~+15V表示0;

显然,TTL电平能接收的误差范围很小,适合近距离且干扰小的情况,如开发板芯片到芯片之间、开发板与串口模块之间的短距离串口通信而设备与设备之间的长距离通信,因为降压和信号干扰等原因通常会用RS232电平进行通信,但通信距离也一般小于15米。

二、串口通信协议(UART)

1、UART

(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器,在UART通信中,发送端的UART将来自控制设备(如CPU)的并行数据转换为串行数据,以串行方式将其发送到接收端的UART,然后由接收端的UART将串行数据转换为并行数据以用于接收设备的正常处理。

2、UART数据包

每个数据包包含1个起始位,5~9个数据位(设置校验位时,最多8个数据位;没设置校验位时,校验位也算一个数据位,故最多9个数据位),一个可选的奇偶校验位以及1个或2个停止位,如下图:

起始位:

表示要发送一个通信单元,UART数据传输线通常在不传输数据时保持在高电平。为了开始数据传输,发送端UART在一个时钟周期内将传输线从高电平拉低到低电平。此时接收端UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据位中的每一位数据。

数据位:一个通信单元的有效信息位,本次通信要发的有效数据,一次发送多少位是由串口编程设定的,一般选8位,因为ASCII码中一个字符刚好编码为8位。

校验位:

校验数据位,防止数据为出错。常用的两种校验方式是奇校验和偶校验。

奇校验:保证1的个数为奇数,如3位数据传输中1的个数为偶数,则校验位为1

偶校验:保证1的个数为偶数,如3位数据传输中1的个数为偶数,则校验位为0

以011的奇偶校验为例:

 停止位:

发送方用来表示本通信单元结束的标志,停止位的位数也是由串口编程设定的,由通信线上的电平变化来反映(从低电压驱动到高电压)。常用的有1、1.5或2位停止位,一般用1位。

波特率:

波特率是串口数据的传输速度,即Bit/s,常见的波特率有:9600,19200,38400,57600,115200等。因为串口通信是一种异步通信,没有同步时钟信号来规约一个bit的数据发送电平维持多长时间。因此,收发双方的速率必须保持一致来同步收发数据,否则会出现乱码或完全接收不到数据的情况。

3、UART优缺点

优点

两条数据线就能通信;异步通信,无需时钟信号;有奇偶校验位,方便通信的差错检查;接收端和发送端设置好数据包结构,即可稳定通信;

缺点

数据帧最大支持9位数据;不支持多主机或多从机的主从系统(如I2C);

4、串口通信总结

串口通信是异步通信,因此通信双方必须事先约定好通信参数。这些通信参数包括:数据位、校检位、停止位、波特率,这些参数都不能设置错误,否则都会导致通信失败。如波特率调错了,发送方发送数据没问题,接收方能接收到数据,但是会乱码。

三、串口编程

关于串口编程及封装的具体代码实现,可移步Linux串口编程及封装_Troye .的博客-CSDN博客_linux 串口封装


http://www.ppmy.cn/news/252065.html

相关文章

查看串口设备

linux查看所有串口和usb设备方法 1、查看串口是否可用 可以对串口发送数据比如对com1口,echo /dev/ttyS0 2、查看串口名称使用 ls -l /dev/ttyS* 一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS*,一般ttyS0对应com1&…

USB转串口设备如何固定串口号

使用USB转串口设备或多个USB转串口设备级联扩展多串口时,会经常遇到USB设备插拔顺序不固定、插入的USB主机口位置不固定、系统重新开机等操作导致设备对应串口号发生改变,影响产品使用的情况。 Windows系统固定串口号 在Windows系统上对于此需求推荐使…

第十九节 串口通讯与终端设备

本章主要讲解串口和终端设备的基本使用,并且通过这个过程解构如何使用ioctl 系统调用向设备文件写入特别的命令,控制硬件。我们需要熟悉ioctl 的使用,是因为在后面编写驱动时,某些硬件需要向内核提供ioctl 所需的操作方法。 串口…

linux查看所有串口和usb设备方法

1、查看串口是否可用 可以对串口发送数据比如对com1口,echo /dev/ttyS0 2、查看串口名称使用 ls -l /dev/ttyS* 一般情况下串口的名称全部在dev下面,如果你没有外插串口卡的话默认是dev下的ttyS*,一般ttyS0对应com1,ttyS1对应com2&#xff…

图文直播功能(互动功能接收端JS-SDK)

图文直播 功能概述 图文直播,即用直播画面与说明文字的形式,以时间轴方式完整详细地记录整场活动/课堂。 当用户错过直播的开始时间,中途进入直播,可通过图文直播的记录对错过的直播进行回顾了解,实现直播信息的有效…

基于jupyter的轮廓检测及功能

文章目录 一、实验介绍二、实验步骤三、实验任务任务一:轮廓特征练习一: 找到每个轮廓的方向任务二:边界矩形练习二: 围绕轮廓裁剪图像 总结 一、实验介绍 1. 实验内容 本实验将学习轮廓检测及功能。 2. 实验要点 生成二进制图像来查找轮廓找到并画出…

Day_44希尔排序

目录 一. 关于希尔排序 二. 希尔排序的实现过程 三. 希尔排序的代码实现 1. 核心代码 2. 修改后的代码 四. 代码展示 五. 数据测试 六. 总结与反思 一. 关于希尔排序 希尔排序按其设计者希尔(Donald Shell)的名字命名,该算法由希尔在 19…

PAT A1013 Battle Over Cities

1013 Battle Over Cities 分数 25 作者 CHEN, Yue 单位 浙江大学 It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We must know immediately …