串行通信波特率,奇偶校验和停止位。使用哪些选项以及何时使用?

时间:2014-07-30 22:53:38

标签: networking serial-communication baud-rate parity

我正在尝试为我刚开始的新工作挑选一些串行通信。我已经完成了一些有用的阅读,但很多阅读都会告诉你有关串行通信的规范以及一切是什么,但不是什么时候最好使用特定的选项。

到目前为止,我对这些信息的搜索似乎只是引入了规范;也许作为一个新手,我正在寻找错误的条款。

然后我的问题!

波特率 - 我已经读过这是每秒的信号变化,并且经常被错误标记为每秒位数。这是否实质上是每秒位数,包括异步时的帧数据,如果是同步的话,实际上是每秒位数?

奇偶 - 偶数/奇数..这两者之间有什么不同吗?我在效率或类似方面进行思考。为了兼容性,这只是存在吗?

停止比特 - 到目前为止我已经读过你可以有1或2个停止位。在C#中似乎也有1.5的选项。我无法找到你想要/需要超过1的原因。

如果有人可以就这些问题提出建议,或者指出一些推荐的阅读材料,我将非常感激。

感谢阅读。

编辑:拼写错误

1 个答案:

答案 0 :(得分:2)

您很少有选择,必须使其与设备使用的设置兼容。如果您不知道,那么您需要查看手册或拿起电话。请记住,与使用UART的真实串行端口设备一起工作的情况越来越少。最常见的是,您实际上是通过USB或蓝牙设备驱动程序实现的模拟串行端口进行通信。您使用的设置在这种情况下并不重要,因为实际信令是由底层总线实现的。

如果您可以配置设备,则基本准则为:

  • 波特率与电缆长度和电气干扰量直接相关。当你遇到误码时,你必须慢一点。 RS-232规范仅允许在9600波特时最大50英尺。
  • 当您不使用纠错协议时,应该使用奇偶校验。无论你选择奇数还是偶数都没关系。奇怪的人选择奇怪的,这是他们的特权。
  • Stopbits通常是1.选择1.5或2有助于减轻中断响应时间较差的设备的压力,并通过数据丢失检测到。
  • Databits几乎总是8,如果设备只处理ASCII码,则有时为7。
  • 握手是一个重要的设置,永远不会停止造成麻烦,因为许多程序员只是忽视它。现代计算机几乎总是足够快,不需要它,但对于设备来说并不一定如此。最基本的故障排除配置是在打开端口时打开DTR并告诉设备驱动程序处理RTS / CTS握手。有时会使用Xon / Xoff握手,具体取决于设备。

通过实施可靠的错误检查,赢得了90%的好战。这几乎总是吝啬,不好主意。对于串行端口设备非常重要,因为它们本身没有纠错功能,而且检测错误很弱。始终确保您可以检测并正确报告溢出,奇偶校验和帧错误。并通过故意错误设置来测试它们。