上位机通信协议(最新版请联系FAE获取)
版本 | 变更内容 | 编写人 | 日期 |
---|---|---|---|
V1.0 | First Release | 叶康 | 2021.1 |
V1.1 | 完善文档格式和示例测量数据 | 曹思宇 | 2021.4 |
V1.2 | 增加查询版本和调试串口指令 | 冷红林 | 2021.5 |
V1.3 | 增加老化测试命令 | 冷红林 | 2021.6 |
V1.4 | 增加查询chipid命令 | 冷红林 | 2021.6.22 |
V1.5 | 增加系统初始化完成 摄像头初始化异常 摄像头解析异常 算法初始化异常指令。 | 冷红林 | 2021.7.21 |
V1.6 | 增加标定协议 | 冷红林 | 2021.7.29 |
V1.7 | 优化文档说明 | 曹思宇 | 2021.8.03 |
V1.8 | 更新SPI协议说明,X轴/Y轴坐标偏移量的类型以及数值有效范围 | 曹思宇 | 2021.8.06 |
V1.9 | 补充协议中模式说明 | 曹思宇 | 2021.8.16 |
V1.10 | UART协议添加合成文本指令 工作模式添加离线单行扫描模式 | 田丰 | 2021.09.02 |
V1.11 | SPI协议添加语音和文本传输 | 田丰 施国强 | 2021.09.15 |
V1.12 | UART协议增加设置TTS合成语速 左手模式 | 施国强 | 2021.09.30 |
V1.13 | UART协议增加合成认证码和反馈的加密码 | 田丰 | 2021.11.11 |
V1.14 | UART协议添加帧反馈和开机提示指令 | 田丰 | 2021.12.06 |
#
概述CSK通过SPI和UART与上位机完成相关数据通信,包括图像数据,运行状态等。此文档用于约束SPI和UART通信的时序和协议格式。
#
SPI通信SPI通讯协议用于交互图像、音频、文本数据和参数。该协议包含三个协议格式分别用于图像、音频、文本传输,用TAG字段区别。协议采用小端模式。
#
图像协议格式帧格式 | 帧头 | 帧数据 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
标记 | 版本 | 图像编号 | 图像类型 | 图像格式 | X轴坐标偏移 | Y轴坐标偏移 | 图像宽度 | 图像高度 | 像素字长 | 帧数据校验和 | 图像数据 | |
简称 | TAG | VER | FUID | TYPE | FMT | XSFT | YSFT | WIDTH | HEIGHT | DEPTH | CHECKSUM | DATA |
长度 | 2字节 | 1字节 | 2字节 | 1字节 | 1字节 | 1字节 | 1字节 | 2字节 | 2字节 | 1字节 | 2字节 | WIDTH*HEIGHT*DEPTH字节 |
数据类型 | uint16 | uint8 | uint16 | uint8 | uint8 | char | char | uint16 | uint16 | uint8 | uint16 | uint8[] |
描述 | 固定值0x5A46 | 当前版本号0x00 | 图像编号 | 0x00:增量图像0x01:原始图像 | 0x00:灰度图 0x10:RGB888 0x11:RGB565 0x20:YUYV422 0x21:YVYU422 0x22:UYVY422 | 增量图片X轴坐标偏移量有效范围 (-128,0) | 增量图片Y轴坐标偏移量有效范围 (-20 ,20 ) | 图像宽度 | 图像高度 | 每个像素点长度 | 图像数据每个像素点数据的累加和 | 图像数据 |
#
场景1:传输裁剪后的增量图像和偏移量(正常模式)帧格式 | 帧头 | 帧数据 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
标记 | 版本 | 图像编号 | 图像类型 | 图像格式 | X轴坐标偏移 | Y轴坐标偏移 | 图像宽度 | 图像高度 | 像素字长 | 帧数据校验和 | 图像数据 | |
简称 | TAG | VER | FUID | TYPE | FMT | XSFT | YSFT | WIDTH | HEIGHT | DEPTH | CHECKSUM | DATA |
长度 | 2字节 | 1字节 | 2字节 | 1字节 | 1字节 | 1字节 | 1字节 | 2字节 | 2字节 | 1字节 | 2字节 | WIDTH*HEIGHT*DEPTH字节 |
数据类型 | uint16 | uint8 | uint16 | uint8 | uint8 | char | char | uint16 | uint16 | uint8 | uint16 | uint8[] |
描述 | 固定值0x5A46 | 当前版本号 | 编号15 | 增量图像 | 灰度图 | 增量图X轴偏移量-10 | 增量图Y轴偏移量-10 | 图像宽度128 | 图像高度180 | 每个像素点长度位1字节 | 图像数据每个像素点数据的累加和 | 图像数据,长度为128*180*1 |
数据 | 0x5A46 | 0x00 | 0x0015 | 0x00 | 0x00 | 0xF6 | 0xF6 | 0x0080 | 0x00b4 | 0x01 | 0x0000 | ... |
#
场景2:传输原始图像(产测模式)帧格式 | 帧头 | 帧数据 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
标记 | 版本 | 图像编号 | 图像类型 | 图像格式 | X轴坐标偏移 | Y轴坐标偏移 | 图像宽度 | 图像高度 | 像素字长 | 帧数据校验和 | 图像数据 | |
简称 | TAG | VER | FUID | TYPE | FMT | XSFT | YSFT | WIDTH | HEIGHT | DEPTH | CHECKSUM | DATA |
长度 | 2字节 | 1字节 | 2字节 | 1字节 | 1字节 | 1字节 | 1字节 | 2字节 | 2字节 | 1字节 | 2字节 | WIDTH*HEIGHT*DEPTH字节 |
数据类型 | uint16 | uint8 | uint16 | uint8 | uint8 | char | char | uint16 | uint16 | uint8 | uint16 | uint8[] |
描述 | 固定值0x5A46 | 当前版本号 | 编号15 | 原始图像 | 灰度图 | 无X轴偏移量 | 无Y轴偏移量 | 图像宽度128 | 图像高度180 | 每个像素点长度位1字节 | 图像数据每个像素点数据的累加和 | 图像数据,长度为128*180*1 |
数据 | 0x5A46 | 0x00 | 0x0015 | 0x00 | 0x00 | 0x00 | 0x00 | 0x0080 | 0x00b4 | 0x01 | 0x0000 | ... |
#
TTS音频传输协议帧格式 | 帧头 | 帧数据 | ||||||
---|---|---|---|---|---|---|---|---|
标记 | 音频格式 | 通道数 | 采样率 | 采样深度 | 音频长度 | 帧数据校验和 | 音频数据 | |
简称 | TAG | FMT | CHANNEL | SAMPLE | SAMPLE DEPTH | LENGTH | CHECKSUM | DATA |
长度 | 2字节 | 1字节 | 1字节 | 1字节 | 1字节 | 4字节 | 2字节 | LENGTH字节 |
数据类型 | uint16 | uint8 | uint8 | uint8 | uint8 | uint32 | uint16 | uint8[] |
描述 | 固定值0x5B46 | 0x00:PCM 0x01:mp3 ... | 0x01:单声道 0x02:双声道 0x04:四声道 | 0x00:8KHz 0x01:16KHz ... | 0x10:16bit 0x18:24bit 0x20:32bit ... | 音频数据长度 | 音频数据单字节累加和 | 音频数据 |
#
OCR文本传输协议帧格式 | 帧头 | 帧数据 | ||
---|---|---|---|---|
标记 | 文本长度 | 帧数据校验和 | 文本数据 | |
简称 | TAG | LENGTH | CHECKSUM | DATA |
长度 | 2字节 | 4字节 | 2字节 | LENGTH字节 |
数据类型 | uint16 | uint32 | uint16 | uint8[] |
描述 | 固定值0x5C46 | 文本数据长度 | 文本数据单字节累加和 | 文本数据 |
#
接口参数主从模式 | 极性相位 | 速率 | 数据大小端 | 选通信号有效电平 | 特殊说明 |
---|---|---|---|---|---|
CSK做主上位机做从 | Polarity 0 Phase 0 | 40M (后续可能提升至48M) | LSB 低位先传输 | CS低电平有效 | 由于CSK特性,SPI最大传输512字节,所以如果图像帧长度大于512字节,是分包传输 |
#
UART通信用于交互当前工作状态和信息
#
协议格式基于CSK标准UART串口通信协议文档 扩展命令帧和响应帧
传输协议的数据帧格式如下:
帧头 | 帧数据 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
固定标记 | 帧长度 | 帧编号 | 帧头校验 | 类型 | 地址 | 命令字 | 命令数据 | 帧数据校验 | ||
FTAGL | FTAGH | FLENL | FLENH | FUID | LCHK | TYPE | REG | CMD | DATA | DCHK |
帧头说明:
名称 | 长度(byte) | 说明 |
---|---|---|
固定标记 | 2 | 固定为FTAGL = 0x58,FTAGH = 0x46。 |
帧长度 | 2 | 由两个字节组成,低字节在前,高字节在后;表示整个命令帧的长度。 |
帧序号 | 1 | 表示命令帧的序号,确保短时唯一。 |
帧头校验 | 1 | 采用按字节累加和校验;即:(FTAGL + FTAGH + FLENL + FLENH + FUID + LCHK)% 256 = 0 |
帧数据说明:
名称 | 长度(byte) | 说明 |
---|---|---|
类型 | 1 | 命令帧为0xF0,响应帧(from CSK)为0xFF。 |
地址 | 1 | 预留,固定为0x00。 |
命令字 | 1 | 表示命令帧/响应帧的命令字。 |
命令数据 | X | 不同命令类型,有不同的命令数据结构,具体见:业务协议。 |
帧数据校验 | 1 | 采用按字节累加和校验;即: (TYPE + REG + CMD + DATA + DCHK)% 256 = 0 |
#
命令帧#
0x19查询软件版本用于上位机查询CSK的当前版本:包括固件版本、算法版本,以及chipid。
帧数据 | ||||
---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | 帧数据校验 |
TYPE | REG | CMD | DATA | DCHK |
1字节 | 1字节 | 1字节 | 1字节 | 1字节 |
0xF0命令帧 | 0x00 | 0x19 | 0x00:查询固件和拼接算法固件 0x01:查询固件版本 0x02:查询拼接算法版本 0x03:查询chipid 0x04:查询切行算法版本 0x05:查询OCR算法版本 0x06:查询TTS引擎版本 0x07:查询TTS发音人ID 0x10: 查询以上的所有信息 | 帧数据校验 |
使用示例
命令帧:查询01固件版本
58 46 0B 00 04 53 F0 00 19 01 F6
响应帧:版本信息返回
58 46 0B 00 04 53 FF 00 01 10 F0, 58 46 0E 00 05 4F FF 00 04 01 01 01 15 E5
#
0x50设置工作模式用于上位机设置CSK的当前工作模式:单行扫描模式、多行扫描模式、录音模式等。
帧数据 | |||||
---|---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | 说明 | 帧数据校验 |
TYPE | REG | CMD | DATA | DCHK | |
1字节 | 1字节 | 1字节 | 1字节 | 1字节 | |
0xF0命令帧 | 0x00 | 0x50工作模式 | 0x00:单行扫描模式0x01:多行扫描模式0x02:录音模式 0x03:产测模式 0x04:调试模式 0x05:老化模式 0x06:标定模式 0x07:离线单行扫描模式 | 产测模式:按压后,算法不运行,输出128*180的原图,其中输出的是第10帧图片,以供上位机UI显示原图,产测是否有遮挡或摄像头正常出图。 调试模式:按压后,算法不运行,输出128*180的原图,持续输出,为算法优化提供原图。 老化模式:无需按压,补光灯打开,算法运行,输出128*180的原图,持续输出图片。 | 帧数据校验 |
使用示例
命令帧:设置成在线单行扫描模式
58 46 0b 00 04 53 f0 00 50 00 C0
响应帧:设置成功返回
58 46 0B 00 04 53 FF 00 01 10 F0
#
0x51设置功能参数帧数据 | ||||||
---|---|---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | 帧数据校验 | ||
TYPE | REG | CMD | DATA | DCHK | ||
1字节 | 1字节 | 1字节 | 1字节 | 2字节 | 1字节 | |
0xF0命令帧 | 0x00 | 0x51设置参数 | 参数类型 | 数据 | ||
0x00多行扫描时间间隔 | 单位0.1S | 帧数据校验 | ||||
0x01 TTS合成基线语速 | 语种(1字节) 0:英文 1:中文(暂不支持) | 语速(1字节) 50-150 | ||||
0x02 TTS合成语速 | 语种,同上 | 0:慢速,0.6倍基线语速 1:中速,0.7倍基线语速 2:快速,1.0倍基线语速 | ||||
0x03 左手模式 | 0:右手(默认值) 1:左手 | |||||
... | ... |
使用示例
命令帧:设置左手持笔
58 46 0d 00 04 51 f0 00 51 03 01 00 bb
响应帧:设置成功返回
58 46 0B 00 04 53 FF 00 01 10 F0
#
0x53下发合成文本帧数据 | |||||
---|---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | 帧数据校验 | |
TYPE | REG | CMD | DATA LEN | DATA | |
1字节 | 1字节 | 1字节 | 4字节 | 1字节 | |
0xF0命令帧 | 0x00 | 0x53合成文本 | 合成文本长度 | 文本字符串 | 帧数据校验 |
使用示例
命令帧:下发合成文本(文本为abcd)
58 46 17 00 04 47 f0 00 53 09 00 00 00 E4 B8 80 E4 BA 8C E4 B8 89 49
响应帧:设置成功返回
58 46 0B 00 04 53 FF 00 01 10 F0 ,58 46 0B 00 05 52 FF 00 50 0B A6 ,58 46 0B 00 05 52 FF 00 50 0C A5
#
0x54下发合成认证码帧数据 | |||||
---|---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | 帧数据校验 | |
TYPE | REG | CMD | DATA LEN | DATA | |
1字节 | 1字节 | 1字节 | 4字节 | 1字节 | |
0xF0命令帧 | 0x00 | 0x54合成认证 | 认证码长度 | 认证码字符串 | 帧数据校验 |
#
响应帧#
0x01命令帧反馈系统正常启动、接收到命令帧后,CSK会发送本响应。
帧数据 | ||||
---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | |
TYPE | REG | CMD | DATA | DCHK |
1字节 | 1字节 | 1字节 | 1字节 | 1字节 |
0xFF响应帧 | 0x00 | 0x01命令帧反馈 | 0x00:系统初始化成功(系统正常启动后,会主动发送该响应) 0x10:收到正确的命令 0x11:数据帧格式错误 0x12:数据帧参数错误 | 帧数据校验 |
#
0x50反馈工作状态用于CSK反馈上位机当前的工作状态:待机状态,扫描状态,等待状态,拒绝状态等。
帧数据 | ||||
---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | |
TYPE | REG | CMD | DATA | DCHK |
1字节 | 1字节 | 1字节 | 1字节 | 1字节 |
0xFF响应帧 | 0x00 | 0x50工作状态 | 0x00:待机状态0x01:扫描状态0x02:等待状态0x03:拒绝状态 0x04;标定状态 0x05:系统初始化完成 0x06:摄像头初始化异常 0x07:摄像头解析异常 0x08:算法初始化异常 0x09:OCR文本输出中 0x0A:OCR文本输出结束 0x0B:TTS合成输出中 0x0C:TTS合成输出结束 | 帧数据校验 |
#
0x51反馈标定状态帧数据 | ||||||
---|---|---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | 帧数据校验 | ||
TYPE | REG | CMD | DATA | DCHK | ||
1字节 | 1字节 | 1字节 | 1字节 | 1字节 | 1字节 | 1字节 |
0xFF响应帧 | 0x00 | 0x51标定状态 | 标定状态值 | X坐标 | Y坐标 | 帧数据校验 |
标定状态值 | value |
---|---|
ADJUST_OK | 0 |
ERROR_FULL_BLACK | (0b01 << 1) |
ERROR_CENTER_WHITE | (0b01 << 2) |
ERROR_UPON_LIGHT_OFF | (0b01 << 3) |
ERROR_DOWN_LIGHT_OFF | (0b01 << 4) |
#
0x04反馈软件版本用于CSK反馈上位机当前软件版本。
帧数据 | ||||
---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | 帧数据校验 |
TYPE | REG | CMD | DATA | DCHK |
1字节 | 1字节 | 1字节 | 4字节 | 1字节 |
0xFF响应帧 | 0x00 | 0x04软件版本 | 0x01:固件版本0x02:拼接算法版本 0x03:CHIPID 0x04:切行算法版本 0x05:OCR算法版本 0x06:TTS引擎版本 0x07:TTS发音人ID 0x10:以上信息汇总 VER_1:主版本 VER_2:次版本号 VER_3:保留 | 帧数据校验 |
#
0x52反馈合成加密码帧数据 | |||||
---|---|---|---|---|---|
类型 | 地址 | 命令字 | 命令数据 | 帧数据校验 | |
TYPE | REG | CMD | DATA LEN | DATA | DCHK |
1字节 | 1字节 | 1字节 | 4字节 | 1字节 | |
0xFF响应帧 | 0x00 | 0x52合成加密 | 加密码长度 | 加密码字符串 | 帧数据校验 |
#
接口参数波特率 | 数据位 | 校验位 | 停止位 |
---|---|---|---|
115200 | 8 | 无 | 1 |