现场总线---串口通信
本前言
有个朋友问我单片机开发常用的现场总线通信技术,这其实是做嵌入式开发的一项基本功,在面试中,许多面试者也会被问到通信和总线相关的知识,在项目中也常常接触到多个模块之间的通信问题,于是我觉得有需要也有必要来总结一下总线通信的有关的知识。
通信的基础概念
什么是通信?
通信是发送者通过某种媒体以某种格式来传递信息到收信者以达致某个目的。广义上,任何信息的交通都是通信,狭义上的通信专指以电为载体进行的信息交流,所以很多时候,“通信”与“电信”的含义相近,不特别加以区分。通讯技术拉近了人与人之间的距离,提高了通讯的效率,深刻的改变了人类的沟通方式。---维基百科
这维基百科一大段的解释说实话让人发晕,说白了,通信就是发送者发送信息给接受者这一过程。
在历史上通信经历的许多的发展。比如以下几种古老的通信:
狼烟:
电报:(妹子挺好看)
飞鸽传书:
随着通信技术的发展,电子通信成为了目前通信的主流方式。
在通信最重要的两个方面:信息的表示(信息的解析方法)和信息传输方式,由于本篇文章主要说明串口的一种通信,所以主要后面围绕着串口进行展开。
对于电子通信的方式还可以分为并行通信和串行通信两种方式
数据各个位传输 | 数据按位顺序传输 | |
速度快 | 占用引脚的资源少 | |
占用引脚的资源多 | 速度相对慢 |
串行通信的分类
- 单工:数据传输只运行一个方向上传输
- 半双工:允许数据在两个方向进行传输,但是在某一时刻只允许数据一个方向进行传输,在本质就是一种可以切换方向的单工通信,不需要单独的接收端和发射端,两者可以合并成一个端,在需要选择发送或者接收。
- 全双工:允许数据在两个方向进行发送和接受。并且可以同时(这就是和半双工最大的区别)接受或者发送,由于可以同时的接收和发送数据,所以需要一个接受端和一个发送端。
用人来比喻就是,单工就是看电视,只能让电视里给你发送信息。半双工就是1V1的回合制辩论赛,而全双工就是街头自由式的吵架。
下面为单工,半双工和全双工的发送和接受的框图:
由于串口通信是可以同时接收数据和发送数据,所以串口协议是一种全双工的通信方式。
串口的通信协议
串口的通信的方式主要有以下几种位域组成
起始位:
在没有数据发送时,数据线的逻辑处于”1“状态;这个时候先发送一个”0“信号表示开始进行字符的传输。
数据位:
紧接的是起始位后,资料位的个数可能是4、5、6、7等构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
奇偶校验位:
在数据位后面加上这一位进行简单的校验效果,但是实际来说校验的意义不是很大。一般使用为奇校验或者偶校验,奇校验就是当让传输的数据(包括校验位)中的1的个数为奇数。偶校验就是使得传输的数据(包括校验位)中1的个数为偶数。
停止位:
停止位作为一个字符的结束标志,停止位可能时1位、1.5位和2位的高电平,由于在通信的过程中 两台设备之间会出现时间的偏差造成不同步。因此停止位不仅仅可以表示传输的结束,并且提供了计算机校正的时钟同步的机会。换句话说如果停止位越高,可以对时钟不同步的容忍程度越大,但是数据传输的效率也会变慢。
波特率:
波特率表示每秒可以传输的码元符号的个数,是衡量数据传送速率的指标,常用的波特率有9600,11500
时间间隔和波特率之间的关系,1s处于波特率可以计算间隔时间,例如,波特率为9600的时间间隔为1s / 9600(波特率) = 104us。
UART功能说明
接口通过三个引脚从外部连接到其他的设备。对于uart双向通信都需要连接两个引脚:接受数据的引脚(RX)和发送数据的引脚(TX):
RX: 接收数据的输入引脚也就是串行数据输入引脚。
TX: 发送数据的输出引脚
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)