STM32
直播中

微风挽雨

9年用户 927经验值
擅长:可编程逻辑 电源/新能源 嵌入式技术
私信 关注
[问答]

求助,关于stm32应用bootloader主机端接收ACK的问题求解

最近接手了一个学长所做的编程板程序。其中想用GO命令实现程序在目标新品的ram区运行功能。发送0x21+0xDE后返回ACK正常,但是发送起始地址和校验和之后很长时间主机未收到ACK或者NACK。我使用rt-thread操作系统并设定了一个计时器,当超过100os tick未收到ACK的话则返回超时。我加长了计时器时长依旧没有改善,主机端发送数据后,器件端应该很快返回ACK或NACK吧?即使发送的数据不对也应该返回NACK吧。这种问题是什么原因造成的?

回帖(1)

江左盟

2024-5-17 18:03:29
从您的描述来看,这个问题可能由以下几个原因导致:

1. 通信协议问题:请检查您的通信协议是否正确实现,包括波特率、数据位、停止位和奇偶校验位等设置。确保主机和目标设备之间的通信协议一致。

2. 数据包格式问题:请检查您发送的数据包格式是否正确。根据您的描述,您已经正确发送了0x21和0xDE,但请确保起始地址和校验和的格式也正确。

3. 目标设备固件问题:请检查目标设备的固件是否正确实现了接收数据和返回ACK/NACK的功能。可能是固件中存在bug,导致无法正确处理接收到的数据。

4. 主机端接收问题:请检查主机端的接收代码是否正确实现。确保主机端能够正确解析接收到的数据,并在收到ACK/NACK时进行相应的处理。

5. 硬件连接问题:请检查您的硬件连接是否正确,包括串口线、USB转串口模块等。确保硬件连接没有问题。

6. 干扰问题:请检查您的系统中是否存在电磁干扰或其他干扰,这可能会影响通信质量。

为了解决这个问题,您可以尝试以下步骤:

1. 检查通信协议设置,确保主机和目标设备之间的设置一致。

2. 仔细检查数据包格式,确保发送的数据正确无误。

3. 审查目标设备的固件代码,确保接收数据和返回ACK/NACK的功能正确实现。

4. 检查主机端的接收代码,确保能够正确解析接收到的数据。

5. 检查硬件连接,确保没有连接问题。

6. 尝试在不同的环境或使用不同的硬件连接,以排除干扰问题。

7. 如果问题仍然存在,您可以尝试使用调试器或逻辑分析仪等工具,进一步分析通信过程,找出问题所在。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分