Драйвер ESP32 IDF I2C NG. Как заставить I2C прекратить предоставлять второе условие STOP после таймаутаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Драйвер ESP32 IDF I2C NG. Как заставить I2C прекратить предоставлять второе условие STOP после таймаута

Сообщение Anonymous »

Пример кода (неважно, читается или пишется):

Код: Выделить всё

esp_err_t I2CManager::writeData(uint8_t deviceAddress, const uint8_t* data, size_t length, int timeOut, uint32_t speed)
{
esp_err_t errCode = ESP_ERR_TIMEOUT;

ssize_t deviceSlot = findDeviceSlot(deviceAddress);
if(i2c_master_bus_handle == nullptr)
{
errCode = ESP_ERR_NOT_FOUND;
goto function_return;
}

if(deviceSlot == -1)
{
deviceSlot = addNewDevice(deviceAddress, speed);
}

//now we got everything - the bus and the device
errCode = i2c_master_transmit(dev_handles[deviceSlot].dev_handle, data, length, timeOut);

function_return:
return errCode;
}
Драйвер IDF NG (нового поколения) ожидает timeOut, чтобы обеспечить условие STOP, если на шине I2C нет ничего, что могло бы подтвердить адрес.
Изображение
[img]https: //i.sstatic.net/pLjtZ4fg.png[/img]

Изображение

второе условие STOP генерируется по истечении времени ожидания. Как заставить водителя не подавать второй СТОП

Подробнее здесь: https://stackoverflow.com/questions/790 ... p-conditio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»