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

问题描述 投票:-1回答:1

我有一台RDM6300 RFID刻录机/阅读器。它可以读取RFID标签,并通过UART将数据发送到微控制器。到目前为止,我使用了多个微控制器,STM32F04具有最多的UART“端口”(8个发送器和接收器)。 Arduino有一些,但还不够。

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

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

arduino microcontroller stm32 uart rfid
1个回答
1
投票

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

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

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

对所有17个频道并行执行上述操作。您需要一个合适的预分频器用于定时器,以便在读取全帧时不会溢出(9 * 18750 = 168750个周期)

© www.soinside.com 2019 - 2024. All rights reserved.