Невозможно прочитать более 32 блоков в одной команде READ MULTIPLE BLOCKS от M24LR.

Я пытаюсь прочитать несколько блоков (все они в одной команде READ MULTIPLE BLOCKS) из чип M24LR через NFC-V.

let writeData = new Uint8Array(5);
writeData[0] = 0x0A; // Flags
writeData[1] = 0x23; // Read multiple block
writeData[2] = 0x00; // Address of starting block (first 8bit) 
writeData[3] = 0x00; // Address (second 8bit)
writeData[4] = 0x1F; // Numbers of block (0x20 is not working)
nfc.transceive(writeData.buffer)
  .then(response => {
    console.log('response: ' + response);
  })
  .catch(error => {
    console.log('error transceive: ' + JSON.stringify(error));
  });

Если я запрашиваю 32 блока, все работает хорошо, если я запрашиваю 33 блока, команда завершается с ошибкой.

Это что-то, что я делаю неправильно? Имеет ли команда READ MULTIPLE BLOCKS ограничения?


person Mario Shtika    schedule 30.07.2018    source источник


Ответы (1)


См. техническое описание (M24LR64-R: динамическая метка NFC/RFID IC с 64-Кбит EEPROM с шиной I²C и радиочастотным интерфейсом ISO 15693, DocID15170 Rev 16, раздел 26.5; то же самое относится и к M24LR64E-R, M24LR16E-R и M24LR04E-R):

Максимальное количество блоков установлено на уровне 32 при условии, что все они расположены в одном секторе. Если количество блоков перекрывает секторы, M24LR64-R возвращает код ошибки.

Таким образом, команда READ MULTIPLE BLOCKS для этих микросхем ограничена 32 блоками.

person Michael Roland    schedule 30.07.2018
comment
Спасибо, Роланд. Итак, если я хочу получить более 32 блоков, рекомендуется ли создавать цикл (для каждых 32 блоков) и многократно отправлять команду приема? - person Mario Shtika; 31.07.2018
comment
Да, это единственный способ обойти это ограничение. - person Michael Roland; 31.07.2018