串口的可变波特率可能吗?

时间:2011-09-21 11:41:38

标签: c serial-port rs485

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

3 个答案:

答案 0 :(得分:2)

通信模块的时钟通常来自系统时钟。 此系统时钟可以按特定数字分配,如2,4,8 .. 这就是为什么你只能达到特定的波特率。

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

在Windows下,您可以使用SetCommState设置串口的波特率,该值以device control block structure为参数。该结构的BaudRate元素用于设置波特率,并且可以是常数值,例如。 CBR_4800,或您自己的指定值,例如4801.任何值是否有效取决于硬件,即使用的UART或SIO是否允许您的特定波特率。我用了这些东西已经有一段时间了,但有可能波特率必须是某些其他硬件提供的输入时钟频率的倍数,这样某些速率可能无效。请注意,我的经验与RS232相反,而不是RS485,但我相信使用了相同的SDK。