I2C, подтягивающие резисторы (обнаружение STM32) - PullRequest
1 голос
/ 26 июля 2011

Я отправляю свои данные через I2C (используя DMA каждые 1 с). Я добавил два подтягивающих резистора в SCK и SDATA. Теперь есть подчиненные, так как нет ответа, мастер посылает только адрес подчиненного, и это все.

Его тестовая доска, поэтому иногда случается, что я теряю эти подтягивающие резисторы на некоторое время. Когда это произойдет, я больше не получаю данных, и SCK тикает настолько быстро, насколько это возможно для этой частоты. Нет способа как это исправить, откат назад не помог, мне надо сбросить плату.

Я не могу объяснить это поведение, и это полностью убивает автобус.

1 Ответ

2 голосов
/ 27 июля 2011

Как вы уже видели, подтягивающие резисторы жизненно важны для шины i2c, как в линиях sda, так и scl.Обычно очевидно, что линия sda является двунаправленной, что не так очевидно, так как scl также несколько двунаправлен, поскольку ведомые устройства могут поддерживать линию на низком уровне, чтобы снизить скорость шины.

Во многих случаяхшина может быть заблокирована из-за столкновения или другой физической проблемы, например, из-за потери подтягиваний. В таком случае некоторые ведомые не освобождают шину должным образом, потому что они понимают, что к ним все еще обращаются.Эта ситуация может быть исправлена ​​ведущим, посылающим выходные импульсы SCL и, наконец, условием остановки, когда линии освобождаются.Однако, если вы говорите, что нет подчиненных, это, вероятно, не ваш случай.

Я боюсь, что ваша проблема может быть связана с периферийным устройством i2c мастера, который не видит, что линии идут высоко, как ожидается, потому что подтягиваниявременно отключены.Лучшее решение, которое я могу придумать в вашем случае, состоит в том, что вы должны убедиться, что вы не потеряете эти подтягивания.Лучший способ добиться этого - подключить два или три резистора параллельно в каждой линии, таким образом, все два / три должны быть отключены, чтобы шина оставалась «без нагрузки».Используйте два резистора 10k параллельно для SDA и еще два для SCL.

...