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调制的深度对不对,编码的跳变是否清晰。我每次做新项目,第一件事就是看波形。波形对了,后面就顺了。