NFC项目实验进展记录(二)

项目场景:

NFC标签芯片测温手环开发


问题描述:

是否需要MCU参与用户端


原因分析:

MCU在NTAG I2C Plus 开发板上的作用已经梳理清楚了 ,具体的数据传输路径如下在这里插入图片描述

对于温度芯片数据传输路径如下:在这里插入图片描述
在这里插入图片描述
可以看到所有的数据传输都经过了LPC,对于外设很好理解,是标签芯片没有相应的I/O口去给外设控制信号(如LED、LCD等),但为什么标签心里与测温芯片都通过I2C连接了却不能直接进行数据传输,还要通过LPC转传。
通过查阅NT3H2111数据手册发现标签芯片在任何情况下只能作为从机,有可能温度芯片也只能作为从机,虽然二者通过I2C相连但是没有主机发送启停、初始化信号,两个从机无法进行通信。所以MCU的作用是丛当主机发送控制信号。


几点猜测:

  • 温度芯片能否充当主机,代替MCU的功能,使用户端只有两块芯片
  • 除去MCU,系统能否工作
  • NFC设备是否能充当主机(这条感觉不太可能,但还是写上来了)

下一步工作:

  • 硬件平台搭建,测试验证MCU充当主机的理论
  • 主机替代体寻找
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
继续上一篇文章,我们来讨论如何使用NFC读取身份证信息。 首先,我们需要一个支持NFC的设备,如Android手机或NFC读卡器。然后,我们需要编写一个程序来读取身份证信息。 在Android上,我们可以使用Android的NFC API来读取身份证信息。以下是读取身份证信息的示例代码: ``` public class MainActivity extends Activity implements NfcAdapter.ReaderCallback { private NfcAdapter nfcAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); nfcAdapter = NfcAdapter.getDefaultAdapter(this); if (nfcAdapter == null) { Toast.makeText(this, "NFC is not available", Toast.LENGTH_LONG).show(); finish(); return; } if (!nfcAdapter.isEnabled()) { Toast.makeText(this, "Please enable NFC", Toast.LENGTH_LONG).show(); finish(); return; } } @Override protected void onResume() { super.onResume(); nfcAdapter.enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK, null); } @Override protected void onPause() { super.onPause(); nfcAdapter.disableReaderMode(this); } @Override public void onTagDiscovered(Tag tag) { IsoDep isoDep = IsoDep.get(tag); try { isoDep.connect(); byte[] command = new byte[]{(byte) 0x00, (byte) 0xa4, (byte) 0x04, (byte) 0x00, (byte) 0x07, (byte) 0xd1, (byte) 0x44, (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00}; byte[] result = isoDep.transceive(command); // Parse result to get information from the identity card // ... } catch (IOException e) { e.printStackTrace(); } finally { try { isoDep.close(); } catch (IOException e) { e.printStackTrace(); } } } } ``` 该代码使用`NfcAdapter.ReaderCallback`接口来监听NFC标签的发现事件。当一个标签被发现时,`onTagDiscovered()`方法会被调用。在这个方法中,我们可以使用`IsoDep`类来连接到标签并读取数据。在我们的例子中,我们发送了一个APDU命令来选择电子身份证应用程序,并获取其信息。 需要注意的是,以上代码仅供参考,实际情况需要根据具体的身份证格式和标签响应数据来解析信息。 在NFC读卡器上,我们可以使用相应的API来读取身份证信息。例如,ACS公司开发了一个名为ACR122U的NFC读卡器,提供了一个名为`ACR122U API`的API来读取身份证信息。以下是一个使用ACR122U API读取身份证信息的示例代码: ``` public class Main { public static void main(String[] args) { ACR122U acr122u = new ACR122U(); try { acr122u.open(); byte[] atr = acr122u.getATR(); if (atr == null) { System.out.println("No card found"); return; } if (!ACR122U.isCardPresent(atr)) { System.out.println("Card removed"); return; } byte[] response = acr122u.sendCommand(new byte[]{(byte) 0x00, (byte) 0xa4, (byte) 0x04, (byte) 0x00, (byte) 0x07, (byte) 0xd1, (byte) 0x44, (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00}); // Parse response to get information from the identity card // ... } catch (ACR122UException e) { e.printStackTrace(); } finally { acr122u.close(); } } } ``` 该代码使用`ACR122U`类来连接到ACR122U读卡器并读取身份证信息。在我们的例子中,我们发送了一个APDU命令来选择电子身份证应用程序,并获取其信息。 需要注意的是,以上代码仅供参考,实际情况需要根据具体的身份证格式和标签响应数据来解析信息。 总之,使用NFC读取身份证信息需要了解具体的身份证格式和标签响应数据,并使用相应的API来连接到NFC设备并读取数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值