我正在使用串行到 USB 转换器将 ATMega8 微控制器连接到我的 PC。我用来接收数据的程序是 MATLAB。我是否必须以标准波特率发送和接收数据以进行串行通信?我可以发送和接收,比如 208333 bps 吗?我在发送端使用 AVR 编程,在接收端使用 MATLAB,我想知道为什么我必须使用标准波特率?
我在 Windows 8 中使用修改为串行转换器的 DKU-5 电缆。
我正在使用串行到 USB 转换器将 ATMega8 微控制器连接到我的 PC。我用来接收数据的程序是 MATLAB。我是否必须以标准波特率发送和接收数据以进行串行通信?我可以发送和接收,比如 208333 bps 吗?我在发送端使用 AVR 编程,在接收端使用 MATLAB,我想知道为什么我必须使用标准波特率?
我在 Windows 8 中使用修改为串行转换器的 DKU-5 电缆。
RS-232 串行端口使用隐式时钟运行。USB 转换器中的接收器通过识别起始位的中间来与发送器时钟同步,然后在一个位时序之后对后续位进行采样。为了对中间的位进行采样并限制抖动和时序偏移(异步通信)的影响,接收器通常以实际数据速率的 16 倍对信号进行采样。这意味着接收器能够通过将其振荡器除以整数以达到采样率来以这种速度产生时钟信号。
通常选择振荡器以允许产生具有低错误率的标准时钟速度的除数,特别是在较高速度下。选择非标准速度可能会导致所需速度出现较大误差,从而增加传输错误的可能性。
经典方式(此处可能不适用)是使用不需要过采样并允许提高速度的同步链路。在您的情况下,这可能是最容易实现的,方法是在您的设备中引入 USB 从设备。这将支持 1 Mbit/s 的主机时钟,比任何异步链路都快得多。
一个更面向硬件的网站可能会给你更好的答案。