WIEGAND 使用
簡(jiǎn)介
Wiegand(韋根)協(xié)議是由摩托羅拉公司制定的一種通訊協(xié)議,它適用于涉及門禁控制系統(tǒng)的讀卡器和卡片的許多特性;其協(xié)議并沒(méi)有定義通訊的波特率、也沒(méi)有定義數(shù)據(jù)長(zhǎng)度韋根格式主要定義是數(shù)據(jù)傳輸方式:Data0和Data1兩根數(shù)線分別傳輸0和1.現(xiàn)在應(yīng)用最多的是26bit,34bit,36bit,44bit等等。
調(diào)試方法
Face-RK3399的RS485端口是可以復(fù)用為韋根協(xié)議發(fā)送端口從而進(jìn)行數(shù)據(jù)的傳輸。
DTS配置
在 kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-face.dtsi 文件中定義韋根節(jié)點(diǎn),具體定義如下:
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”; };
在設(shè)備端輸入命令:
echo 0 》 /sys/devices/platform/wiegand-gpio/mode_switch //切換為韋根接口功能 echo 卡號(hào) 》 /sys/devices/platform/wiegand-gpio/wiegand26 //發(fā)送韋根26數(shù)據(jù) echo 卡號(hào) 》 /sys/devices/platform/wiegand-gpio/wiegand34 //發(fā)送韋根34數(shù)據(jù)
韋根接口也可作為普通輸入輸出IO口:
# 拉高D0 echo 1 》 /sys/devices/platform/wiegand-gpio/D0 # 拉高D1 echo 1 》 /sys/devices/platform/wiegand-gpio/D1
V2.1韋根接口和繼電器
Face-RK3399在后續(xù)新增V2.1版本,尾線韋根接口部分相應(yīng)也有更新,主要是改變了外觀接口,添加了地線和韋根輸入接口。
V2.1韋根外觀接口圖示如下:
V2.1韋根輸出
在設(shè)備端輸入命令:
echo 卡號(hào) 》 /sys/devices/platform/wiegand-gpio/wiegand26 //發(fā)送韋根26數(shù)據(jù) echo 卡號(hào) 》 /sys/devices/platform/wiegand-gpio/wiegand34 //發(fā)送韋根34數(shù)據(jù)
V2.1韋根輸入
文件系統(tǒng)會(huì)生成/dev/wiegand 節(jié)點(diǎn),提供如下韋根輸入調(diào)用的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) //設(shè)置為普通輸入IO #define WG_IOC_FUN_WG _IOR(WG_IOC_MAGIC, 3, int) //設(shè)置為韋根輸入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) //獲取韋根數(shù)據(jù) 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); } /*關(guān)閉設(shè)備*/ close(fd); return 0; }
執(zhí)行上述程序,能對(duì)韋根輸入數(shù)據(jù)進(jìn)行接收和打印。
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連通
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6086瀏覽量
35486 -
Firefly
+關(guān)注
關(guān)注
2文章
538瀏覽量
7075
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論