|
I2C Slave на STM32F103, нестабильная работа |
|
|
|
Aug 3 2015, 07:20
|

Знающий
   
Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237

|
Добрый день! На контроллере STM32F103 реализовано I2C Slave устройство, которое принимает от "внешнего мира" команды, обрабатывает их, и по запросу чтения выдает ответ. Всё это работает на 90% выпущенных плат. На 10% тех же плат (из той же произведенной серии) наблюдается следующая картина - I2C Slave аппаратно не подтверждает свой адрес, то есть не выдает ACK на первый (адресный) байт со стороны мастера. В качестве мастера для теста используется компьютер с простейшим адаптером на LPT порт, который имитирует программно работу мастера (выдает команды по I2C и получает ответ). Картина, наблюдаемая логическим анализатором, доподлинно следующая - мастер правильно формирует старт-условие, адресный байт, не получает от I2C Slave ACK, снова формирует старт, адрес и т. д. много-много раз (несколько десятков раз), и вот в какой-то момент адрес подтверждается (ACK), контроллер получает команду, обрабатывает её и готов отдать ответ. Далее та же петрушка начинается с чтением - старт, адрес + бит чтения = NACK до посинения, потом, наконец, STM32 формирует ACK и выдает правильный ответ мастеру. Примечательный момент - если встать на любую линию SCL или SDA щупом осциллографа, то работа слейва сразу стабилизируется, он начинает работать четко и формирует ACK сразу после первого же запроса. Что это может быть? В чём ошибка? Почему 90% плат работают, а 10% ведут себя так?
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
|
 |
Ответов
|
Aug 3 2015, 08:21
|

Знающий
   
Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237

|
Цитата(Golikov A. @ Aug 3 2015, 11:09)  Может 3.3 вольт не хватать компьютеру для 1? У каких то контроллеров они не совсем 3.3? Контроллер не подтверждает свой адрес на шине I2C, который (судя по логу анализатора) формируется правильно, при чём здесь компьютер? Да и на стороне компьютера подтяжка к +5 вольтам, это контроллер "тянет" вниз лог. 0 выходом "open drain"... Может, в поведении аппаратного контроллера I2C у STM32 есть какая-то особенность, ну скажем, при определённых условиях он не считает шину свободной, или что-то в этом духе... Цитата(iosifk @ Aug 3 2015, 11:13)  Осциллограф на шине - это емкость. Это я понимаю, что ёмкость. Щуп, кстати, неплохой, с полосой 200 МГц, поэтому ёмкость крайне невелика, должно быть около 5-8 пФ. Ёмкость может не только сглаживать "пички", но и слегка сдвигать фронты сигнала. Но почему не все контроллеры сбиваются от предположительных "пичков"?
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
|
Aug 3 2015, 08:28
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Demeny @ Aug 3 2015, 11:21)  Это я понимаю, что ёмкость. Щуп, кстати, неплохой, с полосой 200 МГц, поэтому ёмкость крайне невелика, должно быть около 5-8 пФ. Ёмкость может не только сглаживать "пички", но и слегка сдвигать фронты сигнала. Но почему не все контроллеры сбиваются от предположительных "пичков"? Потому что I2C работает на 100 Кгц максимум. А процессор на 20-100 Мгц и для него пологие фронты сигналов I2C - это как "пила". И на фронте этой пилы еще сидят помехи. Так что кто-то их успевает нахватать, а кто-то - нет. Я в ПЛИС для таких сигналов предпочитаю ставить цифровой фильтрик и не иметь головную боль... А в Вашем случае надо искать откуда лезут помехи. Или поставить в линию 10-30 ом резисторы. Или емкость с линии на землю...
--------------------
www.iosifk.narod.ru
|
|
|
|
Сообщений в этой теме
Demeny I2C Slave на STM32F103 Aug 3 2015, 07:20 1113 ваше устройство только с компьютером связано или с... Aug 3 2015, 07:23 Golikov A. и с подтяжками шин...
уровни логические, питание,... Aug 3 2015, 07:31 Demeny Цитата(1113 @ Aug 3 2015, 10:23) ваше уст... Aug 3 2015, 07:58 1113 посмотрите осциллографом на землю компьютера относ... Aug 3 2015, 08:00 Demeny Цитата(1113 @ Aug 3 2015, 11:00) посмотри... Aug 3 2015, 08:09  Timmy Согласен с iosifk, это могут быть короткие пички н... Aug 3 2015, 08:25   scifi Цитата(iosifk @ Aug 3 2015, 11:28) Потому... Aug 3 2015, 08:51    iosifk Цитата(scifi @ Aug 3 2015, 11:51) Вообще-... Aug 3 2015, 09:05 iosifk Цитата(Demeny @ Aug 3 2015, 10:20) Примеч... Aug 3 2015, 08:13 Golikov A. ЦитатаВ линии стоят последовательные резисторы 100... Aug 3 2015, 09:04 Demeny Вести с полей.
Не веря ни в какие "пички... Aug 4 2015, 15:47 scifi По спецификации I2C Fast Mode для Start Condition ... Aug 4 2015, 17:21 Golikov A. а вы уверены что дело в том что вы сдвинули фронты... Aug 4 2015, 16:56 Demeny Цитата(Golikov A. @ Aug 4 2015, 19:56) а ... Aug 4 2015, 17:24  scifi Цитата(Demeny @ Aug 4 2015, 20:24) У меня... Aug 4 2015, 17:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|