通过NFC标签类型5(NFC-V)从传感器读取数据

时间:2018-04-03 00:09:43

标签: android-studio nfc android-sensors

我想在Android Studio中通过NFC标签类型5(ISO 15693)从RGB传感器ISL29125读取数据。 NFC标签使用I2C总线连接到传感器。我根据NFC标签的数据表使用地址命令进行外设交易。我的地址模式外设事务代码如下:

     byte[] command = new byte[]{
                                             (byte)0x20, //Request flags (Address mode ON)
                                             (byte)0xA2, //PERIPHERAL TRANSACTION command
                                             (byte)0x2B, //Manufacter code byte
                                             (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, //UID
                                             (byte)0x00, //Parameter byte = Stop bit disabled
                                             (byte)0x03, //NI2CWR (Number of bytes to be written) = 3
                                             (byte)0x88, //I2C slave address (write)
                                             (byte)0x09, //I2C slaves' register address
                                             (byte)0x89, //I2C slave address (read)
                                             (byte)0x01, //NI2CRD (Number of bytes to be read) = 1
                                     };

                             System.arraycopy(id,0,command,3,8); //Change of UID to id of the tag
                             textView.setText("This is command you sent: "+(getHex(command)));

                        byte[] userdata= nfcvTag.transceive(command);
                        userdata = Arrays.copyOfRange(userdata, 0, 32);
                        viewResult.setText(getHex(userdata));

How the peripheral transaction command should look like according to datasheet

发送后,我收到32次0x00字节,尽管传感器已充电且光线传到传感器(RGB传感器)。无论如何,没有提到奴隶地址应该放在NFC标签的数据表中的命令中(我几乎在最后插入它 - 字节88 09和89,但我不确定它是否正确)。标签为MAX66242,传感器为ISL29125(https://www.intersil.com/content/dam/Intersil/documents/isl2/isl29125.pdf)。

Reading sequence from sensor

我想从寄存器0x09(绿色低)中读取数据。

我的问题是,有人知道问题出在哪里吗?为什么我只需要显示0x00? 我认为,问题可能在于内在化。如果我想尝试一下,我怎么能这样做呢?

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

我不知道你的问题是否仍然有效或只是等待...... 你试着发一个停止位吗? 那将是: (字节)0x10,//参数字节=启用停止位 而不是“(字节)0x00,//参数字节=停止位禁用” 这可能有助于终止I2c序列......