Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с Ethernet
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
A_Sherbakov
Господа, возникла такая проблема с инициализацией Ethernet на контроллере NXP LPC4088.

Как обычно первым делом выставляю ножки контроллера а альтернативную ф-ю для Ethernet (всего 18 ног)
Далее пытаюсь подать питание на периферию:
LPC_SC->PCONP |= 1<<30;
И на этом работа процессора останавливается.

В ИАРе в просмоторщике регистров, вместо осознанных цифр сплошные прочерки.

С остальной периферией все нормально.

Может кто сталкивался... Подскажите пожалуйста

Да, и еще после этого вылезает ошибка

Нажмите для просмотра прикрепленного файла
Golikov A.
Питания хватает? Может какое КЗ на это периферии, пока ноги на вход все ок, а как пошевелить надо, так и рушиться все...

И еще такой момент у вас на HardFault и прочих падучих прерываниях стоят заглушки, чтобы их заметить?
A_Sherbakov
Цитата
Питания хватает? Может какое КЗ на это периферии, пока ноги на вход все ок, а как пошевелить надо, так и рушиться все...


Питания хватает, ставили на отложенный запуск, Смотрели может какой пик есть. Все ровно держит +3V3.

Цитата
И еще такой момент у вас на HardFault и прочих падучих прерываниях стоят заглушки, чтобы их заметить?


Заглушки стоят, но туда не приходит, просто вываливается и все. Есть у нас отладочный диод, который моргает от прерывания периодического таймера. Если EMac не включать, работает... Как только пишем эту строчку (LPC_SC->PCONP |= 1<<30;) все. После нее тишина.
KRS
А Вы в самое начало программы добавьте отключение питания
PCONP_bit.PCENET = 0;

у меня на LPC2478 что то подобное было, там при сбросе через отладчик etherenet модуль не сбрасывался корректно, это помогло.
A_Sherbakov
Цитата
А Вы в самое начало программы добавьте отключение питания
PCONP_bit.PCENET = 0;


Спасибо, но не помогло. Есть подозрение что это что-то с J-tag. Потому что прошил КИТ стандартным ИАРовским примером, встал на мою уже полюбившуюся строчку. И вылетел, переткнул питание, загорелась лампочка на RJ45. Но что интересно с другой периферией все нормально. И UARTы все работают, и SPI()SSP, и многое другое. Странно.
jcxz
Цитата(A_Sherbakov @ Jun 8 2015, 18:44) *
Спасибо, но не помогло. Есть подозрение что это что-то с J-tag

Очень похоже на то. У этого МК пины JTAG и ETHERNET случайно не объединены?
PCONP - это вообще-то не питание, а тактирование периферии. Убедитесь, что частота тактирования ETHERNET-модуля находится в допустимых пределах.
Obam
Цитата(A_Sherbakov @ Jun 8 2015, 16:44) *
Спасибо, но не помогло. Есть подозрение что это что-то с J-tag. Потому что прошил КИТ стандартным ИАРовским примером, встал на мою уже полюбившуюся строчку. И вылетел, переткнул питание, загорелась лампочка на RJ45. Но что интересно с другой периферией все нормально. И UARTы все работают, и SPI()SSP, и многое другое. Странно.


Посмотрите как проходит пошаговая отладка в окне дизассемблера: это позволит более подробно увидеть происходящее.
A_Sherbakov
Методом проб и ошибок пришел к такому прогрессу. Если сначала инициализировать ноги тактирования (ENET_REF_CLK для RMII), а следующей строчкой подать тактовую на Ethernet периферию, все идет по плану. Такой вот проц. Вот вырезка из мануала UM4088.

Цитата
Remark: when initializing the Ethernet block, it is important to first configure the PHY and
insure that reference clocks (ENET_REF_CLK signal in RMII mode, or both
ENET_RX_CLK and ENET_TX_CLK signals in MII mode) are present at the external pins
and connected to the EMAC module (selecting the appropriate pins using the IOCON
registers) prior to continuing with Ethernet configuration. Otherwise the CPU can become
locked and no further functionality will be possible. This will cause JTAG lose
communication with the target, if debug mode is being used.


Но это на ИАРовском КИТе все заработало. Там и PHY был сконфигурирован и режим RMII. На боевой плате У нас 5-портовый свич Micrel KSZ8895. Хочу режим MII. Инициализирую ENET_RX_CLK и ENET_TX_CLK, подаю тактовую на периферию Ethernet, и все как всегда. Написано что надо настроить PHY, но как это сделать если мне Ethernet не включить.

Да и вот еще что. На ногах ENET_RX_CLK и ENET_TX_CLK тишина, а на КИТе на ENET_REF_CLK 50 MHz.
DmitryM
Цитата(A_Sherbakov @ Jun 9 2015, 14:27) *
Да и вот еще что. На ногах ENET_RX_CLK и ENET_TX_CLK тишина, а на КИТе на ENET_REF_CLK 50 MHz.


ENET_RX_CLK и ENET_TX_CLK - должны формироваться Micrel (25MHz), у Вас что-то со свитчом. На ките PHY включена в RMII вот и выдает ENET_REF_CLK 50 MHz.
A_Sherbakov
Цитата
ENET_RX_CLK и ENET_TX_CLK - должны формироваться Micrel (25MHz), у Вас что-то со свитчом. На ките PHY включена в RMII вот и выдает ENET_REF_CLK 50 MHz.


Дмитрий, скажите пожалуйста. Может быть такое (не формируются тактовые) из-за того, что микросхема еще не настраивалась, или это должно произойти автоматом.
DmitryM
Цитата(A_Sherbakov @ Jun 9 2015, 14:57) *
Дмитрий, скажите пожалуйста. Может быть такое (не формируются тактовые) из-за того, что микросхема еще не настраивалась, или это должно произойти автоматом.

Ну, во-первых, проверьте в каком режиме у Вас switch: MAC или PHY. PHY обычно сразу формирует, хотя бывают исключения.
LightElf
QUOTE (DmitryM @ Jun 9 2015, 14:20) *
Ну, во-первых, проверьте в каком режиме у Вас switch: MAC или PHY. PHY обычно сразу формирует, хотя бывают исключения.

Юзаю KSZ8895 совместно с STM32F4, режим MII. Клоки идут сразу. А вот чтобы свич заработал (начал пакеты гонять) - надо ему шепнуть волшебное слово по MDC.
A_Sherbakov
Цитата
ENET_RX_CLK и ENET_TX_CLK - должны формироваться Micrel (25MHz), у Вас что-то со свитчом. На ките PHY включена в RMII вот и выдает ENET_REF_CLK 50 MHz.

Спасибо огромное за советы, решили проверить как процессор себя поведет имея на входе 25 МГц на обоих сигналах. Дали с циклона два провода, все пошло. Ура.
Цитата
Ну, во-первых, проверьте в каком режиме у Вас switch: MAC или PHY. PHY обычно сразу формирует, хотя бывают исключения.

Мы хотели подключить Mac - Mac. Пощупал микросхему осциллографом, действительно PHY дает 25 МГц, а Mac нет. С микросхемой работаю впервые. наверно надо настраивать ее в таком режиме не через MIIM а через SPI. Или может какие есть аппаратные средства.

ВЫВОД: Действительно работая в связке NXP LPC4088 и любой PHY нужно сначала конфигурировать ноги отвечающие за тактовые сигналы Ethernet (хотя бы одну для RMII это REF_CLK), а потом подавать тактовую на периферию Ethernet.

Всем еще раз спасибо за советы. Буду пробовать дальше.
jcxz
Цитата(A_Sherbakov @ Jun 9 2015, 16:27) *
Написано что надо настроить PHY, но как это сделать если мне Ethernet не включить.

Эмулировать MII программно через GPIO?
DmitryM
Цитата(jcxz @ Jun 9 2015, 19:46) *
Эмулировать MII программно через GPIO?

Не пройдет, синхронности не будет. Только внешний генератор (MAC-MAC).
romas2010
Цитата(A_Sherbakov @ Jun 9 2015, 14:27) *
Но это на ИАРовском КИТе все заработало. Там и PHY был сконфигурирован и режим RMII. На боевой плате У нас 5-портовый свич Micrel KSZ8895. Хочу режим MII. Инициализирую ENET_RX_CLK и ENET_TX_CLK, подаю тактовую на периферию Ethernet, и все как всегда. Написано что надо настроить PHY, но как это сделать если мне Ethernet не включить.

Да и вот еще что. На ногах ENET_RX_CLK и ENET_TX_CLK тишина, а на КИТе на ENET_REF_CLK 50 MHz.


У меня коллега писал софт на этот свич...или 8895 или 8995,не помню уже...могу выслать его инициализацию..там он через SPI конфигурируется,если мне тоже память не изменяет...там stm32+keil RTX но думаю,важен сам алгоритм,посмотрите,сравните,как у вас и как там,что не так и пр...
A_Sherbakov
Господа, вот уже который день заставляю заработать этот Switch. И пока безрезультатно. Может кто с ним работал, может у кого есть знакомые кто его пробовал. Помогите пожалуйста, если у вас есть пример его конфигурации по SPI или что-то вроде... Без разницы в какой среде разработки. Мне бы хоть PPP настроить, чтобы пакетик пошел. Дальше разберусь (ну или по аналогии). У меня подключен MAC на MAC в режиме SW-PHY5. Комп каналы вроде видит, правда почему-то 10Mbit, но с этим можно позже разобраться. Короче, если у кого-то что-то есть, "моей благодарности не будет границ". Заранее спасибо.
A_Sherbakov
Неужели никто не работал с этой штукой?
KRS
Я работал с подобной, только 3х портовой и у меня по SPI управление было подключено.

Цитата(jcxz @ Jun 9 2015, 18:46) *
Эмулировать MII программно через GPIO?

Не MII, а MDIO - это похоже на обычный SPI, ноги выделенные можно и "вручную" легко подергать.

Кроме того у NXP даже appnote есть как это делать - был у него чип у которого то ли бага, то ли ноги какой не хватало и что бы PHY законфигурить приходилось ногами дрыгать.
svss
Цитата(A_Sherbakov @ Jun 20 2015, 13:04) *
пример его конфигурации по SPI или что-то вроде... Без разницы в какой среде разработки.


Есть такой документ "porting guide":
http://www.micrel.com/_PDF/Ethernet/sw_des...uide%20v1.0.pdf

В нём есть в т.ч. ссылка на исходники ksz8895-spi.c, ksz8895phy.c

(не уверен, что это сильно поможет ибо мнооого. сам я 8895 не юзал, прошу прощения)
A_Sherbakov
Цитата
Есть такой документ "porting guide":
http://www.micrel.com/_PDF/Ethernet/sw_des...uide%20v1.0.pdf

В нём есть в т.ч. ссылка на исходники ksz8895-spi.c, ksz8895phy.c


Спасибо, я его просматривал, но вроде там только драйвер MIIM и SPI. А вот что в регистры писать и как его настроить, чтобы пакетики пошли, нет.

Цитата
Не MII, а MDIO - это похоже на обычный SPI, ноги выделенные можно и "вручную" легко подергать.

Кроме того у NXP даже appnote есть как это делать - был у него чип у которого то ли бага, то ли ноги какой не хватало и что бы PHY законфигурить приходилось ногами дрыгать.


SPI и MIIM у меня работает, читает/пишет все норм с этим.

Потыкался в него осцилом. Пакеты приходят, ножка под диод (который LED 1-2) скачет. То есть switch понимает что пакет пришел. Интересно что он с ним дальше делает)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.