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

时间:2019-02-13 13:31:51

标签: arduino microcontroller stm32 uart rfid

我有一个RDM6300 RFID读写器。它可以读取RFID标签,并通过UART将数据发送到微控制器。到目前为止,我与多个微控制器合作,其中STM32F04具有多个UART“端口”(最多8个发送器和接收器)。 Arduino有一些,但还不够。

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

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

1 个答案:

答案 0 :(得分:0)

您有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周期)时不会溢出