Edit online

UART 升级

9 Jan 2025
Read time: 1 minute(s)
1. UART 传输涉及的关键字符说明
名称 数值 说明
SOH 0x01 Start of Heading
STX 0x02 Start of Text
ACK 0x06 Acknowledge
DC1 0x11 Device Control,定义为切换到主机发送状态
DC2 0x12 Device Control,定义为切换到主机接收状态
NAK 0x15 Negative Acknowledge
CAN 0x18 Cancel
A 0x41 ASCII 字符 ‘A’,从机程序发出的连接信号
C 0x43 ASCII 字符 ‘C’,主机程序发出的连接信号
升级流程如下:
  1. 设置传输波特率

    2. BROM 阶段使用的串口参数说明
    波特率 数据位 校验位 停止位 流控制
    115200 8 N 1 N
  2. 建立连接

    在连接检测阶段,由从机程序主动发出就绪信号,主机程序检测并回应的方式建立连接。

    从机程序运行起来首先发送字符 A,表示就绪,并等待主机程序回应 ACK。如果等待超时, 则重复发送字符 A,进入等待。该过程循环执行,直到收到主机程序的 ACK 回复。 主机程序就绪时接收到字符 A,则应发送 ACK 建立连接。



    从机程序的连接处理流程:



    1. 从机端建立连接的流程

    主机程序的连接处理流程:



    2. 主机端建立连接的流程
  3. 掉线检测。

    在没有传输任务的情况下,主机程序应该每隔 0.5 秒发送一次 C 进行确认连接状态, 如果收到 ACK,表明连接有效,超时则表明连接已经断开。

    从机程序通过命令通信的间隔时间进行掉线检测,即最后一次接收到有效的命令的时间到当前时间之间, 如果间隔超过 3 秒,则认为掉线,重新进入建立连接的状态,主动向外发出字符 A。



  4. 数据传输。

    主机程序与从机程序完成连接阶段即进入数据传输阶段。

    本协议的数据传输过程的一个特点是,数据传输是一个主机驱动的过程,从机总是被动响应。 即主机程序控制整个数据传输过程,从机程序是一个被动响应命令的程序。这也是为了保持与 USB 升级协议的行为一致。 这个特点与 YMODEM 协议相反。YMODEM 协议是一个从机驱动的协议,从机程序驱动数据的传输。

    关键点:

    1. 无论是主机程序还是从机程序,只有处于数据传输阶段才可以传输数据

    2. 数据传输阶段,主机程序和从机程序都要区分两个状态:数据发送状态和数据接收状态

    3. 从机程序不会主动传输数据,传输数据的动作,总是被动触发

    状态切换

    为了描述方便,在数据传输阶段的状态统一分为两个状态进行描述:

    • 主机发送状态

    • 主机接收状态

    默认情况下,系统处于主机发送状态(从机程序的角度为数据接收状态)。 在该状态下主机程序仅向外发送数据帧,并且等待 ACK。从机程序等待读取数据帧, 读取校验正确之后,发送 ACK。

    状态切换由主机程序执行。当主机程序需要接收数据时,通过发送 DC2(RECV) 给从机程序, 从机程序回复 ACK 之后,通信状态切换为主机接收状态,此时从机程序可以发送数据帧, 主机程序等待接收数据帧,并且在校验正确后发送 ACK。

    当主机程序接收数据完毕,需要发送 DC1(SEND) 给从机程序,将状态切换到主机发送状态。

  5. 传输流程

    一个典型的数据传输流程如下图。