Я пытаюсь перевести библиотеку Arduino для платы STM32F4 Nucleo (NFC-контроллер PN532 для записей).
Я застрял со следующим кодом:
void NFC_Module::read_dt(uint8_t *buf, uint8_t len)
{
delay(2);
// Start read (n+1 to take into account leading 0x01 with I2C)
Wire.requestFrom((u8)PN532_I2C_ADDRESS, (uint8_t)(len+2));
// Discard the leading 0x01
receive();
for (uint8_t i=0; i<len; i++) {
delay(1);
buf[i] = receive();
}
}
И это моя текущая 'HAL версия':
static uint8_t i2c_read(uint8_t reg)
{
uint8_t ret = 0;
HAL_I2C_Mem_Read(&hi2c2, PN532_I2C_ADDRESS, reg, I2C_MEMADD_SIZE_8BIT, &ret, 1, 1000);
return ret;
}
void read_dt(uint8_t *buf, uint8_t len)
{
HAL_Delay(10);
// Start read (n+1 to take into account leading 0x01 with I2C)
//Wire.requestFrom((uint8_t)PN532_I2C_ADDRESS, (uint8_t)(len+2));
// Discard the leading 0x01
i2c_read((len+2)); //receive();
for (uint8_t i=0; i<len; i++)
{
HAL_Delay(1);
buf[i] = i2c_read((len+2)); //receive();
}
}
, что, вероятно, неправильно, так как я не понимаю, что в Arduino Wire нет параметра 'register'.
AnyПомощь и / или исправления будут с радостью приняты, большое спасибо!