HAL_I2C_IsDeviceReady
while(HAL_I2C_IsDeviceReady(&hi2c1, I2C_SLAVE_ADDR_24c256 , 1, HAL_MAX_DELAY)!= HAL_OK)
{
vTaskDelay(1);
}
HAL_I2C_Mem_Write_IT
txAddr=0;
txBuf[0]=0x31;
res=HAL_I2C_Mem_Write_IT(&hi2c1, I2C_SLAVE_ADDR_24c256, txAddr, I2C_MEMADD_SIZE_16BIT,(uint8_t *)txBuf, 1);
Тут тоже все начинается как обычно сначала с передачи адреса.
Для приема ACK/NACK передатчик отпускает линию SDA и переходит на прием.
Далее если приемник не подтверждает ничего ACK-ом или просто тупо молчит (допустим его нет на шине вообще) она подтягивается резисторами к 3.3В (это NACK), но это только в том случае произойдет , если приемник не держит SDA в нуле (это ACK).
Значком вопрос отмечено как именно происходит переход к передаче следующего байта :
Чтобы не терять ритм синхроимпульса SCL , передатчик быстро поднимает SDA и затем сразу роняет и это у нас START