一. 基本通信流程
.1.1 UART 命令包的处理过程![](https://i-blog.csdnimg.cn/blog_migrate/fb194a6fce933ca7956a76435a0433e0.png)
1.2 UART 数据包的发送过程
UART 传输数据包前,首先要接收到传输数据包的指令包,做好传输准备后发送成功应答包,最后才开始传输数据包。数据包主要包括:包头、设备地址、包标识、包长度、数据和校验和。
数据包的包标识主要分为两种:02H 和 08H。02H:数据包,且有后续包。08H:最后一个数据包,即结束包。数据长度是预先设置好的,主要分为:32、64、128、和256 四种。例如,要传输的数据长度为 1K bytes,数据包中预先设置的数据长度为128 bytes,那么就要把 1K bytes 的数据分为 8 个数据包传输。每个数据包包括:2 bytes 包头、4 bytes 设备地址、1 bytes 包标识、2 bytes 包长度、128 bytes 数据和 2 bytes 校验和,每个数据包长度为 139 bytes。另外,8 个数据包中, 前 7 个数据包的报标识是 02H,最后一个结束数据包报标识是 08H。最后需要注意的是,结束包如果长 度没有达到 139 bytes 时,以实际长度传输,不会以其他方式扩充到 139 bytes。
.1.3 UART 数据包的接收过程
UART 传输数据包前,首先要接收到传输数据包的指令包,做好传输准备后发送成功应答包,最后才开始传输数据包。数据包主要包括:包头、设备地址、包标识、包长度、数据和校验和。
数据包的包标识主要分为两种:02H 和 08H。02H:数据包,且有后续包。08H:最后一个数据包,即结束包。数据长度是预先设置好的,主要分为:32、64、128、和256 四种,。
例如,要传输的数据长度为 1K bytes,数据包中预先设置的数据长度为128 bytes,那么就要把 1K bytes 的数据分为 8 个数据包传输。每个数据包包括:2 bytes 包头、4 bytes 设备地址、1 bytes 包标识、2 bytes 包长度、128 bytes 数据和 2 bytes 校验和,每个数据包长度为 139 bytes。另外,8 个数据包中, 前 7 个数据包的报标识是02H,最后一个结束数据包报标识是 08H。最后需要注意的是,结束包如果长度没有达到139 bytes 时,以实际长度传输,不会以其他方式扩充到 139 bytes。
二 通用指令通信流程
2.1 通用指令注册指纹流程
通用指令注册指纹流程主要包含:注册用获取图像、生成特征、合并特征和存储模板。通常 N = 2 次
2.2 通用指令验证指纹流程
通用指令验证指纹流程主要包含:验证用获取图像、生成特征和搜索指纹。其中发送生成特征和搜 索指纹时,BufferID 设为默认值为 1。
2.3 从 flash 指纹库中读取一个指定的模板上传
整个流程主要包含:读出模板和上传特征。其中发送读出模板和上传特征时,BufferID设为默认值为 2。
2.4 从主控下载一个模板
2.5 主控下载一个指纹模板进行搜索比对
整个流程主要包含:下载模板和搜索指纹。其中下载模板时,BufferID 设为默认值1。