В настоящее время я работаю с I2C в Arch Linux Arm и не совсем уверен, как рассчитать абсолютную минимальную задержку, которая требуется между записью и чтением. Если у меня нет этой задержки, чтение, естественно, не проходит. Я только что применил usleep(1000)
между двумя командами, что работает, но это просто сделано эмпирически и должно быть оптимизировано до реального значения (каким-то образом). Но как?.
Вот мой пример кода для функции write_and_read
, которую я использую:
int write_and_read(int handler, char *buffer, const int bytesToWrite, const int bytesToRead) {
write(handler, buffer, bytesToWrite);
usleep(1000);
int r = read(handler, buffer, bytesToRead);
if(r != bytesToRead) {
return -1;
}
return 0;
}