炼狱,是为追逐光芒
分类: LINUX
2011-04-25 15:38:19
一、概述:
Wiegand(韦根)协议是由摩托罗拉公司制定的一种通讯协议,它适用于涉及门禁控制系统的读卡器和卡片的许多特性;其协议并没有定义通讯的波特率、也没有定义数据长度。韦根格式主要定义是数据传输方式:Data0 和 Data1 两根数据线分别传输 0 和 1.现在应用最多的是 26bit,34bit,36bit,44bit 等等。
二、Wiegand时序:
Wiegand接口通常由3根线组成,它们是:数据0(Data0),数据1(Data1)和 Data return。这3条线负责传输Wiegand信号。D0,D1在没有数据输出时都保持+5V高电平。若输出为0,则D0拉低一段时间,若输出为1,则D1拉低一段时间。
输出‘0’时:DATA0 线上出现负脉冲;
输出‘1’时:DATA1 线上出现负脉冲;
负脉冲宽度 TP=100 微妙;周期 TW=1600 微妙
具体时序如下:
例如:数据‘01000’的时序如下:
三、标准26 位Wiegand协议:
标准韦根输出是由26位二进制数组成,每一位的含义如下:
1
2
9
10
25 26
E X X X X X X X X X X X X X X X X X X X X X X X X O
二进制
第1位为2—13位的偶校验位
第2—9位对应与电子卡HID码的低8位
第10-25位对应电子卡的PID号码
第26位为14-25位的奇校验位
这26位数据在读出器的韦根输出线D0,D1上输出。
以上数据从左至右顺序发送。高位在前。
四、韦根 26 接收:
韦根的接收对时间的实时性要求比较高,如果用查询的方法接收会出现丢帧的现象:假设查询到 DATA0为 0 时主程序正在指向其他任务,等主程序执行完该任务时 DATA0 已经变为 1 了,那么这样就导致了一个 0 bit 丢了,这样读出的卡号肯定奇偶校验通不过,所以表现出 CPU 接收不到 ID 模块发送的卡号了。
唯一的办法是在外部中断里接收每个 bit。 (仅仅在中断里获得开始接收 wiegand 数据还不行,因为这是尽管给开始接收 wiegand 数据标志位置位了,但是主程序还在执行其他代码而没有到达查询开始接收 wiegand 数据标志位这条指令)。
五.韦根接口定义:
Wiegand 接口界面由三条导线组成:
DATA0:暂定,兰色,P2.5 (通常为绿色)。
DATA1:暂定,白色,P2.6 (通常为白色)。
GND:(通常为黑色), 暂定信号地。 当安装商拿到读卡器时,他们希望在读卡器和门禁控制面板的连接点(终端)上都能够看到这三个名称。
目前所有的标准型读卡器都提供可选择的 Wiegand 接口。这三条线负责传送 Wiegand 数据,也被称为Wiegand 信号。
代码仅供参考,没有实测,实际应用时,做发送,注意延时。做接收,一般用中断采集数据。