串口通信协议--UART、RS-232、RS-485、RS-422
近期学习了单片机及数电相关知识,故决定系统地学习一些通信协议。手边书本仅介绍了串口低速接口的相关协议。
串行通信
是指通过使用一条数据线(需要地线或控制线),将数据一位一位地一次传输,每一位数据占据一个固定的时间长度。
特点:抗干扰,节省数据线,但速度慢
串行通信时:数据一位一位地排列,按照时序信号控制发送与接收,发送端通过发送始终确定数据位的开始与结束,接收端需要在适当的时间间隔对数据流进行采样并解码。
分为:同步串行通信与异步串行通信
同步串行通信的信息帧由同步信号字符(SYNC)、数据字符和校验字符(CRC)组成。在传输数据时需要保持发送时钟与接收时钟的严格同步,但受限于不同厂家间的同步字符不统一,使用范围小。
异步串行通信有两个重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传输,字符帧被逐帧发送、接收。发送和接收时钟源彼此独立。
字符帧格式为:一位起始位,八位数据位,一位奇偶校验位,一位停止位。
数据位、奇偶校验位在不同协议中存在不同类别。
串行通信按照工作模式可以分为单工、半双工、双工。
单工 — 发送端、接收端的角色固定;
半双工(RS-485) — 既可以发送也可以接收数据,在各端口存在收发切换电子开关,一般不可以同时发生;
全双工(PS-232)— 由两根可以同时发送和接收的传输线进行通信。
通信端口的初始化
明确编码、解码方式,设置波特率等操作。
波特率:每秒钟发送的位的个数。发送设备与接收设备的波特率不同,会导致解码错误。波特率为9600bps时发送每位的时间约为0.1ms。
数据位:通信中实际数据的位数。如何选择数据位,取决于想传输数据的位数。
停止位:用于表示数据帧的发送结束及设备矫正时钟同步,典型值是1位。停止位的位数越多,不同设备时钟同步的容忍度越大。
奇偶校验位:有三种检验模式,奇校验、偶校验和无校验。奇、偶校验的思想均不是统计数据位中0\1的个数,而是凑出奇、偶的规律。现大多选择无校验。
RS – (Recommend Standard)
RS-232标准(DB-9)
一般有9个引脚,通信范围在15m以内,属于单端信号传输,存在共地噪声和不能抑制共模干扰等问题,工作时需要保证电平在±(3-15)V以内,各信号线分别代表的含义是:
CD (Carried Detect):载波侦听。表示调制解调器是否检测到了通信设备发出的载波信号。
RD (Receive Data):接收数据。表示从外部设备接收数据的信号线。
TD (Transmit Data):发送数据。表示将数据发送到外部设备的信号线。
DTR (Data Terminal Ready):数据终端就绪。表示计算机已准备好接收或发送数据。
GND (Ground):地线。连接电路的共同接地点。
DSR(Data Set Ready):数据集就绪。表示调制解调器已经启动并可以进行通信。
RTS(Ready to Send):准备好发送。表示计算机已准备好发送数据并要求外部设备做好接收准备。
CTS(Clear to Send):清除发送。表示外部设备已经准备好接收来自计算机的数据
RI(Ring Indicator):振铃指示。表示当电话线路上有来电时的信号。
RS-232的主要缺陷是:
①接口的信号电平较高,容易损坏接口电路的芯片,与TTL电路不相同;
②传输速率较低,波特率<115kbps;
③单端驱动,容易产生共模干扰,需要增加滤波器;
④传输距离有限。
RS-485标准
最高传输速率为10Mb/s,采用平衡驱动器和差分接收器的组合,抗噪声干扰性好,具有多机通信能力,传输距离达1200m(差分传输)
单端驱动与平衡驱动的区别详见度娘
RS-422标准
与RS-485几乎一样,区别在于:
RS-422有四根信号线,可以实现全双工模式;主机从机比可达32,从机之间不可通信,为点对多的双向通信;接收段需要接120Ω的终端电阻,发送端可以不接。
RS-232与RS-485的区别
唯一的区别是,RS-485有发送器的控制信号DE(Drive Enable)而RS-232不需要此信号。
RS-485不能同时接收和发送,需要切换收发。RS-232的发送信号TXD与接收信号RXD各用一根线,不会矛盾。
在进行RS-232 到RS-485的转化时,可以选择将握手信号RTS改造成DE控制信号,同时进行电平转换。在每次编写串行通信程序时,必须先置RTS有效,,当接收完信号后,置RTS无效,避免同一个总线上,多个主机同时处于发送状态的冲突。
UART串口
Universal Asynchronous Receiver\Transmitter,通用异步接发设备,用于支持多机通信,通过设置SCON寄存器的参数可实现。
多机通信需要多传输一个地址码(ID)。在主机传输数据前,每个从机处于待机接收的状态。主机发送数据流中包含地址码,每个从机的串口都会收到主机发出的地址码,程序会判断是否与自己的地址码相同,若相同则会开始启动程序。
在串行传输线上,每次数据流包含11位。第十位用于区分地址和数据。当单片机需要进行多机传输时,传输时包含TB8位,接收包含RB8位,当TB8=1时,表示正在传输一个地址码,含八位,可以连接256个从机。当TB8 =0 时,表示传输数据。接收端可以通过格式判断传输的地址还是数据。
在从机中,通常以串行中断的方式来对待进来的数据,若把 SCON 寄存器的 SM2 位设置成为 1时,即允许串行接口进行多从机的地址判断,在这个模式下,从机只在接收地址值 (其 RB8=1) 时才产生中断请求。
在串行中断的服务程序上,只要由 SBUF 内读回地址值,就做一个判断是否被调用。若为 YES 时则跳去执行程序设置的操作,若为 NO 时则不做任何操作,随即结束此中断服务程序并返回主程序,特定的从机先设置成 SM2,然后开始发送或者接收数据,而其他的从机并未启动传输。
在此瞬间仍然是一对一的通信,当主机在最初的发送地址阶段却是一对多的通信。
单片机的串口是 TTL 电平的,也就是 5 V,传输距离最远只有 5 m。如果想要远距离传输,还应将 TTL 电平转换为 RS-485 电平。
改日学ModBus协议。
串口通信协议--UART、RS-232、RS-485、RS-422相关推荐
- 硬件基础:理解串口通信以及232,485,422常见问题
这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为更多的时候,都是产品做好了,比如触摸屏需要和控制器,PLC通信.理想的情况下,一般只要一上电,不需要太多的操作和配置,就可以通信上. 在这里 ...
- db9针232接口波特率标准_理解串口通信以及232,485,422常见问题
下面先讲一讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为 ...
- delphi 串口通信发送_关于串口通信232、485、422和常见问题,就没见过能讲这么清楚的...
先讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习,如果哪里讲的不到位,欢迎及时指出. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为更多的时候,都是产品做好了,比如触 ...
- 485通信原理_串口通信(232,485,422)以及常见问题
下面先讲一讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为 ...
- 串口通信协议---UART
串口通信的分类 UART属于串行.异步.全双工通信 串行通信与并行通信 根据传输数据的位宽,串口通信可分为串行通信与并行通信,串行通信是指设备之间通过少量数据信号线(一般是 8 根以下),地线以及控制 ...
- 串口 、TTL、232、485区别
1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号). 2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电源线,避免与目 ...
- 理解串口通信以及232、485、422常见问题
https://mp.weixin.qq.com/s/fiAZP8AVaugM6sERFbwwmg
- 1024之牛客之错误笔记+uart/IIC/232/485/SPI总结
目录 牛客之错误笔记: uart/IIC/232/485/SPI总结: 牛客之错误笔记: [1.转义字符 \" %% "是用\转义 % ...
- FPGA串口(UART)通信协议制定与设计思路详解示例
串口(UART)通信协议制定与设计思路详解 1 概述 本文用于描述规定的串口通信协议,以及传输内容. 2 项目关于串口的要求 a) 支持BIT自检,1路UART上报BIT信息: b) 1路UART接口 ...
最新文章
- 《IT项目管理》读书笔记(9) —— 项目沟通管理
- 121. Leetcode 5. 最长回文子串 (动态规划-子序列问题)
- Outlook 获取联系人名片对象为空
- Boost:双图bimap与range范围的测试程序
- 用位运算计算两数的和
- (十三)Hibernate高级配置
- 女性最常说的5大谎言:
- VS Code 必知必会的 20 个快捷键!
- JavaScript知识点之如何使用匿名的方法做条件判断
- Unix 目录结构是怎么由来的?
- 打印九九乘法表(跳转语句)
- Logisim元件用法详解四:Arithmetic 运算器
- c语言小学生入门自学,啊哈C语言:小学生坐在马桶上都可以读懂的C语言编程入门书 PDF 扫描版[20M]...
- 啊哈C语言 第八章 【代码】【习题答案】
- java jpa是什么_jpa是什么框架?jpa是什么意思?
- 2021年实现团队成功的4步绩效管理周期
- 添加镜头光晕的正确方法
- 视频文件损坏无法播放怎么修复?
- 大家好才是真的好,“通用设计”知多少
- 个人信息保护建设实践方法的探索过程
热门文章
- 软件设计模式——建造者模式
- 微信小程post问题
- 如何更好的进行技术面试
- Dubbo源码分析之构建远程Invoker
- idea中,maven窗口功能图标含义
- 交通灯系统51单片机设计(附Proteus仿真、C程序、原理图及PCB、论文等全套资料)
- PCI Express学习篇---物理层电气特性(三)Transmitter Compliance Test
- 黑苹果NVIDIA显卡驱动程序【WebDriver-378.10.10.10.25.103 +支持macOS 10.13.2 High Sierra (17C89)版本】
- [极客大挑战 2019]Http1(BUCTF在线评测)
- IDEA 注释模板,这样配置才够逼格!