多路复用 UART

电器工程 UART 逻辑门 限流 ttl
2022-01-17 03:16:58

我想同时将我的主微控制器的硬件串行端口连接到多个设备。我的理解是,我的微控制器上的 UART 基于低电平有效 5V TTL。

(我知道我在这里解释的内容可以通过使用更合适的协议(例如 SPI 和 I 2 C)在技术上实现,但我的项目需要使用 UART 来实现。)

这是我想要实现的伪示意图:

示意图

模拟此电路- 使用CircuitLab创建的原理图

请注意:

  1. 不想在主机或任何从机上使用第二个UART 接口。

  2. 一次只有一个从站将通过线路向主站传输或发送数据。(例如,如果从机 1 正在传输数据,从机 2 和 3 应该保持空闲。)

  3. 无论设备发送什么,所有从设备都可以并且应该接收到。

  4. 所有从站都应该是可热插拔的,这意味着它们可以随时移除或插入。

  5. 到主机的 RX 和 TX 线在每个从机之间是平行的,因此没有菊花链。

所以,我的问题如下:

  1. 假设考虑了正确的阻抗,我不需要额外的电路来同时将数据从主机的TX线传输到任何从机的RX线。它是否正确?

  2. 我知道,如果从机的TX线和主机的RX线之间没有限流电阻,如果任何设备开始广播数据,设备之间的线会短路,我有损坏它们的风险。它是否正确?

  3. 假设第 1 项和第 2 项是正确的:

    a) 只需要一些限流电阻就足够了吗?

    b) 我可以使用 74 系列逻辑门代替电阻吗?

  4. 在上面的选项ab之间,我应该选择什么路线?

  5. 对于可靠的115200 波特率连接,74HC08与门的开关频率是否足以包含在内?

编辑:我很清楚其他非常适合的协议,例如 SPI 和 I 2 C。我使用 UART 是有原因的,那是因为主 mcu 上使用的optiboot 引导加载程序通过 UART 进行通信,尽管 UART 很明显限制。

此外,虽然菊花链绝对是一种聪明的方法,但由于违反了第四条要求,它也破坏了引导加载程序的功能。

这些设备也可以是 USB-to-Serial 芯片,在这个项目中使用 SPI-to-USB 或 I2C-to-USB 是不可行的。

因此,如果您能专注于此处列出的 6 个问题,并分享您的 UART 知识,我将不胜感激。

4个回答
  1. 对于三个设备,没有更多信息,请查看有关输入电容的数据表。

  2. 不是很危险,但肯定行不通

  3. a) 没有 b) 是的。如果您的从机不在同一个板上,那么使用有线 AND(需要半连接)会更好。

  4. 显然,工作的,b

  5. 是的

    编辑以提供一些细节

在图 2 和 3a 中,即使您忽略了每个人都同意的“不要将两个输出连接在一起”的建议,对于具有几乎对称特征的 cmos 输出,两个 1 和一个 0 的结果永远不会为零。

3b 您可以从每个从机连接到 N 输入(星形配置),或者在每个从机上,您的输出和链都有一个 AND,并将 And 输出用于下一个从机链输入。

示意图

模拟此电路- 使用CircuitLab创建的原理图

显然链配置不是热插拔的。

有线和,您有两个选项,具体取决于从站功能。

如果您有 TX 的漏极/集电极开路输出,那么您可以将它们连接在一起并添加一个全局上拉电阻。

如果不是,则每个从机上的二极管将充当接线,如下所示:

示意图

模拟这个电路

您还有第三种选择,只需在响应消息后将从属 Tx 输出置于 HiZ,仍然需要一个上拉电阻。

你和UART结婚了吗?我认为 SPI 会更好地处理这个问题。从选择将为您提供多路复用,您可以根据主设备正在做什么或对从设备的期望来优先考虑一个从设备。速度应该至少与 UART 一样快。这个例子明白了这个想法。

您必须确保它们不会同时传输。例如通过主设备轮询从设备。

使用二极管将多个TXD连接在一起,在master上拉R。您可以根据需要使用固件,并且在不发送时将 TXD 转为输入,但二极管更容易。

所有 RXD 都可以连接。

对于由主机驱动并由从机接收的线路,如果电容负载不是问题,则不需要特别花哨。

对于由从机驱动的线路,我建议如果容性负载不成问题,您可以通过串联电阻将每个从机的 TX 线连接到总线,然后在空闲时将每个状态的 TX 引脚设置为浮动。在总线冲突的情况下,使电阻尽可能低,而不允许流过不可接受或破坏性的电流水平。

如果防止损坏所需的串联电阻与寄生电容相结合,会将速度限制在不可接受的速度,那么我建议使用基于电流的方法,如果从属设备想要传输,则可以在该方法中提供电流。就像是:

示意图

模拟此电路- 使用CircuitLab创建的原理图

左半边是发射机,右半边是接收机。请注意,如果省略肖特基二极管(或者如果替换为非肖特基二极管),接收器电路将几乎无法正常工作,因为 Q2 将被驱动进入饱和状态并需要一段时间才能恢复。添加肖特基二极管将阻止 Q2 完全开启,从而使其更快关闭。