0

波特率通常设置为指定值之一,如 9600、56k 等。是否可以选择其他值,例如 123456 波特?它是一个数值参数,为什么不呢?

4

3 回答 3

2

通信模块的时钟通常来源于系统时钟。这个系统时钟可以用特定的数字来划分,比如 2,4,8.. 这就是为什么你只能达到特定的波特率。

因为您在谈论异步协议,所以时钟不会在线传输。

以上所有,导致业界决定可接受的波特率列表

但是,如果您的两个通信模块支持像 17800 这样的特殊波特率,您可以使用它。

于 2011-09-21T11:53:46.563 回答
0

通常,串行适配器设计为仅在某些“标准”比特率下运行——50、110、150、300、600、1200、2400、4800、9600、14400、19200、28800 等。实际上,实现了许多适配器部分在软件中并且可以运行任何速率(在其计数器范围内),但是(事实上的)标准不要求您可以指定这样的任意速率。

于 2011-09-21T11:54:01.577 回答
0

在 Windows 下,您可以使用 SetCommState 设置串行端口的波特率,它以设备控制块结构作为参数。该结构的 BaudRate 元素用于设置波特率,可以是一个常数值,例如 CBR_4800,也可以是您自己指定的值,例如 4801。任何值是否有效取决于硬件,即 UART 或 SIO 是否在使用允许您的特定波特率。自从我使用这些东西以来已经有一段时间了,但是波特率可能必须是其他一些硬件提供的输入时钟速率的倍数,这样某些速率可能不起作用。请注意,我的经验与 RS232 相关,而不是 RS485,但我相信使用相同的 SDK。

于 2011-09-21T12:01:22.440 回答