Roger和Colt AS3992方案的UHF RFID模块外部mcu硬件复位检测机制
2019-05-27 13:40:41
304
Roger和Colt 采用的是AS3992 / ST25RU3992方案的UHF RFID模块,如果使用uart指令控制,外部mcu的P1.1 IO端口可以连接至J4(C2CK)接口,使用如下代码实现硬件复位检测机制。
具体功能如下:
1、串口发送5次读卡指令(内容为16进制的: 43 03 01),发送间隔200ms。
2、判断执行【 P1_1=0 置低】的条件是:
(1)、串口没有返回(响应超时);
(2)、有返回,连续5次返回的都是16进制的:44 05 00 00 00 ;
示例代码如下(假定IO端口初始化已经完成,串口发送接收函数已定义):
U16 send_time_inter = 0; //定时200ms时间标志 U8 Recv_Error_Time = 0; //接收错误数据次数 U8 Uart_Data_Send_Flag = 0;//数据发送标志 const U8 Send_Func_Data[]={0x43,0x03,0x01};//读卡指令 const U8 Recv_Func_Error[]={0x44,0x05,0x00,0x00,0x00};//未读到卡返回值 void Func_Test(void) { while(1) { wdt_clear(); if(send_time_inter == 0) { //每200ms发送一次数据 send_time_inter = 200; Send_Uart_Data(Send_Func_Data,3); //设置接收超时时间为100ms uart_recv_flag.uart_recv_outtime = 100; //置数据发送标志 Uart_Data_Send_Flag = 1; } //uart_recv_flag.uart_recv串口接收到数据标志,uart_recv_flag.uart_time接收完成超时时间 if((uart_recv_flag.uart_recv == 1)&&(uart_recv_flag.uart_time == 0)) { //比较接收数据与错误数据 if(memcmp((char *)RS422_RX_Buffer,(char *)Recv_Func_Error,5)== 0) { //数据错误,次数加1 Recv_Error_Time++; } else { //数据正确或者非设定错误数据,清零 Recv_Error_Time = 0; } //接收缓存清空 uart1_rx_current = 0; //发送标志清除 Uart_Data_Send_Flag = 0; uart_recv_flag.uart_recv = 0; memset(RS422_RX_Buffer,'\0',BUFFERSIZE); } else if((uart_recv_flag.uart_recv == 0)&&(uart_recv_flag.uart_recv_outtime == 0)&&(Uart_Data_Send_Flag == 1)) { //串口在超时时间内未接收到任何数据,清空 uart1_rx_current = 0; Uart_Data_Send_Flag = 0; memset(RS422_RX_Buffer,'\0',BUFFERSIZE); //重置 P1_1=0; } //错误次数大于5次,重置 if(Recv_Error_Time >= 5) { Recv_Error_Time = 0; P1_1=0; } }//end while }
矽控电子®分别获“科技型中小企业”、“江苏省民营科技企业”、“创新型中小企业”认定,核心团队拥有十余年的硬件正向研发,生产制程,测试手法,品质控制经验。尤其擅长嵌入式ARM平台的人工智能与工控物联网产品,以及瑞芯微(Rockchip)、海思、NXP、新唐等平台的机器视觉类AIoT模组开发,为您的产品从创意到落地、批量市场化助力。
公司可提供从硬件设计(原理开发及PCB Layout),Linux驱动开发,PCB制板,SMT及接插件焊接,产品测试,产品老化全流程外包服务,收费合理,品质可靠。
定制开发找矽控,品质可靠省费用
垂询电话:0510-83488567-1 业务邮箱:wxdianzi#foxmail.com (#更换为@)