如何在 UART 上接收多条消息?

How can I receive multiple messages on UART?

我有一个 RDM6300 RFID writer/reader。它可以读取 RFID 标签,并通过 UART 将数据发送到微控制器。到目前为止,我使用了多个微控制器,其中 STM32F04 具有最多的 UART "ports"(8 个发射器和接收器)。 Arduino有几个,但还是不够

我想要 25 个 RFID 阅读器(几乎同时读取),但我找不到将所有阅读器的数据发送到一个微控制器的方法。

有没有办法将 25 个读卡器连接到一个微控制器?

您有 25 个东西以 9600 bps 的速度传输。您有一个 180 MHz 的 MCU 运行,具有 8 个 UART 和 大量定时器捕获通道 (32 个通道,其中 30 个可用于 100 引脚 STM32F427VITx)。 25 个输入中的 8 个由 UART 处理,17 个需要通过其他方式处理。将它们连接到定时器捕获通道。

MCU 以 180 MHz 运行,输入以 9600 Hz 改变状态,这意味着事件之间有 18750 个时钟周期。如果您不使用 HAL,应该足以处理所有这些。

  1. 读取定时器状态寄存器,检查捕获事件并清除它们
  2. 检查引脚状态,低表示帧开始
  3. 存储该通道的捕获寄存器值
  4. 继续检查捕获事件
  5. 如果有就清除
  6. 读取捕获时间戳,从中减去步骤 3 中存储的值
  7. 计算接收到的相同状态的位数
  8. 继续这样做,直到你有 9 位(起始位 + 8 数据位)和引脚上的高输入

对所有 17 个通道并行执行上述操作。您需要一个合适的定时器预分频器,这样它们在读取完整帧时不会溢出(9*18750=168750 个周期)