...
采用Standard Profile的协议栈必须支持Standard类型的数据包。而当协议栈支持Long Frame模式的数据包时,Master和Slave在通讯过程中均可以随意的按照实际需要选择Standard或者Long Frame模式的数据包进行发送。
请求命令数据包
...
数据类型 | u8 | u8 | u8 | u8[n] | u8 |
---|---|---|---|---|---|
Standard: | 0x10 | Len[7..0 |
...
] | CMD | Payload[n |
...
] | CHKSUM | |||
数据类型 | u8 | u16 | u8 | u8[n |
---|
...
] |
...
u8 | |
Long |
---|
...
Frame: |
---|
...
0x50 | Len[15..0 |
...
] | CMD | Payload[n |
...
] | CHKSUM |
由Master发送的请求命令数据包采用如上2种固定的数据包结构。其中,CMD字段的大部分取值可由应用程序使用。用于对Slave具体功能的调用或者数据请求。其具体取值请参考对应的设备文档。
符合Standard Profile规范的协议栈将保留如下的CMD字段取值,用于完成协议栈本身的处理任务:
保留的CMD取值 | 描述 |
---|---|
0x00 | 强制同步帧。用于实现通讯信道同步 |
0x01 | ECHO帧,用于测试Slave通讯状况 |
0x02 – 0x0F | 保留 |
应用程序需要避免使用上述保留的CMD字段取值。
应答数据包
数据类型 | u8 | u8 | u8 | u8[n] | u8 |
---|---|---|---|---|---|
Standard: | 0x10 | Len[7..0] | Resp | Payload[n] | CHKSUM |
数据类型 | u8 | u16 | u8 | u8[n] | u8 |
Long Frame: | 0x50 | Len[15..0] | Resp | Payload[n] | CHKSUM |
保留Resp |
---|
保留的CMD取值 | 描述 |
0x00 | 强制同步帧。用于实现通讯信道同步 |
0x01 | ECHO帧,用于测试Slave通讯状况 |
0x02 – 0x0F | 保留 |
...
Wiki Markup |
---|
Standard Profile规范对Payload\[n\]的使用不做出假设。但具体的Slave设备会要求在不同的CMD字段取值情况下,对Payload\[n\]字段的数据格式做出假设。 |
应答数据包
Wiki Markup |
---|
0x10Len\[7..0\]RespPayload\[n\]CHKSUMu8u8u8u8\[n\]u8Standard:Long Frame:
0x50Len\[15..0\]RespPayload\[n\]CHKSUMu8u16u8u8\[n\]u8
<ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="47aebbc6-79be-4940-9d13-a07b13023382"><ac:parameter ac:name="">_Toc465950229</ac:parameter></ac:structured-macro><span style="color: #44546a"><em>图表</em></span> <span style="color: #44546a"><em>3-15</em></span> <span style="color: #44546a"><em>Inter-chip Protocol应答数据包格式说明</em></span>
<span style="color: #262626">由Slave发送的应答数据包满足上述2种格式。其中,CMD字段被用于对Slave先前收到的请求命令处理情况的回应。其取值必须为如下的几种:</span> |
(CMD) | 描述 |
---|---|
0x00 | 强制同步帧的应答包 |
0x01 | ECHO帧的应答包 |
0x02 | <OK> |
表示上一个请求命令被正确执行或者从协议栈角度没有遇到问题。 |
0x03 |
<Error>
表示上一个请求命令执行过程出现问题
0xFF
<Invalid>
表示上一个请求命令接收的不完整、或者数据包本身结构不正确
...
Wiki Markup |
---|
Payload\[n\]字段在应答数据包中用于存放Slave对先前Master发来的请求命令的执行结果。当本次应答的Resp为<OK>时,Paylaod\[N\]包含的具体数据定义与相关的请求命令有关。请参考具体的Slave设备手册了解详情。 |
...
<Error> 表示上一个请求命令执行过程出现问题 | |
0xFF | <Invalid> 表示上一个请求命令接收的不完整、或者数据包本身结构不正确 |
Payload[n]字段在应答数据包中用于存放Slave对先前Master发来的请求命令的执行结果。当本次应答的Resp为<OK>时,Paylaod[N]包含的具体数据定义与相关的请求命令有关。请参考具体的Slave设备手册了解详情。
当Resp为<Error> (0x03)或者<Invalid>(0xFF)时,Payload
...
[N
...
]将存放一个16bit的错误码,描述出错情况。Standard
...
Profile规范要求协议栈保留如下的错误码取值,具体含义请参考下表。Slave上的应用程序也可以定义更多的错误代码。
错误码 | 描述 |
---|---|
0x40 | 请求命令包校验和不匹配 |
0x20 | 请求命令包长度超过了当前Slave协议栈缓冲区承受范围 |
0x10 | Slave协议栈信道没有完成同步 |
0x8000 | 请求命令包中的CMD字段不被Slave支持 |
0x8001 | 请求命令在执行中遇到格式类错误,例如请求参数不符合规范 |
0x8002 | 请求命令在执行中遇到操作类错误,例如执行过程遇到问题而无法继续 |
...
0x8000 | 请求命令包中的CMD字段不被Slave支持 |
0x8001 | 请求命令在执行中遇到格式类错误,例如请求参数不符合规范 |
0x8002 | 请求命令在执行中遇到操作类错误,例如执行过程遇到问题而无法继续 |
SLAMWARE Core 协议命令
SLAMWARE Core Ctrl Bus通讯协议
SLAMWARE Core Ctrl Bus通讯协议使用Inter
...
SLAMWARE CORE CTRL BUS通讯协议使用Inter-chip通讯协议的扩展模式。
它的数据包类型域为标识SLAMWARE CORE CTRL BUS扩展模式的0xF8。在此扩展模式下,数据负载的格式为请求/应答通讯模式,应答数据包格式与标准Inter-chip通讯协议一致。根据数据包长度的类型分为如下两种格式:
格式一:
协议栈数据 | SLAMWARE Core Ctrl Bus扩展模式 | 协议栈数据 | |||
---|---|---|---|---|---|
同步标志字节 (0x50) | 数据包长度 u16 | 0xF8 | 请求命令 u8 | 数据负载 |
...
... | 校验字节 u8 |
...
格式二:
协议栈数据 | SLAMWARE Core Ctrl Bus扩展模式 | 协议栈数据 | |||
---|---|---|---|---|---|
同步标志字节 ( |
...
0x50) | 数据包长度 u8 | 0xF8 | 请求命令 u8 | 数据负载 ... | 校验字节 u8 |
SLAMWARE Core和外部系统之间的Ctrl Bus通讯协议设计为单向通讯模式,始终由SLAMWARE Core发起数据包请求。
外部系统需要及时回应SLAMWARE Core的请求命令,否则SLAMWARE Core将认为外部系统连线中断,可能停止正常工作。
请求命令与应答必须是成对出现的,每个应答总对应于一个请求命令。SLAMWARE Core在发送一个请求命令后,总会在接收到外部系统发送应答数据包或者通讯超时后,才会进行下一个请求命令的发送。
SLAMWARE Core也可以接受外部系统的控制命令,但由于单向通讯的模式,外部系统只能在SLAMWARE CORE定期发送外部系统控制命令查询请求的时候才可以发送控制命令。但外部系统可以通过#CMD信号通知SLAMWARE CORE尽快发送外部系统控制命令查询请求。
...
SLAMWARE CORE 请求命令
SLAMWARE CORE室内定位导航模块会发送以下请求命令,外部系统可以根据需要响应请求命令,否则SLAMWARE CORE CTRL BUS协议栈会做默认响应。标*的命令为外部系统必须响应的请求命令。否则SLAMWARE CORE将不能正常工作。
...