Я хочу создать приложение в Android Studio для чтения данных с датчика RGB ISL29125 через тег NFC типа 5 (ISO 15693). Тег 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));
Как должна выглядеть команда периферийной транзакции в соответствии с таблицей данных
После отправки я получаю 32 раза 0x00 байт, несмотря на то, что датчик заряжен, и свет идет на датчик (датчик RGB). Во всяком случае, в таблице данных тега NFC не указано, где должен быть размещен адрес подчиненного устройства (я вставил его почти в конце - байты 88 09 и 89, но я не уверен, что это правильно). Тег MAX66242, датчик ISL29125 (https://www.intersil.com/content/dam/Intersil/documents/isl2/isl29125.pdf).
Последовательность считывания с датчика
Я хочу прочитать данные из регистра 0x09 (зеленый НИЗКИЙ).
Мой вопрос: кто-нибудь знает, в чем может быть проблема? А почему я выявляю именно 0x00? Думаю, проблема может быть в инициализации. Как мне это сделать, если я хочу попробовать?
Спасибо за любой совет.