我想在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)。
我想从寄存器0x09(绿色低)中读取数据。
我的问题是,有人知道问题出在哪里吗?为什么我只需要显示0x00? 我认为,问题可能在于内在化。如果我想尝试一下,我怎么能这样做呢?
感谢您的任何建议。
答案 0 :(得分:1)
我不知道你的问题是否仍然有效或只是等待...... 你试着发一个停止位吗? 那将是: (字节)0x10,//参数字节=启用停止位 而不是“(字节)0x00,//参数字节=停止位禁用” 这可能有助于终止I2c序列......