启动和停止位(串行通信)

时间:2016-03-05 03:26:11

标签: communication bit serial-communication

  1. 如果串行通信中没有启动和停止位,会发生什么?
  2. 启动和停止位的用途是什么?

1 个答案:

答案 0 :(得分:6)

如果你愿意,整个比特集合就是一个数据包。否则,起始位和停止位与数据位无法区分。比如说你有一个起始位,一个停止位,没有奇偶校验和8个数据位。这意味着存在低位(开始)8个数据位(可以是256种组合中的任何一种)和高位(停止)。接收器必须被告知这是8N1所以它正在寻找低,8位和高,如果它没有看到它然后它没有锁定数据,并且很可能它基本上丢弃了第一位,转移再一次,然后寻找一个开始和停止8中间。一旦它看到它然后它假定它是真实数据并允许字节/字符进入接收缓冲区。如果接下来的10位没有那个开始8位停止模式,那么这是一个帧错误,它再次开始搜索。所以,如果这种模式出现

000000000000011111

前10位没有启动和停止

0000000000

所以丢弃第一个零并重试

00000000000011111

0000000000

不,仍然没有开始和停止

重复此过程,直到串行流转换为这样

00000000011111xxxxxxxxxxx

0000000001

我们有一个开始,8位和一个停止,所以我们认为一个好的字符0x00在rx缓冲区中保存0x00。

从停止位后的下一位开始,我们采用下一个10

1111xxxxxxxxxxx

并且不以起始位开始,因此这是一个成帧错误

1111xxxxxx

我们返回搜索8位起始位和停止位。

如果你使用奇偶校验位然后它是相同的,但你不仅需要一个启动和停止,但你需要中间的位具有一定的奇偶校验,偶数或奇数。所以要获得一个好的字符,你需要启动,一些具有正确奇偶校验位和停止位的位,然后你可以提取字符并在停止位之后寻找另一个起始位。

相关问题