В I2C условие START требует перехода с высокого уровня на низкий, если вы затем отправите фиктивный адрес 0, будет сгенерирован NACK (или, скорее, отсутствие какого-либо ответа будет интерпретировано как NACK).В обычной транзакции программное обеспечение будет реагировать на NACK, генерируя повторное условие START или STOP, однако это должно быть сделано в программном обеспечении, поэтому все, что вам нужно сделать, это ничего не делать в течение 1,5 мс.После этого вы можете сгенерировать START с реальным адресом устройства, и если устройство работает, оно сгенерирует ACK.
Я не знаком с драйвером библиотеки HAL, и, честно говоря, документация ужасна, но этоВозможно, это не даст вам необходимого контроля, и вам придется получить доступ к периферийному устройству I2C на уровне регистра, по крайней мере, для этой процедуры.Вы можете попробовать I2C_MasterRequestWrite()
вызов нулевой длины по нулевому адресу с последующей задержкой.Осциллограф может быть полезен для обеспечения генерации ожидаемой синхронизации сигнала.