fireflyFace-RK3399主板WIEGAND通讯协议介绍

描述

  WIEGAND 使用

  简介

  Wiegand(韦根)协议是由摩托罗拉公司制定的一种通讯协议,它适用于涉及门禁控制系统的读卡器和卡片的许多特性;其协议并没有定义通讯的波特率、也没有定义数据长度韦根格式主要定义是数据传输方式:Data0和Data1两根数线分别传输0和1.现在应用最多的是26bit,34bit,36bit,44bit等等。

  

  

  调试方法

  Face-RK3399的RS485端口是可以复用为韦根协议发送端口从而进行数据的传输。

  DTS配置

  在 kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-face.dtsi 文件中定义韦根节点,具体定义如下:

  wiegand-gpio { compatible = “firefly,wiegandout”; level_effect = 《1》;/*0-low effect 1-high effect*/ gpio_d0 = 《&gpio1 9 GPIO_ACTIVE_HIGH》; gpio_d1 = 《&gpio1 10 GPIO_ACTIVE_HIGH》; gpio_mode_switch = 《&gpio1 17 GPIO_ACTIVE_HIGH》; status = “okay”; };

  在设备端输入命令:

  echo 0 》 /sys/devices/platform/wiegand-gpio/mode_switch //切换为韦根接口功能 echo 卡号 》 /sys/devices/platform/wiegand-gpio/wiegand26 //发送韦根26数据 echo 卡号 》 /sys/devices/platform/wiegand-gpio/wiegand34 //发送韦根34数据

  韦根接口也可作为普通输入输出IO口:

  # 拉高D0 echo 1 》 /sys/devices/platform/wiegand-gpio/D0 # 拉高D1 echo 1 》 /sys/devices/platform/wiegand-gpio/D1

  V2.1韦根接口和继电器

  Face-RK3399在后续新增V2.1版本,尾线韦根接口部分相应也有更新,主要是改变了外观接口,添加了地线和韦根输入接口。

  V2.1韦根外观接口图示如下:

  

  V2.1韦根输出

  在设备端输入命令:

  echo 卡号 》 /sys/devices/platform/wiegand-gpio/wiegand26 //发送韦根26数据 echo 卡号 》 /sys/devices/platform/wiegand-gpio/wiegand34 //发送韦根34数据

  V2.1韦根输入

  文件系统会生成/dev/wiegand 节点,提供如下韦根输入调用的demo程序

  #include #include #include #include #include #include #include #define WG_IOC_MAGIC ‘k’ #define WG_IOCGETFUN _IOR(WG_IOC_MAGIC, 1, int) // #define WG_IOC_FUN_IN _IOR(WG_IOC_MAGIC, 2, int) //设置为普通输入IO #define WG_IOC_FUN_WG _IOR(WG_IOC_MAGIC, 3, int) //设置为韦根输入IO #define WG_IOCGETD0 _IOR(WG_IOC_MAGIC, 4, int) //获取IO电平 #define WG_IOCGETD1 _IOR(WG_IOC_MAGIC, 5, int) // #define WG_IOCGETWG _IOR(WG_IOC_MAGIC, 6, int) //获取韦根数据 int main() { int fd = 0; char dst[12] = { 0}; int val; int result =0; fd = open(“/dev/wiegand”, O_RDWR); if(fd 《 0) { printf(“file open error ! ”); return -1; } while(1) { //result=read(fd, dst, sizeof(dst)); ioctl(fd, WG_IOC_FUN_WG, &val); result = ioctl(fd, WG_IOCGETWG, &val); if(result 《 0) { printf(“Unable to get value: %s ”, strerror(errno)); close(fd); return -1; } else printf(“val is %d, size=%d ”, val,result); sleep(1); } /*关闭设备*/ close(fd); return 0; }

  执行上述程序,能对韦根输入数据进行接收和打印。

  V2.1继电器

  V2.1新增继电器可以控制两线路的通断。

  

  echo 0 》 /sys/devices/platform/wiegand-gpio/mode_switch //线路0连通 线路1断开 echo 1 》 /sys/devices/platform/wiegand-gpio/mode_switch //线路0断开 线路1连通


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分