如何在 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,应该足以处理所有这些。
- 读取定时器状态寄存器,检查捕获事件并清除它们
- 检查引脚状态,低表示帧开始
- 存储该通道的捕获寄存器值
- 继续检查捕获事件
- 如果有就清除
- 读取捕获时间戳,从中减去步骤 3 中存储的值
- 计算接收到的相同状态的位数
- 继续这样做,直到你有 9 位(起始位 + 8 数据位)和引脚上的高输入
对所有 17 个通道并行执行上述操作。您需要一个合适的定时器预分频器,这样它们在读取完整帧时不会溢出(9*18750=168750 个周期)
我有一个 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,应该足以处理所有这些。
- 读取定时器状态寄存器,检查捕获事件并清除它们
- 检查引脚状态,低表示帧开始
- 存储该通道的捕获寄存器值
- 继续检查捕获事件
- 如果有就清除
- 读取捕获时间戳,从中减去步骤 3 中存储的值
- 计算接收到的相同状态的位数
- 继续这样做,直到你有 9 位(起始位 + 8 数据位)和引脚上的高输入
对所有 17 个通道并行执行上述操作。您需要一个合适的定时器预分频器,这样它们在读取完整帧时不会溢出(9*18750=168750 个周期)