AS608指纹+STM32串口通讯录入或删除指纹

科技 科技 1761 人阅读 | 0 人回复

<
目次

一、硬件使用分类
1.整体图展示
 2.STM32F103RCT6单片机
3.AS608指纹模块
4.USB转TTL
二、软件计划
1.接线计划
2.程序计划

一、硬件使用分类

1.整体图展示

采用STM32F103RCT6作为主控制器
AS608指纹+STM32串口通讯录入或删除指纹 144913ok0eymf99b1hkh9q.jpg


 2.STM32F103RCT6单片机

 STM32F103RCT6不含USB转TTL芯片,需要外界接入
下图为STM32F103RCT6原理图
其中在RCT6中PA9,PA10为板子的USART1,原理图中并没有出现以上俩引脚,其引脚在为板子上标识的TX,RX
AS608指纹+STM32串口通讯录入或删除指纹 144914uyysuy0c0cqq4of9.jpg

 以下是工程中USART1的初始化程序计划
  1. void uart_init(u32 bound)
  2.         {
  3.   //GPIO端口设置
  4.     GPIO_InitTypeDef GPIO_InitStructure;
  5.         USART_InitTypeDef USART_InitStructure;
  6.         NVIC_InitTypeDef NVIC_InitStructure;
  7.          
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);        //使能USART1,GPIOA时钟
  9.   
  10.         //USART1_TX   GPIOA.9
  11.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
  12.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  13.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
  14.   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
  15.    
  16.   //USART1_RX          GPIOA.10初始化
  17.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
  18.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
  19.   GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10  
  20.   //Usart1 NVIC 配置
  21.   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  22.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
  23.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //子优先级3
  24.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能
  25.         NVIC_Init(&NVIC_InitStructure);        //根据指定的参数初始化VIC寄存器
  26.   
  27.    //USART 初始化设置
  28.         USART_InitStructure.USART_BaudRate = bound;//串口波特率
  29.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
  30.         USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
  31.         USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
  32.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
  33.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //收发模式
  34.   USART_Init(USART1, &USART_InitStructure); //初始化串口1
  35.   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
  36.   USART_Cmd(USART1, ENABLE);                    //使能串口1
  37. }
复制代码
在上面的程序段中,我们可以清晰的看出来PA9,PA10都可以使用,PA9为TX,PA10为RX。
3.AS608指纹模块

         AS608指纹辨认模块是ALIENTEK推出的一款高性能的光学指纹辨认模块。AS608模块采用了国内著名指纹辨认芯片公司杭州晟元芯片技能有限公司(Synochip)的 AS608指纹辨认芯片。芯片内置DSP运算单元,集成了指纹辨认算法,能高效快速采集图像并辨认指纹特征。模块配备了串口、USB通讯接口,用户无需研究复杂的图像处理及指纹辨认算法,只需通过简单的串口、USB 按照通讯协议便可控制模块。本模块可应用于各种考勤机、保险箱柜、指纹门禁系统、指纹锁等场合。
        下面是AS608的一些具体参数:
供电电压 3.3V(切勿使用5V,轻易烧毁芯片)
供电电流 < 60mA
指纹图像录入时间 < 1s
搜索时间< 1.0s(1:500时,均值)
可录入指纹数量 300
通讯接口USB/USART
匹配方式比对方式(1:1),搜索方式(1:N)
        注意!!!!     AS608指纹模块切勿接5V,一定要接3.3V
        注意!!!!     AS608指纹模块切勿接5V,一定要接3.3V
        注意!!!!     AS608指纹模块切勿接5V,一定要接3.3V
如果不相信的话可以去试试(如果你是土豪的话,完全跳过这一条)

下面俩个图就是我们AS608指纹模块的引脚表明:
AS608指纹+STM32串口通讯录入或删除指纹 144914r1aaze5ebzgmdg5t.jpg

D+和D-不用接,就算你想接也不一定能接上,反正根本就没有那俩跟线的引脚。
其中5线(蓝线)这个引脚就是作为我们输出的引脚,话说每个模块到头来都是个开关而已,就是开关的启动方式不同罢了。
AS608指纹+STM32串口通讯录入或删除指纹 144915iczcpxh66licar6l.jpg


4.USB转TTL

这个就不做过多介绍了,都是大家常用的东西。
二、软件计划

1.接线计划

AS608指纹模块与单片机接线
VCCGNDTX RX TCHUA 
3.3VGNDPA3PA4PA63.3V
 USB转TTL与单片机接线
VCCGNDTXRX
5VGNDRX(PA10)TX(PA9)
 在RCT6中标识的是TX与RX,其实他们就是单片机上的PA10,PA9上面已经表明过了,这里就不做过多的表明了。
2.程序计划

程序是按照正点原子中的进程进行修改的,此处使用的是串口进行操作的
对于AS608指纹模块我们首先要进行握手,换句话也就是通过发送特定的16进制数据将单片机与模块进行连接而已了。
  1. printf("AS608指纹模块串口操作\r\n");
  2.         printf("作者:十里承欢-\r\n");
  3.         printf("尝试连接AS608中.....\r\n");
  4.         while(PS_HandShake(&AS608Addr))//与AS608模块握手
  5.         {
  6.                 printf("未连接上AS608!\r\n");
  7.                 delay_ms(1000);
  8.                 printf("再次尝试连接中....\r\n");
  9.                 delay_ms(1000);          
  10.         }
  11.         //连接模块成功,初始化
  12.         printf("连接成功!!\r\n");
  13.         str=mymalloc(30);
  14.         sprintf(str,"波特率:%d   地址:%x",usart2_baund,AS608Addr);//显示波特率
  15.         printf("%s",str);
  16.         delay_ms(100);
复制代码
 在握手过程中
1.发送包头:也就是0XEF、0X01
2.发送地点:AS608的默认地点是0XFFFFFFFF
3.发送0X01、0X00、0X00等候AS608相应,对比相应的数据即可完成握手
[code]//与AS608握手 PS_HandShake//参数: PS_Addr地点指针//说明: 模块返新地点(正确地点)        u8 PS_HandShake(u32 *PS_Addr){        SendHead();        SendAddr();        MYUSART_SendData(0X01);        MYUSART_SendData(0X00);        MYUSART_SendData(0X00);                delay_ms(200);        if(USART2_RX_STA&0X8000)//接收到数据        {                                if(//判断是不是模块返回的应答包                                                                        USART2_RX_BUF[0]==0XEF                                &&USART2_RX_BUF[1]==0X01                                &&USART2_RX_BUF[6]==0X07                        )                        {                                *PS_Addr=(USART2_RX_BUF[2]
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则