這種情況是,用一個長脈沖代表 ’ 1 ’ 用一個短脈沖代表 ’ 0 ’ ,因此,這里的信號的意思就是 ’ 11000 ’ ,或者如果你用HITAG2算法的話,意思就是 ’START_AUTH’
正如我們提到的,標簽也會給閱讀器返回信息,它是通過短路自己的線圈使閱讀器的線圈發(fā)生阻尼現(xiàn)象。結(jié)果如下圖:

這看起來好像是閱讀器本身發(fā)送了一條信息。但是請注意,閱讀器發(fā)送的波幅度一直在變化,但不可能減小到?jīng)]有。相反,它要么是一個阻尼波要么是一個非阻尼波。這是因為并不是直接通過控制閱讀器線圈上的電壓達到的效果,而只是通過感應來影響波形。但它依然是可以讀的。這個時候,如果我們把阻尼作用當成是 ” 1 ” ,非阻尼作用當成是 ” 0 ” ,我們就能得到 ’1010101010010110011010’ ,這也就是 曼徹斯特編碼的方式。
那么,曼徹斯特編碼要做的事情是什么呢?好,這個時候它就開始變得有趣了——如果你仔細觀察下這些不同規(guī)格標簽,你會發(fā)現(xiàn)他們提到很多種調(diào)制方案,例如“曼徹斯特(Manchester)”,“雙相(Bi-Phase)”,“移頻鍵控(FSK)”,“相移鍵控(PSK)”,‘NRZI’,‘ASK’……
我們準備的設備只能做 ASK,那 FSK/PSK/Manchester malarky這些方案是怎么樣的呀?
這也是我一直很混亂的地方。如果你想做一個和現(xiàn)有供應商制定的 RFID不一樣的產(chǎn)品,恭喜你,你掉坑里了,因為各種調(diào)試方案是相互沖突的。尤其是想找出能解調(diào)所有方案的閱讀器就更難了——如果你想找到一個閱讀器可以訪問到所有編碼方式的數(shù)據(jù),那是不可能的。如果閱讀器想要進一步解調(diào)發(fā)送的信號。他們需要先確定信號是用什么方式編碼的,為了達到這個目的,閱讀器首先需要知道他們即將接受的標簽是采用哪些方式編碼的。
事實上我需要的僅僅只是最簡化的RFID閱讀器,所以只需要能得到一些最低等級的數(shù)據(jù)就可以了,但很奇怪的是,居然沒有現(xiàn)成的。每一個調(diào)試方法都是一個不同的電路,而且網(wǎng)上的這些電路看起來就是用來炫耀的,比如這篇200頁的文檔
http://ww1.microchip.com/downloads/en/devicedoc/51115f.pdf
在一通亂找之后,我們找到了一個比較簡單的設計:全世界最簡單的RFID閱讀器(鏈接: http://forums.parallax.com/showthread.php/105889-World-s-simplest-RFID-reader )。這有一個改進版的 ” DIT一個FSK的RFID閱讀器 ” (鏈接:http://playground.arduino.cc/Main/DIYRFIDReader )。事實上,這些其實也并不很符合我們期待的那樣。
我們使用PM3來閱讀不同型號的標簽發(fā)出的原始數(shù)據(jù),PM3將作為閱讀器的線圈,并且過濾掉載波,留下阻尼的影響。
下面是ASK調(diào)試信號:

正如我們所想的的那樣,一個簡單的由載波的阻尼和非阻尼影響產(chǎn)生了一個方波。
下面是 FSK標簽:

注意兩種不同脈沖的形狀,一個是瘦的,另一個長得比較胖。這樣我們就能看到不同頻率的脈沖了。
接下來的是PSK:

好吧,我也要瘋了,這究竟是什么鬼???
首先,圖中綠色的線表示標簽的阻尼/非阻尼影響下的閱讀器線圈上的電壓。我們并不需要知道具體的代表什么,只需要知道屏幕地步是0V電壓,或者說是全阻尼,而屏幕頂部是某一個電壓值,或者說是無阻尼狀態(tài)。電路產(chǎn)生的是125KHz的載波,并且可以提高或者降低輸出。至于說他具體是怎么工作的,我他媽才不管,這是芯片的事情。
現(xiàn)在我們知道了每條線的意思,問題就剩下了這些線為什么會是這樣形狀的。第一個例子很簡單:ASK/OOK調(diào)制不是ON就是OFF,因此我們在無阻尼的時候在屏幕頂部得到一條線,而在阻尼的時候,就會在地步得到一條線。