Перейти к содержанию
    

Господа, возникла такая проблема с инициализацией Ethernet на контроллере NXP LPC4088.

 

Как обычно первым делом выставляю ножки контроллера а альтернативную ф-ю для Ethernet (всего 18 ног)

Далее пытаюсь подать питание на периферию:

LPC_SC->PCONP |= 1<<30;

И на этом работа процессора останавливается.

 

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

 

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

 

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

 

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

 

post-71870-1433763303.jpg

Изменено пользователем A_Sherbakov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А Вы в самое начало программы добавьте отключение питания

PCONP_bit.PCENET = 0;

 

у меня на LPC2478 что то подобное было, там при сбросе через отладчик etherenet модуль не сбрасывался корректно, это помогло.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А Вы в самое начало программы добавьте отключение питания

PCONP_bit.PCENET = 0;

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, но не помогло. Есть подозрение что это что-то с J-tag

Очень похоже на то. У этого МК пины JTAG и ETHERNET случайно не объединены?

PCONP - это вообще-то не питание, а тактирование периферии. Убедитесь, что частота тактирования ETHERNET-модуля находится в допустимых пределах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Посмотрите как проходит пошаговая отладка в окне дизассемблера: это позволит более подробно увидеть происходящее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Методом проб и ошибок пришел к такому прогрессу. Если сначала инициализировать ноги тактирования (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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да и вот еще что. На ногах 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Дмитрий, скажите пожалуйста. Может быть такое (не формируются тактовые) из-за того, что микросхема еще не настраивалась, или это должно произойти автоматом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дмитрий, скажите пожалуйста. Может быть такое (не формируются тактовые) из-за того, что микросхема еще не настраивалась, или это должно произойти автоматом.

Ну, во-первых, проверьте в каком режиме у Вас switch: MAC или PHY. PHY обычно сразу формирует, хотя бывают исключения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, во-первых, проверьте в каком режиме у Вас switch: MAC или PHY. PHY обычно сразу формирует, хотя бывают исключения.

Юзаю KSZ8895 совместно с STM32F4, режим MII. Клоки идут сразу. А вот чтобы свич заработал (начал пакеты гонять) - надо ему шепнуть волшебное слово по MDC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

 

Всем еще раз спасибо за советы. Буду пробовать дальше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Написано что надо настроить PHY, но как это сделать если мне Ethernet не включить.

Эмулировать MII программно через GPIO?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эмулировать MII программно через GPIO?

Не пройдет, синхронности не будет. Только внешний генератор (MAC-MAC).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...