3、NFC物理层基础:频率、调制、编码与速率
好,咱们今天聊聊NFC物理层。说实话,很多做上层应用的工程师,一听到“物理层”三个字就头大。但我个人觉得,这部分恰恰是NFC最迷人的地方。你想想看,一个13.56MHz的电磁波,怎么就能让手机和卡片之间交换数据呢?
我刚开始接触NFC时,也踩过不少坑。有一次调试一款车载NFC模块,死活读不到卡片数据。折腾了两天,最后发现是编码方式配置错了。嗯,从那以后,我对物理层就再也不敢马虎了。
3.1 工作频率:13.56MHz
NFC的工作频率是13.56MHz。这个数字不是随便定的,它是全球通用的ISM频段(工业、科学、医疗频段)。说白了,就是不用申请牌照就能用的频段。
为什么选13.56MHz?我简单解释一下:
- 波长适中:13.56MHz对应的波长约22米。这个波长做近场通信刚刚好,天线尺寸可以做得比较小。
- 穿透性不错:不像高频(比如2.4GHz)那么容易受金属干扰,也不像低频(125kHz)那样带宽太窄。
- 全球通用:全世界都认这个频率,你的产品卖到哪都能用。
重要提醒:13.56MHz是NFC的基准频率,所有时序、数据速率都基于这个频率计算。我在项目中见过有人用示波器量出来的频率偏差超过±7kHz,结果通信直接失败。所以,晶振精度一定要控制在±100ppm以内。
3.2 调制方式:ASK
NFC用的是ASK调制,全称是幅移键控。说白了,就是通过改变载波的幅度来传输数据。
ASK调制有两种模式:
- 100% ASK:载波完全关断再开启。这种模式信号强度变化大,接收端容易检测,但功耗高。
- 10% ASK:载波幅度只变化10%。这种模式功耗低,但接收端需要更灵敏的电路。
我记得有一次做车载NFC门禁系统,客户要求读卡距离必须达到5厘米。我一开始用了100% ASK,结果功耗超标。后来换成10% ASK,配合高灵敏度的接收电路,问题就解决了。所以,选哪种调制深度,得看你的应用场景。
我的经验:在车载环境中,建议优先考虑10% ASK。因为车内的电磁干扰比较多,100% ASK的强信号反而容易引起反射和驻波,导致通信不稳定。
3.3 编码方式:Miller与Manchester
编码方式,说白了就是把二进制数据“翻译”成电信号。NFC主要用两种编码:Miller和Manchester。
3.3.1 Miller编码
Miller编码的特点是:
- 逻辑“1”:在比特中间产生一个跳变
- 逻辑“0”:没有跳变(连续多个0时,在比特边界跳变)
这种编码的好处是带宽利用率高。同样的数据速率,Miller编码占用的频带更窄。NFC从A到B(读卡器到卡片)的通信,用的就是Miller编码,数据速率是106 kbps。
3.3.2 Manchester编码
Manchester编码就直白多了:
- 逻辑“1”:从高到低跳变
- 逻辑“0”:从低到高跳变
每个比特中间都有跳变,所以接收端可以轻松提取时钟信号。NFC从B到A(卡片到读卡器)的通信,用的就是Manchester编码。
避坑指南:我曾经在一个项目中,把Miller和Manchester搞反了。读卡器发出去的信号用Manchester编码,卡片根本不理我。后来查了半天规格书才发现,NFC-A标准规定:PCD到PICC用Miller,PICC到PCD用Manchester。这个顺序千万别记错。
3.4 数据速率:106/212/424 kbps
NFC支持三种数据速率,对应不同的应用场景:
| 速率 | 编码方式 | 典型应用 |
|---|---|---|
| 106 kbps | Miller / Manchester | NFC-A/B基础通信,门禁卡、公交卡 |
| 212 kbps | Miller / Manchester | NFC-F(Felica),日本主流 |
| 424 kbps | Miller / Manchester | 高速数据传输,大文件交换 |
你可能会问:为什么速率越高,通信距离越短?
原因很简单。速率高了,每个比特的时间就短了。接收端需要在更短的时间内检测到信号变化。如果距离远了,信号强度弱,信噪比下降,误码率就上去了。所以,106 kbps通常能支持4-5厘米的通信距离,而424 kbps可能只有1-2厘米。
我个人习惯在车载项目中用106 kbps。虽然慢了点,但稳定。你想啊,车里温度变化大,电磁环境复杂,用低速更靠谱。有一次我在测试一款车载NFC模块,用424 kbps时,夏天和冬天的通信距离差了将近1厘米。换成106 kbps后,这个差异就小多了。
3.5 小结
好了,咱们把NFC物理层的基础捋一遍:
- 频率:13.56 MHz,全球通用ISM频段
- 调制:ASK,100%或10%调制深度
- 编码:Miller(PCD→PICC)和Manchester(PICC→PCD)
- 速率:106/212/424 kbps,根据场景选择
这些参数看起来简单,但实际调试时,任何一个细节出问题,通信都可能失败。我建议你在做NFC开发时,先把物理层调通,再往上走。底层不稳,上层再花哨也没用。
一个小技巧:调试时可以用示波器抓一下天线端的波形。看看ASK调制的深度对不对,编码的跳变是否清晰。我每次做新项目,第一件事就是看波形。波形对了,后面就顺了。