近期学习了单片机及数电相关知识,故决定系统地学习一些通信协议。手边书本仅介绍了串口低速接口的相关协议。

串行通信
是指通过使用一条数据线(需要地线或控制线),将数据一位一位地一次传输,每一位数据占据一个固定的时间长度。
特点:抗干扰,节省数据线,但速度慢

串行通信时:数据一位一位地排列,按照时序信号控制发送与接收,发送端通过发送始终确定数据位的开始与结束,接收端需要在适当的时间间隔对数据流进行采样并解码。
分为:同步串行通信异步串行通信

同步串行通信的信息帧由同步信号字符(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相关推荐

  1. 硬件基础:理解串口通信以及232,485,422常见问题

    这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为更多的时候,都是产品做好了,比如触摸屏需要和控制器,PLC通信.理想的情况下,一般只要一上电,不需要太多的操作和配置,就可以通信上. 在这里 ...

  2. db9针232接口波特率标准_理解串口通信以及232,485,422常见问题

    下面先讲一讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为 ...

  3. delphi 串口通信发送_关于串口通信232、485、422和常见问题,就没见过能讲这么清楚的...

    先讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习,如果哪里讲的不到位,欢迎及时指出. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为更多的时候,都是产品做好了,比如触 ...

  4. 485通信原理_串口通信(232,485,422)以及常见问题

    下面先讲一讲串口通信的一些基本概念,术语.如果对串口通信比较熟悉的,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流. 这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲.因为 ...

  5. 串口通信协议---UART

    串口通信的分类 UART属于串行.异步.全双工通信 串行通信与并行通信 根据传输数据的位宽,串口通信可分为串行通信与并行通信,串行通信是指设备之间通过少量数据信号线(一般是 8 根以下),地线以及控制 ...

  6. 串口 、TTL、232、485区别

    1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号). 2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电源线,避免与目 ...

  7. 理解串口通信以及232、485、422常见问题

    https://mp.weixin.qq.com/s/fiAZP8AVaugM6sERFbwwmg

  8. 1024之牛客之错误笔记+uart/IIC/232/485/SPI总结

    目录 牛客之错误笔记: uart/IIC/232/485/SPI总结: 牛客之错误笔记: [1.转义字符    \"                 %%     "是用\转义 % ...

  9. FPGA串口(UART)通信协议制定与设计思路详解示例

    串口(UART)通信协议制定与设计思路详解 1 概述 本文用于描述规定的串口通信协议,以及传输内容. 2 项目关于串口的要求 a) 支持BIT自检,1路UART上报BIT信息: b) 1路UART接口 ...

最新文章

  1. 《IT项目管理》读书笔记(9) —— 项目沟通管理
  2. 121. Leetcode 5. 最长回文子串 (动态规划-子序列问题)
  3. Outlook 获取联系人名片对象为空
  4. Boost:双图bimap与range范围的测试程序
  5. 用位运算计算两数的和
  6. (十三)Hibernate高级配置
  7. 女性最常说的5大谎言:
  8. VS Code 必知必会的 20 个快捷键!
  9. JavaScript知识点之如何使用匿名的方法做条件判断
  10. Unix 目录结构是怎么由来的?
  11. 打印九九乘法表(跳转语句)
  12. Logisim元件用法详解四:Arithmetic 运算器
  13. c语言小学生入门自学,啊哈C语言:小学生坐在马桶上都可以读懂的C语言编程入门书 PDF 扫描版[20M]...
  14. 啊哈C语言 第八章 【代码】【习题答案】
  15. java jpa是什么_jpa是什么框架?jpa是什么意思?
  16. 2021年实现团队成功的4步绩效管理周期
  17. 添加镜头光晕的正确方法
  18. 视频文件损坏无法播放怎么修复?
  19. 大家好才是真的好,“通用设计”知多少
  20. 个人信息保护建设实践方法的探索过程

热门文章

  1. 软件设计模式——建造者模式
  2. 微信小程post问题
  3. 如何更好的进行技术面试
  4. Dubbo源码分析之构建远程Invoker
  5. idea中,maven窗口功能图标含义
  6. 交通灯系统51单片机设计(附Proteus仿真、C程序、原理图及PCB、论文等全套资料)
  7. PCI Express学习篇---物理层电气特性(三)Transmitter Compliance Test
  8. 黑苹果NVIDIA显卡驱动程序【WebDriver-378.10.10.10.25.103 +支持macOS 10.13.2 High Sierra (17C89)版本】
  9. [极客大挑战 2019]Http1(BUCTF在线评测)
  10. IDEA 注释模板,这样配置才够逼格!