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

 
 
 
Reply to this topicStart new topic
> STM32F107 и DP83848: пропадает Ethernet
loltrol
сообщение Jan 17 2015, 19:02
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649



Есть устройство на STM32F107 и физ. драйвере DP83848. Работает на PowerPac RTOS (full, не evaluation) из-под IAR 6.2.
Периодически отмирает Ethernet. Вначале падал чётко через 15 минут, грешили на какие-либо программные глюки. Однако впоследствии стал умирать совершенно случайно и внезапно. Может проработать 2 минуты, а может и 2 часа. Иногда встречаются периоды просветления и работает часов по 12.
Одновременно вертится несколько задач, но пробовали запускать лишь одну.
Когда Ethernet работал по 15 минут пробовали останавливать программу дебаггером - после продолжения всё равно работал те же 15 минут и умирал.
Ethernet умирает даже если прибор не подключён к ЛВС (т.е. запускаем, ждём минут 20-30 и подключаем сеть - ноль эмоций).
Какие могут быть подводные камни? Рука уже тянется к топору :-(
Go to the top of the page
 
+Quote Post
Aner
сообщение Jan 17 2015, 20:14
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Именно эта связка у меня работает стабильно много лет в серийных устройствох -> STM32F107 и физ. драйвер DP83848. Ничего не подает, ройте.
Проверять начинайте с кварца, его качество, точность. Затем вопрос чем тактируете DP83848? Если вторым PLL от проца, то кварц желателен +/-20ppm.
Какой кварц у проца и как получаете частоты в первом PLL? (PowerPac RTOS full из-под IAR 5.8 ... 6.2 +) Ну и смотрим что с дма и тд. Проверте аппататную проблему также.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jan 17 2015, 21:53
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Ета же связка если не имзменяет память и в STM3210C-EVAL. Так что ищите грабли.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
loltrol
сообщение Jan 18 2015, 13:01
Сообщение #4





Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649



PLL3 тактируется кварцем (25МГц) и дает на выходе 50 МГц.
PLL2 тактируется кварцем (25 МГц), на выходе - 40 МГц.
PLL1 тактируется от PLL2/5 = 8 МГц, на выходе 72 МГц.
DP83848 тактируем PLL3. Правда, точность вряд ли лучше 50 ppm, однако грели феном схему что бы вызвать сбой - сбоя не случалось.
Нужно ли ставить терминальные резисторы на сигнальные линии от проца к драйверу? Грешим на отражения, а от физдрайвера к трансу они стоят (49.9 Ом).
Go to the top of the page
 
+Quote Post
Aner
сообщение Jan 18 2015, 13:52
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



С плл все вроде так, смотрите дебагером что с прерываниями в дма. И еще вопрос, есть ли разница если коннект по езернету на 10 и 100?
Если разница есть проверяйте джиттер, откуда он берётся. Еще можно пробовать запитать DP83848 от отдельного кварца, тех же 25 мег, или от внешнего генератора 50 мег. И понять на чьей стороне проблема.

Еще можно проверить какие у вас ревизии чипов и порыть ераты, может у вас что из первых выпусков чипов и там бяки.

49.9 Ом обязательно 100%, и желательно 1%. Никаких там 47, 51 иначе будет плавать и скорость падать, будут ошибки. И если "провода" проводники на плате длинные то и разводить как диф пару! со строгим выдержанном волновым, примеров хоть отбавляй.

Что еще за терминальные резисторы на сигнальные линии от проца к драйверу? От проца к драйверу все строго по аенам, даташиту.
Go to the top of the page
 
+Quote Post
loltrol
сообщение Jan 19 2015, 07:24
Сообщение #6





Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649



Разницу 10 и 100 не проверяли, в эрратах ничего нет.
Терминальные резисторы - на STM3210C-EVAL, которую привёл A. Fig Lee, между процом и физдрайвером стоят согласующие резисторы 33 Ом. У нас таких нет.
Aner, а вы используете PowerPac'овский модуль Ethernet? Мы явно не используем DMA; только указали выходы проца, всё остальное делает PowerPac TCPIP.
И ещё: мы используем RMII (не хватило ножек). У вас также или MII?

Сообщение отредактировал loltrol - Jan 19 2015, 07:24
Go to the top of the page
 
+Quote Post
Aner
сообщение Jan 19 2015, 12:21
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Разницу 10 и 100 так проверьте! Согласующие резисторы 33 Ом не обязательны (у нас тоже их нет), они нужны для низких питаний согласовать уровни, проблем с фронтами, то чего давно на этих связках не наблюдается.

Дма нужно контролировать через него все идет. Или смотрите кто дёргает ваш третий плл, если там джиттер. Потом использую Lwip, уходите от того начального PowerPac TCPIP или сами его доковыривайте. Проект не один, есть проект cо STM32F107RCT6 также RMII, из-за малого корпуса и пинов. Но проверяли и с MII, разницы не нашли.
Go to the top of the page
 
+Quote Post
loltrol
сообщение Jan 20 2015, 09:55
Сообщение #8





Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649



Спасибо за помощь!
Пока обнаружили другую проблему: из-за избыточной длины проводника данные с физ. драйвера приходят на проц с запаздывающим (на пол-такта) тактированием. Возможно, причина в этом. Будем переразводить плату, по результатам постараюсь отписать.
Go to the top of the page
 
+Quote Post
Aner
сообщение Jan 20 2015, 10:09
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



QUOTE (loltrol @ Jan 20 2015, 13:55) *
Спасибо за помощь!
Пока обнаружили другую проблему: из-за избыточной длины проводника данные с физ. драйвера приходят на проц с запаздывающим (на пол-такта) тактированием. Возможно, причина в этом. Будем переразводить плату, по результатам постараюсь отписать.

Плату или рисунок киньте мне посмотрю, может не в этом проблема. Физически пол-такта на длине линии потерять нельзя, если плата в разумных пределах конечно.
Go to the top of the page
 
+Quote Post
Jury093
сообщение Jan 20 2015, 10:18
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(loltrol @ Jan 20 2015, 12:55) *
Пока обнаружили другую проблему: из-за избыточной длины проводника данные с физ. драйвера приходят на проц с запаздывающим (на пол-такта) тактированием.

попробуйте затактировать от внешнего генератора на 50МГц
гугление выводит на темы, типа:
http://electronix.ru/forum/lofiversion/ind...hp/t108846.html
http://forum.easyelectronics.ru/viewtopic....999&start=0
с упоминанием еррат и советов с генератором..
переразвестись всегда успеете..

ps посмотрите в даташите, может есть упоминания для управления сдвигом такта для данных (кажись у микрела была такая фишка) для rmii
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Jan 20 2015, 12:33
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(Aner @ Jan 19 2015, 07:21) *
Разницу 10 и 100 так проверьте! Согласующие резисторы 33 Ом не обязательны (у нас тоже их нет), они нужны для низких питаний согласовать уровни, проблем с фронтами, то чего давно на этих связках не наблюдается.

"У нас тоже их нет" не показатель. Я вон модуль MRF24J40MA пользовал - не работает. И гдето в дебрях интернета нашел, что ктото поставил 120 Ом в цепь даты.
И о! С ним заработало. А многим они оказались не нужны..


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
loltrol
сообщение Jan 20 2015, 14:26
Сообщение #12





Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649



Опишу ситуацию, чтобы другие не попадались: RMII интерфейс связи пришлось использовать по скудости пинов, но внимательно изучить разницу было недосуг - в итоге из виду ушло что тактирование приема данных от физдрайвера процом осущетсвляется самим процом (от сигнала пина MCO на пин ETH_RMII_REF_CLK) и естественно по оч короткому пути (15 мм). Тот же клок идет до физдравера по дорожке примерно 80-90 мм и на двухлучевом осциле замеряется задержка в 5-6 нс. Ну а дальше простая арифметика - задержка данных на пинах физдрайвера до 14 нс (по даташиту), плюс ход данных до проца до 5-6 нс (по замеру) - и имеем что может быть ситуация считывания процом данных которых еще нет (считывание данных идет вторым тактом - т.е. чз 20 нс а валидные данные могут появится чз 25 нс). Что, в пинципе, мы и имеем: плавающий эффект - то работает 2-3 дня, то дохнет чз 10-15 минут после включения - не отлипает, видимо, по особенностям софта (PP IAR). Наблюдая осцилом зависший Ethernet, видно что данные от физдрайвера идут абсолютно адекватные, а проц просто их игнорит. А если еще и плата плохо помыта и флюс под процом - эффект падежа гаратирован ((
Go to the top of the page
 
+Quote Post
Aner
сообщение Jan 20 2015, 14:34
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



C PP давно ушел на Lwip, чего и вам советую. РР ну очень сырая была тогда, незнаю как сейчас.
Go to the top of the page
 
+Quote Post
loltrol
сообщение Jan 20 2015, 19:38
Сообщение #14





Группа: Участник
Сообщений: 12
Регистрация: 17-01-15
Пользователь №: 84 649



Цитата(Aner @ Jan 20 2015, 14:34) *
C PP давно ушел на Lwip, чего и вам советую. РР ну очень сырая была тогда, незнаю как сейчас.

100500 и была и есть сырая. Иногда стоит мегаусилий заставить их код работать, что USB-bulk, что WEB-сервер - оч крупный рашпиль применяется )) особенно при полном отсутствии исходников. Выбор PP щел от компилятора, честно Lwip просто не попался под руку, спс за наводку.
Go to the top of the page
 
+Quote Post

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

 


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


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