реклама на сайте
подробности

 
 
> STM32 как правильно поклокать i2c
Vladimir Prokofi...
сообщение Mar 22 2012, 09:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 9-03-11
Пользователь №: 63 481



Возникают проблемы с i2c, не может выставиться START. По видимому, это связано с тем, что слейв находится в передаче и держит SDA.
Чтобы слейв отпустил шину, предлагается дать по клоку несколько тактов.
как это правильно сделать?
Выключить i2c, включить ногу клока на выход, подергать, включить снова и2с или есть простой способ этого сделать не изменяя конфигурацию ног?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
PoReX
сообщение Mar 22 2012, 12:43
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518



Похоже нарушен протокол I2C. Реализация аппаратная? Тогда как вы пытаетесь выставить вручную старт? Если слейв в режиме передачи, то нужно дать ему закончить передачу и не подтвердить последний байт, тем самым сеанс связи закончится и можно начинать новый, выставив старт. Или я что-то я не пойму, код в студию.

Сообщение отредактировал PoReX - Mar 22 2012, 12:44


--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Mar 23 2012, 09:31
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(PoReX @ Mar 22 2012, 16:43) *
Похоже нарушен протокол I2C.

Угу. Например, мастер в лице нашего контроллера решил перезагрузиться в момент передачи от слейва.
Ситуация такая вполне вероятна (более того, наши тестировщики умеют повторять её на одном из устройств; пользователи, правда, не жаловались - они не щелкают кнопкой включения десяток раз подряд).

Методика лечения очень простая - 9 раз дёрнуть клок, не выдавая ACK. Но как это сделать, не перенастраивая ноги, я не знаю.
Может, кстати, при ошибках обмена такое же делать?.. А то я сейчас просто стоп-старт шлю, если что-то не так.

Так что +1 к вопросу. Только у меня LPC.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 02:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016