【通信协议】——串口通信

注:串口通信包括同步(UART)和异步(USART),开发中常用的为UART,所以本次也侧重介绍UART。

串口通信是一种设备非常常用的串行通信方式,因为他简单便捷,因此目前大部分电子产品都支持该通讯方式。产品开发中,工程师也常使用串口用来调试。

物理层

物理层负责数据的实际传输,即通过电缆、无线等媒介发送和接收比特流。

串口通信的物理层有很多标准及变种,通常使用RS-232、RS-485、TTL等标准。

我们拿RS-232举例

两个通讯设备的”D9接口“之间通过串口信号线建立起链接,串口信号线中使用”RS-232标准“传输数据信号。但是由于RS-232电平标准不能直接被控制器识别,所以这些信号会经过”电平转换芯片“转换成控制器能是写的”TTL标准“的电平信号。

电平标准

根据通讯使用的电平标准不同,串口通讯可以分为TTL标准及RS-232标准

通讯标准电平标准(发送端)
5V TTL逻辑1:2.4V-5V
逻辑0:0~0.5V
RS-232逻辑1:-15V~-3V
逻辑0:+3V~+15V

常见的电子电路中常使用TTL的电平标准,理想状态下,使用5V表示二进制逻辑1,0V表示逻辑0;而为了增加串口通信的远距离传输及抗干扰能力,RS-232使用-15V为逻辑0,15V为逻辑1。

因为一般的控制器常采用TTL标准,所以需要”电平转换芯片“,常见的有MA3232对TTL与RS-232的信号进行转换。

RS-232信号线

我们常把RS232标准的接口称为COM口,也称为DB9接口。

  • DCD:载波检测,用于DTE告知对方,本机是否收到对方的载波信号
  • RXD:接收数据
  • TXD:发送数据
  • DTR:数据终端(DTE)就绪,用于DTE告知对方,本机是否准备好
  • GND:地线
  • DSR:数据设备就绪,用于DCR告知对方,本设备处于就绪状态
  • RTS:请求发送,DTE请求DCR本设备向DCE端发送数据
  • CTS:允许发送,DCE回复对方的RTS请求
  • RI:响铃指示,表示DCE端与线路已连通

上述为DB9标准接法。

在目前的其它工业控制使用的串口通讯中,一般只使用RXD、TXD以及GND三条信号线,直接传输数据信号,而RTS、CTS、DSR、DTR及DCD信号都被裁剪掉了。

协议层

串口通信的数据包有发送设备通过自身的TXD接口传输到接收设备的RXD接口。在串口通讯的协议层中,规定了数据包的内容,它由起始位、数据位、校验位、停止位组成;通讯双方的数据包格式要约定一致才能正常收发数据。

波特率

以串口异步通信为例(UART),异步通信中没有时钟信号(与CAN类似)是两个设置之间约定好波特率,及每个码元的长度。常见的波特率为9600、115200、4800等。

通讯的起始和停止信号

串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号有一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5、2个逻辑1的数据为表示。

有效数据

在数据包的起始位之后紧跟着的就是传输的主体数据内容,也成为有效数据,一般为5、6、7、8位。

数据校验

在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程中加上校验位来解决这个问题。常见的校验位有:奇偶校验、0校验、1校验或者无校验。

虽然本文章介绍了RS-232,但是USART/UART出书的是TTL电平信号,如果需要使用RS-232标准的信号需要加MAX3232等”电平转换“芯片。

如果您觉得这篇文章不错,且手里较为宽裕,可以支持一下博主,一分也是缘分😊
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇