IoT NFC 之選卡防衝突機制

2021-09-22 02:24:24 字數 2798 閱讀 1674

正常情況下讀寫器某一時刻只能對磁場中的一張射頻卡進行讀寫操作。

當多張卡片同時進入讀寫器的射頻場時,讀寫器需要選出唯一的一張卡片進行讀寫操作,這就是防衝突。

防衝突機制是非接觸式智慧卡特有的問題,在接觸式智慧卡的操作中是不存在衝突的,因為接觸式智慧卡的讀寫器有乙個專門的卡座,而且乙個卡座只能插一張卡片,不存在讀寫器同時面對兩張以上卡片的問題。

常見的非接觸式智慧卡中的防衝突機制主要有以下幾種:

1、面向位元的防衝突機制

iso14443a 中使用這種防衝突機制,其原理是基於卡片有乙個全球唯一的序列號。

比如 mifare1 卡,每張卡片有乙個全球唯一的 32 位二進位制序列號。

卡號的每一位上不是 「1」 就是 「0」,而且由於是全世界唯一,所以任何兩張卡片的序列號總有一位的值是不一樣的,也就說總存在某一位,一張卡片上是「0」,而另一張卡片上是「1」。

當兩張以上卡片同時進入射頻場,讀寫器向射頻場發出卡呼叫命令,問射頻場中有沒有卡片,這些卡片同時回答「有卡片」;

然後讀寫器傳送防衝突命令「把你們的卡號告訴我」,收到命令後所有卡片同時回送自己的卡號。

可能這些卡片卡號的前幾位都是一樣的,比如前四位都是 1010,第五位上有一張卡片是「0」而其他卡片是「1」,於是所有卡片在一起說自己的第五位卡號的時候,由於有卡片說「0」,有卡片說「1」,讀寫器聽出來發生了衝突。

讀寫器檢測到衝突後,對射頻場中的卡片說,讓卡號前四位是「1010」,第五位是「1」的卡片繼續說自己的卡號,其他的卡片不要發言了。

結果第五位是「1」的卡片繼續發言,可能第五位是「1」的卡片不止一張,於是在這些卡片回送卡號的過程中又發生了衝突,讀寫器仍然用上面的辦法讓衝突位是「1」的卡片繼續發言,其他卡片禁止發言,最終經過多次的防衝突迴圈,當只剩下一張卡片的時候,就沒有衝突了,最後勝出的卡片把自己完整的卡號回送給讀寫器,讀寫器發出卡選擇命令,這張卡片就被選中了,而其他卡片只有等待下次卡呼叫時才能再次參與防衝突過程。

上述防衝突過程中,當衝突發生時,讀寫器總是選擇衝突位為「1」的卡片勝出,當然也可以指定衝突位為「0」的卡片勝出。

上述過程有點擬人化了,實際情況下讀寫器是怎麼知道發生衝突了呢?

在前面的資料編碼中我們已經提到,卡片向讀寫器傳送命令使用副載波調製的曼側斯特(manchester)碼,副載波調製碼元的右半部分表示資料「0」,副載波調製碼元的左半部分表示資料「1」,當發生衝突時,由於同時有卡片回送「0」和「1」,導致整個碼元都有副載波調製,讀寫器收到這樣的碼元,就知道發生衝突了。

這種方法可以保證任何情況下都能選出一張卡片,即使把全世界同型別的所有卡片都拿來防衝突,最多經過32個防衝突迴圈就能選出一張卡片。

缺點是由於卡序列號全世界唯一,而卡號的長度是固定的,所以某一型別的卡片的生產數量也是一定的,比如常見的 mifare1 卡,由於只有4個位元組的卡序列號,所以其生產數量最多為 2 的 32 次方,即 4294967296 張。

2、面向時隙的防衝突機制

iso14443b 中使用這種防衝突機制。

這裡的時隙(timeslot)其實就是個序號,這個序號的取值範圍由讀寫器指定,可能的範圍有 1-1、1-2、1-4、1-8、1-16。

當兩張以上卡片同時進入射頻場,讀寫器向射頻場發出卡呼叫命令,命令中指定了時隙的範圍,讓卡片在這個指定的範圍內隨機選擇乙個數作為自己的臨時識別號。

然後讀寫器從1開始叫號,如果叫到某個號恰好只有一張卡片選擇了這個號,則這張卡片被選中勝出。

如果叫到的號沒有卡片應答或者有多於一張卡片應答,則繼續向下叫號。

如果取值範圍內的所有號都叫了一遍還沒有選出一張卡片,則重新讓卡片隨機選擇臨時識別號,直到叫出一張卡片為止。

這種辦法不要求卡片有乙個全球唯一序列號,所以卡片的生產數量沒有限制,但是理論上存在一種可能,就是永遠也選不出一張卡片來,felica 採用的也是這種機制。

3、位和時隙相結合的防衝突機制

iso15693 中使用這種機制。

一方面每張卡片有乙個 7 位元組的全球唯一序列號,另一方面讀寫器在防衝突的過程中也使用時隙叫號的方式,不過這裡的號不是卡片隨機選擇的,而是卡片唯一序列號的一部分,叫號的數值範圍分為 0-1 和 0-15 兩種。

其大體過程是,當有多張卡片進入射頻場,讀寫器發出清點請求命令,假如指定卡片的叫號範圍是 0-15,則卡片序列號最低 4 位為 0000 的卡片回送自己的 7 位元組序列號。

如果沒有衝突,卡片的序列號就被登記在pcd中。

然後讀寫器傳送乙個幀結束標誌,表示讓卡片序列號最低 4 位為 0001 的卡片作出應答;之後讀寫器每傳送乙個幀結束標誌,表示序列號的最低 4 位加 1,直到最低 4 位為 1111 的卡片被要求應答。

如果此過程中某乙個卡片回送序列號時沒有發生衝突,讀寫器就可選擇此張卡片;如果巡檢過程中沒有卡片反應,表示射頻場中沒有卡片;如果有卡片反應的時隙發生了衝突,比如最低4位是1010的卡片回送卡號時發生了衝突,則讀寫器在下一次防衝突迴圈中指定只有最低4位是1010的卡片參與防衝突,然後用卡片的5-8位作為時隙,重複前面的巡檢。

如果被叫卡片的5-8位時隙也相同,之後再用卡片的9-12位作為時隙,重複前面的巡檢,依次類推。讀寫器可以從低位起指定任意位數的序列號,讓卡號低位和指定的低位序列號相同的卡片參與防衝突迴圈,卡片用指定號前面的一位或4位作為時隙對讀寫器的叫號作出應答。

由於卡片的序列號全球唯一,所以任何兩張卡片總有某個連續的4位二進位制數不一樣,因而總能選出一張卡片。需要指出的是,當選定的時隙數為1時,這種防衝突機制等同於面向位元的防衝突機制。

另外需要說明的是,ttf(tag talk first)的卡片一般是無法防衝突的。

這種卡片一進入射頻場就主動傳送自己的識別號,當有多張卡片同時進入射頻場時就會發生不讀卡的現象。這時只有靠卡片的持有者自己去避免衝突了。

1是什麼卡 電銷卡怎麼選?

上邊是介紹電銷卡是什麼的,有什麼具體功能,下邊是電銷卡的優勢具體有以下三點 電銷卡防封效果好 1.穩定防封 電銷卡為虛擬運營商所推產品,相比基礎運營商 移動 電信 聯通 管制力度較小,辦卡審核嚴格,防封性好。2.便宜 電銷卡資費,一般為語音 包,分解至每一分鐘略為一毛錢,即一百元錢可撥一千分鐘時長,...

泡茶之選水

唐代茶聖陸羽在 茶經 裡評說 山水上,江水中,井水下。泡茶最好用軟水,除了蒸餾水,雨水以及冬天的雪水,自然界中其他的水都是硬水,但是硬水通過蒸煮就可以變成軟水。山泉水最好,因為是在沒有汙染的山區,且是經過自然過濾的流動水,水質非常穩定,但山泉水採來後最好不要放置太久,水放置太久了,那麼水體裡的空氣散...

樹之習題選講

核心演算法 void solve int prel,int inl,int postl,int n root pre prel post postl n 1 root for i 0 i in inl 1 root break l i r n l 1 solve prel 1,inl,postl,l...