【问题标题】:Should Serial communication occur at standard Baud Rates?串行通信应该以标准波特率进行吗?
【发布时间】:2013-10-24 00:29:12
【问题描述】:

我正在使用串行到 USB 转换器将 ATMega8 微控制器连接到我的 PC。我用来接收数据的程序是 MATLAB。我是否必须以标准波特率发送和接收数据以进行串行通信?我可以发送和接收,比如 208333 bps 吗? 我在发送端使用 AVR 编程,在接收端使用 MATLAB,我想知道为什么我必须使用标准波特率?

我在 Windows 8 中使用修改为串行转换器的 DKU-5 电缆。

【问题讨论】:

  • 两端的控制器可能只支持标准波特率。为什么你需要一些非标准的东西?
  • 嗯,可惜我买的5MHz晶振不支持高标准波特率,我这里需要高速率通信……
  • 查看串口转 USB 转换器中芯片组的文档,了解该端接受的内容。
  • 它表示超过 120k bps 的数据传输率。设备管理器指示最大标准速率为128000,但128000误差较大。我可以使用更小的非标准值吗?
  • 试一试不会有什么坏处

标签: matlab serial-port baud-rate


【解决方案1】:

RS-232 串行端口使用隐式时钟运行。 USB 转换器中的接收器通过识别起始位的中间位置与发送器时钟同步,然后在一个位时序之后对后续位进行采样。为了对中间的位进行采样并限制抖动和时序偏移的影响 (Asynchronous communication),接收器通常以实际数据速率的 16 倍对信号进行采样。这意味着接收器能够通过将其振荡器除以整数以达到采样率来以这种速度产生时钟信号。

通常选择振荡器以允许产生具有低错误率的标准时钟速度的除数,尤其是在较高速度下。选择非标准速度可能会导致所需速度出现较大误差,从而增加传输错误的可能性。

经典方法(此处可能不适用)是使用不需要过采样并允许提高速度的同步链接。在您的情况下,通过将 USB 从设备引入您的设备,这可能是最容易实现的。这将支持 1 Mbit/s 的主机时钟,比任何异步链路都快。

一个更面向硬件的网站可能会给你更好的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多