gpt4 book ai didi

c - 使用串行端口将数据 block 从微 Controller 传输到 PC

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:43 25 4
gpt4 key购买 nike

在我的项目中,我有一个微 Controller ,我需要查询固定数量的数据。 MCU是STM32,我的GUI应用是基于Qt框架的。

微 Controller 中有一个 16 位数据的缓冲区,该缓冲区被一些数据填充。我是这样定义的:

uint16_t buffer[0xFFFF] = { 0 };

在微处理器中一切正常,调试器显示缓冲区在一些操作/计算阶段后包含正确的数据。

但现在我需要使用串行端口将这个缓冲区传输到 PC 中。我的问题是,确保在我的 GUI 应用程序中正确获取此缓冲区的每个数据的正确方法是什么?

这应该尽可能快(波特率为 115200)并且尽可能安全,例如所有 65536 个元素都应按正确顺序传输到 PC(以从中绘制波形)。

那么,我该如何处理呢?例如:

  • 我需要同步连接还是异步连接?
  • 我是否应该一个一个地发送每个元素并等待来自 PC 的 ACK 以进行下一次传输?
  • 如何在突发模式下实现?
  • 我需要制作一种包裹吗? 6字节
    • _START_BYTE_。 _COUNTER_H_。 _COUNTER_L_。 _数据_H_。 _DATA_L_。 _END_BYTE_

我不是要代码(但我很感激)。我很想知道最好的方法!

最佳答案

Do I need a synchronous or asynchronous connection?

UART 始终是异步的,因此得名通用异步收发器。

Should I send each element one by one and wait for a ACK from PC for next transmit?

这是一种安全的方法。如果 PC 回显接收到的每个字符,则 MCU 可以验证数据是否正确通过。这样你通常可以跳过校验和。缺点是速度减半。

How it can be implemented in burst mode? Do I need to make a kind of packet, e.g. 6 bytes

使用某种方式的运营商协议(protocol),包含同步、大小、数据、校验和等。这里可能有点矫枉过正。

关于c - 使用串行端口将数据 block 从微 Controller 传输到 PC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com