波特率和时钟频率

Baudrate and clock frequency

我想让我的 2 个设备与 UART 通信。我没有任何时间要求

  1. 这是否意味着只要接收器和发射器的波特率匹配并且在我的芯片可用范围内,我就可以选择任何波特率?
  2. 芯片的频率和UART的波特率需要一样吗?我读到芯片的频率需要比UART的波特率高16倍。但是在其他一些地方有人说只要你的MCU时钟频率高于波特率就可以了。 (即:对于 9600 kbps,MCU 需要高于 9.6 khz。)
  3. 我可以为两个设备使用不同的频率吗? (例如,接收器为 20 MHz,发射器为 8 MHz。)

Does that mean I can choose any baudrate as long as receiver's and transmitter's baudrates match and it is in the available range of my chip?

恐怕答案并不那么简单。您设备的 UART 波特率生成器必须能够生成所述波特率,通常用户 Manual/Reference 手册包含一个公式来驱动可以实现的可能波特率。

两个设备都在同一个PCB上吗?如果没有,那么我建议您引入一个电平转换器,如 MAX3232 和 RS-232 电平中的 transmit/receive 信号,以避免通信问题。

还记得高速时track/wire电容和电感也会起作用。

Do frequency of chip and baudrate of the UART need to be same? I have read that frequency of the chip needs to be 16 times higher than the baudrate of UART. But in some other places people say that it is fine as long as your MCU has a higher clock frequency than the baudrate. (i.e: for 9600 kbps, MCU needs to be higher than 9.6 khz.

你用的是什么微控制器?现代微控制器以比典型波特率高得多的频率运行。许多现代高性能微控制器以数百 MHz 的速度工作。每个现代微控制器都倾向于为外设配备时钟分频器,并进一步配备波特率发生器以实现适当的波特率。这个问题的答案取决于您使用的是什么 MCU。对于相当现代的 MCU,您既不需要芯片的频率和 UART 的波特率需要相同,也不需要芯片的频率比 UART 的波特率高 16 倍。

Can I use different frequencies for two devices? (for example 20 MHz for receiver and 8 MHz for transmitter.

是的,您可以为两个设备使用不同的频率。只需确保它们的波特率以及奇偶校验、数据长度等其他参数即可。