基础服务

更新时间:2024-05-21 09:16:05下载pdf

本文主要介绍蜂窝标准协议的通信格式及基础功能。涂鸦 LTE Cat.1 模组串口通用协议主要用于涂鸦 LTE Cat.1 模组与其它 MCU 串口直连做串口通信,其架构框如下图所示:

基础服务

串口通信

  • 波特率:115200/9600/460800/921600(自动侦测 2 分钟,如果未侦测到,则默认使用 115200)
  • 数据位:8
  • 奇偶校验:无
  • 停止位:1
  • 数据流控:无
  • MCU:用户控制板控制芯片,与涂鸦模组通过串口对接

帧格式

字段 字节数 说明
帧头 2 固定为 0x55aa
版本 1 升级扩展用
命令字 1 具体帧类型
数据长度 2 大端
数据 N -
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余
  • 所有大于一个字节的数据均采用大端模式传输。

  • 一般情况下,采用同命令字一发一收同步机制,即一方发出命令,另一方应答,如下图所示。若发送方超时未收到正确的响应包,则超时传输。

    MCU模组发送命令字 N应答命令字 NMCU模组
  • 若 MCU 发送命令后,模组在 2 分钟内无任何回复,则 MCU 需重启模组。MA510 模组在系统固件 OTA 升级完成后会重启,该重启无法通知 MCU。若 MA510 模组启动时 uart3_tx 为高,则会导致模组无法启动,需 MCU 重启模组。

  • 模组控制命令下发,MCU 状态上报则采用异步模式。假设模组控制命令下发 命令字 为 X,MCU 状态上报 命令字 为 Y,如下所示:

    • 模组下发控制命令:

      模组MCU模组下发控制命令字 XMCU 上报状态命令字 Y模组MCU
    • MCU 上报状态:

      MCU模组MCU 上报状态命令字 YMCU模组

不支持命令返回格式

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0xFF
数据长度 2 2+N(版本信息长度)
数据 2+N
  • Data[0]:命令字
  • Data[1]:子命令
  • Data[2:–]:版本信息字符串
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:55 AA 00 FF 00 07 70 24 31 2E 30 2E 31 87

基础服务

心跳检测(0x00)

  • 以 15s 的间隔定期发送心跳。若在 90s 超时时间内未收到 MCU 的任何回应,则认为与 MCU 通信异常,模组自动内部软件重启复位。

  • MCU 也可依据此心跳,定期检测模组是否正常工作。若模组无心跳下发,则 MCU 可通过模组提供的硬件复位引脚来复位模组。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x00
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:0x55aa 00 00 0000 ff

MCU 返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x00
数据长度 2 0x0001
数据 1
  • 0x00:MCU 重启后第一次心跳返回值。仅发送一次,用于模组判断工作过程中 MCU 是否重启。
  • 0x01:除 MCU 重启后第一次返回 0x00 外,其余均返回此值。
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:
0x55aa 03 00 0001 00 03(MCU 第一次返回)
0x55aa 03 00 0001 01 04(除第一次外,正常返回)

查询产品信息(0x01)

产品信息由 PID(product ID)和 MCU 软件版本构成。

  • PID:为产品标识,由 涂鸦开发者平台 生成,用于云端记录产品相关信息。
  • MCU 软件版本号格式定义:采用点分十进制形式,格式为 "x.x.x"(0 ≤ x ≤ 99),x 为十进制数。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x01
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

示例:0x55aa 00 01 0000 00

MCU 返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x01
数据长度 2 N
数据 N {“p”:“AIp08kLIftb8x2x0”,
 “v”:“1.0.0”,
 “m”:1,
 “apn”:“cniot”,
 “mht”:60,
 “qr”:1,
 “slave”:1,
 “ext_ota”:[ {
  “ch”:1,
  “v”:“0.1.1”
  },
  …
 {
  “ch”:n,
  “v”:“0.1.n”
  }],
 “U”:0,
 “dp_cache”:1,
 “cops”:“xxx”
“dp_ack”:1,
“online_tts”:0 }
其中 apn 是可选项。如果没有 apn,系统自动配置 apnmhtqrslave 是可选项。
校验和 1 从帧头开始按字节求和得出的结果对 256 求余

示例:{"p":"AIp08kLIftb8x2x0", "v":"1.0.0", "m":1}

  • p:表示产品 ID 为 AIp08kLIftb8x2x0

  • v:表示 MCU 版本为 1.0.0。

  • m:表示模组的功耗:

    • 0:正常功耗
    • 1:低功耗,提供的定时器为 1 秒一个周期
  • mht:表示模组的 MQTT 心跳间隔时间,单位秒。默认心跳间隔 300s。

  • qr:表示模组获取扫码配网使用的二维码短码的字段。

    • qr 字段设置为 1 时,会获取二维码短码。
    • 设置为 0 时不会获取二维码短码。如果设备已经绑定,不再获取短码地址。
  • slave:表示低功耗蓝牙搭配 LTE Cat.1 的模式。

  • ext_ota:表示附属 MCU 多通道固件版本。v 版本信息最大 10 字节,最多支持 6 组。但是,应用固件和基础固件占用的通道不能用。

  • U:表示 MCU OTA 升级方式选择:

    • 0:协议版本为 0

    • 1:协议版本为 1

      • slave 配置时,U 未配置,固定协议版本为 0。
      • slave 配置时,U 有配置,0 表示协议版本 0,1 表示协议版本 1。
      • slave 未配置时,U 未配置,固定协议版本为 0。
      • slave 未配置时,U 有配置,0 表示协议版本 0,1 表示协议版本 1。
  • dp_cache:是否开启 DP 缓存。开启 DP 缓存需要额外的云端功能。如果您有需求,请联系您的涂鸦客户经理。

    • 1:开启。
    • 其他:关闭。
  • cops:该字段为可选项。设置运营商 PLMN(Public Land Mobile Network)值。该值必须是数字编码。例如 cops:"20416",该字段等同于 AT 指令:AT+COPS=1,2, "xxxxx"。 若为 LTE Cat-M1 模组,联系产品经理确认是否需要设置该值。

  • dp_ack:该字段为可选项。1 为开启,开启后下发 DP 数据给 MCU,会进行 ACK 确认,未收到 ACK 会进行重发。最多重发三次,每次等待 ACK 为 500ms。

  • online_tts:该字段设置为 1 的时候,表示支持涂鸦在线 TTS(Text-to-Speech)音频功能。该功能只有在模组支持音频服务时才有效。

  • gps:GPS 型号,默认为和芯星通 UFirebird。Allystar 为华大 GPS 模组,使用 AGNSS 服务时需指定 GPS 型号。通用对接协议版本为 1.1.3 及以上。

  • env_pre1 表示预发环境,其余为正式环境。通用对接协议版本为 1.1.3 及以上。

  • net_type(仅 MA510 支持): 通用对接协议版本为 1.1.4 及以上。

    • 0 或者无该字段时:自动
    • 1:GSM 网络
    • 2:LTE 网络
    • 4:CATM 网络
    • 5:NB-IoT 网络

    在配置该字段时,需确认模组支持的网络类型

查询 MCU 设定模块的工作模式(0x02)

模组工作模式区分设置模组的工作状态以及重置模组方式,分两种情况:

  • MCU 与模组配合处理:

    • 即模组通过串口通知 MCU 当前的工作状态,由 MCU 提供显示支持。
    • MCU 检测出模组的重置需求,通过串口通知模组重置模组。
  • 模组自处理:

    • 模组的工作状态通过模组的 NET_MODE 引脚驱动 LED 状态显示。
    • 模组重置通过检测 GPIO 输入需求处理。模组检测 GPIO 入口低电平持续 3s 以上,触发模组重置。指示灯与按钮所使用的 GPIO 管脚由以下命令配置,但是在低功耗模式无法触发该功能。

    模组自处理模式下,LED 灯只支持 NET_MODE 指示灯。此时,模组不上报设备联网状态

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x02
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:0x55aa 00 02 0000 01

MCU 返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x02
数据长度 2
  • 0x0000:指示模组工作为 MCU 与模组配合处理 模式,MCU 需实现上述 说明 中提及的功能。
  • 0x0002:指示模组工作为 模组自处理 模式。
数据 0/2 数据长度为 2,首字节为模组状态指示 GPIO 序号(固定值为 0)。次字节为模组重置按键 GPIO 序号。
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:

  • 0x55aa 03 02 0000 04(MCU 与模组配合处理)
  • 0x55aa 03 02 0002 0c0d 1f(模组自处理,指示灯 0x0c:GPIO12,复位按钮 0x0d:GPIO13)

报告设备联网状态(0x03)

设备联网状态 描述 状态值 自处理模式状态灯
状态 1 SIM 卡未连接 0x00 常亮
状态 2 搜索网络中 0x01 亮 0.1s,灭 0.3s
状态 3 已成功注册未联网 0x02 亮 0.1s,灭 1s
状态 4 联网成功并获取到 IP 0x03 亮 0.1s,灭 2s
状态 5 设备已连接到云端 0x04 亮 0.1s,灭 3s
状态 6 SIM 基站注册被拒绝,可能是 SIM 当前的业务未开通 0x05 亮 0.1s,灭 0.1s
状态 7 设备待配网 0x06 亮 0.1s,灭 2s
状态 8 未知状态 0xFF -

  • 设备联网状态:
    • 1:SIM 卡未连接
    • 2:搜索网络中
    • 3:已成功注册未联网
    • 4:联网成功并获取到 IP
    • 5:设备已连接到云端
    • 6:是 SIM 基站注册被拒绝,可能是 SIM 当前的业务未开通
    • 7:设备等待配网
  • 当模组检测到 MCU 重启或 MCU 断线再上线的事件,会主动下发联网状态至 MCU。
  • 当模组的联网状态发生变化,会主动下发联网状态至 MCU。
  • 如设置模组工作模式为 模组自处理,则 MCU 无需实现该协议。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x03
数据长度 2 0x0001
数据 1 参考 状态说明
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:0x55aa 00 03 0001 00 03

MCU 返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x03
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:0x55aa 03 03 0000 05

模组重置(0x04)

LTE Cat.1 模组接收到重置命令后,解除设备和云端绑定。

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x04
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:0x55aa 03 04 0000 06

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x04
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

示例:0x55aa 00 04 0000 03

获取版本信息(0x71 41)

MCU 发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 1 子命令:0x41
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+n
数据 n
  • 子命令:0x41
  • 结果:0 表示失败,1 表示成功
  • 版本信息:内容字符串,示例:
    fw_name:xxx,fw_ver:xxx;app_name:xxx,app_ver:xxx;pro_name:xxx,pro_ver:xxx;
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余

二维码主动推送给 MCU(0x72 93)

设备从云端获取二维码短链接后,主动发送给 MCU。该功能一般使用在有屏的设备且需要在屏幕上显示绑定二维码。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0001+N
数据 1+N
  • 子命令:0x93
  • 短连接地址(字符串格式)
校验和 1 从帧头开始按字节求和,得出的结果对 256 求余