|
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:09
|

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

|
Цитата(1113 @ Aug 3 2015, 11:00)  посмотрите осциллографом на землю компьютера относительно земли процессора (или наоборот, как удобнее) - может тут что-нибудь увидите Вообще, земля компьютера, процессора и минус лабораторного блока питания соединены, как и земли осциллографа и лог. анализатора, которыми подключаюсь. Но посмотрю, на всякий случай. Я бы искал системную ошибку, если бы все платы вели себя так. Но абсолютное большинство плат работает нормально. Значит, что 10% плат из той же производственной серии, без видимых дефектов монтажа, чем-то отличаются от остальных. Главный вопрос -чем? Битый контроллер, перегрев при монтаже, или всё же софтовая/схемная ошибка?
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
Сообщений в этой теме
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 Golikov A. Может 3.3 вольт не хватать компьютеру для 1? У как... Aug 3 2015, 08:09 Demeny Цитата(Golikov A. @ Aug 3 2015, 11:09) Мо... Aug 3 2015, 08:21  Timmy Согласен с iosifk, это могут быть короткие пички н... Aug 3 2015, 08:25  iosifk Цитата(Demeny @ Aug 3 2015, 11:21) Это я ... Aug 3 2015, 08:28   Demeny Цитата(iosifk @ Aug 3 2015, 11:28) Потому... Aug 3 2015, 08:40   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
|
|
|