由 WT_0213 贡献,Ai-Thinker 进行整理
一、产品介绍
HLK-FPM383C系列指纹模块具备完整的指纹处理能力,可以在无需上位机参与的情况 下,完成指纹录入,图像处理,指纹比对,指纹特征储存等功能。和同类指纹产品相比, 具有以下特色: ❖ 模组集成化高、体积更小、功耗更低。 ❖ 模组使用自主研发指纹识别算法和芯片,各项性能指标优于同类产品。 ❖ 模组使用的指纹识别算法提供模板拼接功能,提升用户体验。 ❖ 模组采用指纹特征储存在算法芯片中的方案,可以防止指纹特征被暴力破解,提 高产品安全等级。 ❖ 产品具备防雾防尘防破坏能力,有效解决了人体静电的影响、提高了产品采像质 量、增加了产品耐用性。 ❖ 模组传感器表面可按用户要求定制颜色。 ❖ 模组具有触摸唤醒功能,并可有效识别塑胶手指、硅胶手指、橡胶手指、指模、 指套等假手指。 ❖ 产品结构简单,模组化设计,提高了产品的稳定性和一致性、便于大规模批量生 产。 ❖ 公开接口代码和命令集,可实现组装式二次开发,降低客户开发难度。 ❖ 自主知识产权技术可为客户提供高效、灵活的二次开发支持,充分满足客户需求 且无知识产权纠纷 ### 二、接口定义
a) UART 缺省波特率为 57.6Kbps,数据格式:8 位数据位,2 位停止位,无校验位; b) UART 波特率可以通过指令进行设置,范围从 9600 至 115200; c) 如果主控是 MCU(3.3V),则直接与 UART\_TD 和 UART\_RD 连接;如果主控是 PC,则需要挂接 RS232 电平转换设备 ### 三、应用范围 HLK-FPM383C系列指纹模块应用广泛,适合各类指纹识别系统,例如: ❖ 指纹门锁、保险柜、枪盒、金融等安全领域; ❖ 门禁系统、工控机、POS 机、驾培、考勤等身份领域; ❖ 私人会所、管理软件、授权许可等管理领域; ### 四、串行协议
模块上电后,约需200ms时间进行初始化工作。在此期间,模块不能响应上位机命令。 通讯协议定义了 HLK-FPM383C 系列模板与上位机之间进行数据交换的规则。硬件上采 用 UART 接口,软件实现上参考如下通讯协议和指令集。 本协议为2层结构:应用层和链路层。应用层主要负责具体功能定义,链路层用来进行 数据传输。在传输协议中定义的2字节或者4字节,采用小字节序(little endian),高位在 前低位在后(例如 0x12345678 实际传输方式为 0x12 0x34 0x56 0x78,不是 0x78 0x56 0x34 0x12)。 链路层描述(UART) UART 链路层为半双工点对点工作方式,所有命令必须由上位机发起,指纹模块进行响应。UART 数据帧格式:
说明: 帧头:UART 起始头界定,无论是上位机发送数据还是指纹模块发送数据,帧头数据固定为 0xF1 1F E2 2E B6 6B A8 8A; 应用层数据长度:描述应用层实际数据的长度,此数据长度不包含帧头、应用层数据长 度、帧头校验和 3 部分; 帧头校验和:为帧头+应用层数据长度的校验和,用来检查数据长度是否有误。
### 五、正文 下面介绍一下FPM383C指纹识别模块用到的指令与指令的详细介绍。 包含: 自动注册、自动验证、图像获取、生成特征、搜索指纹、清空指纹和LED灯光的控制。 ### 1、自动注册模板PS\_AutoEnrol 功能说明: 一站式注册指纹,包含采集指纹、生成特征、组合模板、存储模板等功能。如 表 2-1 中加密等级设置为 0 或 1 情况下支持此功能。 输入参数: ID 号,录入次数,参数 返回参数: 确认字,参数 指令代码: 31H 指令包格式:
辅助说明: ID 号:高字节在前,低字节在后。例如录入 1 号指纹,则是 0001H。 录入次数:1byte,录入 2 次,则为 02H,录入 4 次则为 04H。 参数:最低位为 bit0。 1) bit0:采图背光灯控制位,0-LED 长亮,1-LED 获取图像成功后灭; 2) bit1:采图预处理控制位,0-关闭预处理,1-打开预处理; 3) bit2:注册过程中,是否要求模组在关键步骤,返回当前状态,0-要求返回,1-不 要求返回; 4) bit3:是否允许覆盖 ID 号,0-不允许,1-允许; 5) bit4:允许指纹重复注册控制位,0-允许,1-不允许; 6) bit5:注册时,多次指纹采集过程中,是否要求手指离开才能进入下一次指纹图 像采集, 0-要求离开;1-不要求离开; 7) bit6\~bit15:预留 应答包格式: 
指令说明: 1) 若指定 ID 号无效,则确认码 、参数1 和参数 2 返回(以下直接描述为返回):0b 00 00H。合法性检测: 若指定 ID 号无效,则返回:0b 00 00H。 若录入次数配置错误,则返回 25 00 00H。在不覆盖指纹状态下,若指纹库 已满则返回 1f 00 00H; 若指定 ID 号已存在模板则返回 22 00 00H。 指令合法性检测成功,则返回 00 00 00H,并进入第一次指纹录入。 2) 等待彩图成功(返回 00 01 0nH)。 3) 等待生成特征成功(00 02 0nH),如果失败(07 02 0nH),重新等待彩图成功。 4) 等待手指离开,第一次录入成功(00 03 0nH),手指离开后跳转到步骤 2,进入下一 次循环,直到 n 为设置录入的次数。注:若录入过程中设置为手指不需要离开,那么 直接返回第一次录入成功,并跳转到步骤 2;最后一次采集指纹,没有手指离开录入成 功的应答。 5) 合成模板,将之前获取的手指特征组合成一个手指模板,成功返回 00 04 F0H,失败返 回 0A 04 F0H。 6) 指纹重复检查,指将新录入的手指与已经存储的手指进行匹配检查(通过设置参数 bit4 开启或者关闭此功能),若有相同指纹,则返回 27 05 F1H,结束流程;若没有相同 指纹,则返回 00 05 F1H。 7) 登记该模板数据,存储失败返回 01 06 F2H,结束流程;成功返回 00 06 F2H。 8) 若收到 PS\_Cancel 指令,则终止该指令并返回应答 ### 2、自动验证指纹PS\_AutoIdentify 功能说明: 自动采集指纹包含获取图像,生成特征,搜索指纹等功能。如表 2-1 中加密等 级设置为 0 或 1 情况下支持此功能。 输入参数: 分数等级,ID 号 返回参数: 确认字,页码(相配指纹模板) 指令代码: 32H 指令包格式
辅助说明: ID 号:2byte,大端模式。比如录入 1 号指纹,则是 0001H。ID 号为 0xFFFF,则进行 1:N 搜索;否进行 1:1 匹配 参数:最低位为 bit0。 1) bit0:采图背光灯控制位,0-LED 长亮,1-LED 获取图像成功后灭; 2) bit1:采图预处理控制位,0-关闭预处理,1-打开预处理; 3) bit2:注册过程中,是否要求模组在关键步骤,返回当前状态,0-要求返回,1-不要求 返回; 4) bit3\~bit15:预留。 应答包格式: 

指令说明: 1) 若指纹库为空,则确认码和参数返回(以下直接描述为返回):24 00H。若指定 ID 号无 效,则返回 0b 00H。若已登记的 Template 不存在,则返回 23 00H。 2) 指令合法性检测成功,返回 00 00H,并进入指纹录入。 3) 在设定的超时时间内,若没有完成一次完整的指纹录入,则返回 26 00H,结束流程。 4) 检查输入的指纹图像的正确性。若不正确,则等待下次采集图像。 5) 若输入指纹正确,则返回 00 01H,即录入指纹获取图像成功。 6) 若生产特征失败,则返回 09 05H,结束流程。 7) 生成特征成功后,把当前采集到的指纹模板与已登记的指纹模板之间进行比对,并返回 其结果。若比对失败,则返回 09 05H,结束流程;若比对成功,则返回 00 05H,以及 正确的 ID 号码和得分。 8) 若收到 PS\_Cancel 指令,则终止该指令并返回应答。 ### 3、验证用获取图像PS\_GetImage 功能说明: 验证指纹时,探测手指,探测到后录入指纹图像存于图像缓冲区。返回确认码 表示:录入成功、无手指等。 输入参数: none 返回参数: 确认字 指令代码: 01H 指令包格式:
应答包格式:
注:确认码=00H 表示获取图像成功; 确认码=01H 表示收包有错; 确认码=02H 表示传感器上无手指; sum 指校验和 ### 4、生成特征PS\_GenChar 功能说明: 将图像缓冲区中的原始图像生成指纹特征文件存于模板缓冲区。 输入参数: BufferID(正整数) 返回参数: 确认字 指令代码: 02H 指令包格式:
注:在注册过程中,BufferID 表示此次提取的特征存放在缓冲区中的位置;其他情况中, BufferID 有相应的默认值。 应答包格式:
注:确认码=00H 表示生成特征成功; 确认码=01H 表示收包有错; 确认码=06H 表示指纹图像太乱而生不成特征; 确认码=07H 表示指纹图像正常,但特征点太少而生不成特征; 确认码=08H 表示当前指纹特征与之前特征之间无关联;(默认关闭此功能) 确认码=0aH 表示合并失败; 确认码=15H 表示图像缓冲区内没有有效原始图而生不成图像; 确认码=28H 表示当前指纹特征与之前特征之间有关联;(默认关闭此功能) sum 指校验和。 ### 5、搜索指纹PS\_Search 功能说明: 以模板缓冲区中的特征文件搜索整个或部分指纹库。若搜索到,则返回页码。 如表 2-1 中加密等级设置为 0 或 1 情况下支持此功能。 输入参数: BufferID(默认为 1),StartPage(起始页),PageNum(页数) 返回参数: 确认字,页码(相配指纹模板),得分 指令代码: 04H 指令包格式:
应答包格式:
注:确认码=00H 表示搜索到; 确认码=01H 表示收包有错; 确认码=09H 表示没搜索到;此时页码与得分为 0; 确认码=17H 表示残留指纹或两次采集之间手指没有移动过; 确认码=31H 表示功能与加密等级不匹配; sum 指校验和 ### 6、清空指纹库PS\_Empty 功能说明: 删除 flash 数据库中所有指纹模板。 输入参数: none 返回参数: 确认字 指令代码: 0dH 指令包格式:
应答包格式:
注:确认码=00H 表示清空成功; 确认码=01H 表示收包有错; 确认码=11H 表示清空失败; sum 指校验和 ### 7、LED控制灯指令PS\_ControlBLN 功能说明: 控制灯指令主要分为两类:一般指示灯和七彩编程呼吸灯。 输入参数: 功能码,起始颜色,结束颜色,循环次数 返回参数: 确认字 指令代码: 3CH 指令包格式:
辅助说明 功能码:LED 灯模式控制位,1-普通呼吸灯,2-闪烁灯,3-常开灯,4-常闭灯,5-渐开灯, 6-渐闭灯,其他功能码不适用于此指令包格式; 起始颜色:设置为普通呼吸灯时,由灭到亮的颜色,只限于普通呼吸灯(功能码 01)功能, 其他功能时,与结束颜色保持一致。其中,bit0 是蓝灯控制位;bit1 是绿灯控制位;bit2 是 红灯控制位。置 1 灯亮,置 0 灯灭。例如 0x01\_蓝灯亮,0x02\_绿灯亮,0x04\_红灯亮,0x06\_红绿 灯亮,0x05\_红蓝灯亮,0x03\_绿蓝灯亮,0x07\_红绿蓝灯亮,0x00\_全灭; 结束颜色:设置为普通呼吸灯时,由亮到灭的颜色,只限于普通呼吸灯(功能码 0x01),其 他功能时,与起始颜色保持一致。设置方式与起始颜色一样; 循环次数:表示呼吸或者闪烁灯的次数。当设为 0 时,表示无限循环,当设为其他值时, 表示呼吸有限次数。循环次数适用于呼吸、闪烁功能,其他功能中无效,例如在常开、常闭、渐 开和渐闭中是无效的; 遇到问题?
如有其他问题,请到统一的提问与讨论区:Ai-Thinker Discussions

