只要你会Uart接口控制编程,就能轻松实现加密模块控制。QQ:1900109344
1. 概述
本文档适用于使用国密算法芯片进行终端产品开发的用户。终端开发者通过Uart口发命令的方式操作国密算法芯片进行数据交换,产品应用开发。通过阅读本文档,终端开发者可以在无需考虑算法实现细节情况下,迅速完成产品开发。
2. 基本特征
芯片的基本特征见下表:
串口波特率 |
115200 bps(默认) |
供电电源 |
DC 3.3V,5V |
通讯接口 |
UART |
3. 通信协议
3.1. 物理层
国密算法芯片采用系统供电方式,电压5V或者3.3V。国密芯片串口与系统MCU串口相连,异步全双工通讯,波特率默认为115200bps。数据格式为1位起始位、8位数据位和1位停止位,无校验位。
系统MCU向国密算法芯片发送命令时,在同一个命令内,相连两个发送字符之间的间隔不应大于10个字符时间,否则芯片可能会认为命令超时导致无任何响应。
3.2. 链路层
3.2.1. 通讯数据包定义
通信数据包如下图所示:
STX(0x02) |
Len_Hi |
Len_Low |
Data |
LRC |
ETX(0x03) |
通讯数据包项目、长度、含义说明对应见下表:
通讯数据包项目含义一览表
序号 |
项 目 |
长度(字节) |
说明 |
1 |
数据包头(STX) |
1 |
常量:0x02 |
2 |
数据单元长度(Len) |
2 |
需传输的数据单元Data部分的长度,高字节在前,低字节在后。 例如:0x0010表示Data部分有16个字节。 |
3 |
需传输的数据单元(Data) |
不定 |
长度由Len指出,数据单元头两个字节是命令码(系统发送命令到芯片)或状态码(芯片返回数据给系统),后面是其它参数。 |
4 |
冗余检验值(LRC) |
1 |
Data部分数据各字节异或值。 |
5 |
数据包尾(ETX) |
1 |
常量:0x03 |
3.2.2. 协议描述
系统MCU首先发送一个命令数据包,发送完成后等待来自国密芯片的应答数据包。
国密芯片正确收到命令数据包后,便执行命令,然后回应应答数据包。
3.3. 数据单元格式
3.3.1. 命令单元格式
MCU向国密芯片发送的数据包称为命令数据包,命令数据包的格式如下图所示:
STX(0x02) |
Len_Hi |
Len_Low |
CommandH |
CommandL |
Command Param |
LRC |
ETX(0x03) |
命令单元格式见下表:
命令单元格式一览表
项目 |
长度 |
说明 |
CommandH |
1字节 |
命令类别 |
CommandL |
1字节 |
命令代码 |
【参数】 |
不定长 |
命令参数 |
3.3.2. 应答单元格式
国密芯片向系统MCU应答数据包,如下图所示:
STX(0x02) |
Len_Hi |
Len_Low |
StatusH |
StatusL |
Status Data |
LRC |
ETX(0x03) |
应答单元格式见下表:
应答单元格式一览表
项目 |
长度 |
说明 |
StatusH |
1字节 |
状态码高字节 |