|
|
  |
залипает шина I2C в STM32, на МК режим slave |
|
|
|
Oct 10 2016, 14:56
|
Профессионал
    
Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079

|
сегодня куплю вечером его. Утром будет у меня уже. пока давайте еще в осцилл посмотрим. http://prntscr.com/cs3vatПри нормальной работе идет пачка из 5 пакетов. Адрес моего слейва 0х01 Почему NAK приходит первым пакетом?
|
|
|
|
|
Oct 10 2016, 14:59
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(Метценгерштейн @ Oct 10 2016, 17:56)  При нормальной работе идет пачка из 5 пакетов. Адрес моего слейва 0х01
Почему NAK приходит первым пакетом? Вроде же, ACK там на осциллограмме. 9-й бит защёлкивается ноль, это ACK.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Oct 10 2016, 15:22
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Ну, фронты не только мастер определяет, в случае бита ACK/NACK его установка зависит от расторопности слейва, и у вас она на пределе, я бы сказал. Также видно, что мастер меняет SDA практически одновременно с падением вниз SCL, что как раз и может способствовать появлению ложных START/STOP условий, особенно на длинных проводах. Это как раз то, с чем я боролся, и после чего остановился на софтовом I2C. Неприятная особенность аппаратного I2C в STM32 как раз в этом и заключается, что он очень чувствителен к таким ситуациям, выбрасывает при этом флаг BERR и начинает с начала.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Oct 11 2016, 06:46
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(Метценгерштейн @ Oct 10 2016, 21:56)  мастер может и умеет, но я туда не лезу. Может где в STM указать, чтобы растянул слегка? Я купил анализатор за 700=, будем завтра изучать вопрос углубленно )) Теперь Вы и сами, думаю, разберетесь. А если покурите UM10204.pdf Philips - такужточно  Я для такой разработки, конечно, вместо черного ящика с линуксом сделал бы его эмуляцию для "нагрузочного" тестирования. (если в процессоре есть 2 канала I2C - то можно эмулятор мастера сделать и в основном проекте, а соединение с линуксом временно разорвать). Обратите внимание на содержимое вектора обработки прерываний. Он должен быть полнофункциональный по обработке ситуаций и минимальный по объему кода. Только работа с периферийным узлом I2C - команды и состояния обмена.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|