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連通
-
嵌入式主板
+關注
關注
7文章
6085瀏覽量
35359 -
Firefly
+關注
關注
2文章
538瀏覽量
7054
發布評論請先 登錄
相關推薦
評論