Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Одновременная работа USB и Ethernet на STM32F407VG
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Leopoldius
Добрый день.

Озадачился я одновременной работой USB и Ethernet на сабже, в качестве PHY планирую использовать DP83848 в режиме RMII. Для этого ее необходимо тактировать от 50мгц клока и я так понимаю процессор тоже должен его получать, если верить ДШ. Проблема состоит в том что я не могу найти "правильную частоту". Что бы обеспечить условие 48МГц для USB и 50МГц для RMII. Единственный вариант, который приходит в голову тактировать от таймера встроенного в процессор. Их там все равно много и у меня есть свободные. Подскажите пожалуйста как выйти из этой ситуации. Вариант с MII выглядит очень даже интересно, но все же, много ног, жалко их...

Спасибо.
Flexz
Цитата(Leopoldius @ May 23 2013, 14:39) *
Для этого ее необходимо тактировать от 50мгц клока и я так понимаю процессор тоже должен его получать, если верить ДШ.

Получать на вход REF_CLK, правильно, но где написано, что ядро и внутренние шины процессора должны работать от этой частоты? Даташит оговаривает только ограничение на минимальную частоту AHB - 25МГц

Цитата(Leopoldius @ May 23 2013, 14:39) *
Единственный вариант, который приходит в голову тактировать от таймера встроенного в процессор.

И как вы собираетесь при частоте таймера, скажем 168 МГц получить ровные 50МГц на выходе?
vlad_new
Запросто. К примеру для STM32F207 это выглядит так:
Код
  *-----------------------------------------------------------------------------
  *        System Clock source                    | PLL (HSE)
  *-----------------------------------------------------------------------------
  *        SYSCLK(Hz)                             | 120000000
  *-----------------------------------------------------------------------------
  *        HCLK(Hz)                               | 120000000
  *-----------------------------------------------------------------------------
  *        AHB Prescaler                          | 1
  *-----------------------------------------------------------------------------
  *        APB1 Prescaler                         | 4
  *-----------------------------------------------------------------------------
  *        APB2 Prescaler                         | 2
  *-----------------------------------------------------------------------------
  *        HSE Frequency(Hz)                      | 25000000
  *-----------------------------------------------------------------------------
  *        PLL_M                                  | 25
  *-----------------------------------------------------------------------------
  *        PLL_N                                  | 240
  *-----------------------------------------------------------------------------
  *        PLL_P                                  | 2
  *-----------------------------------------------------------------------------
  *        PLL_Q                                  | 5
  *-----------------------------------------------------------------------------
  *        Flash Latency(WS)                      | 3
  *-----------------------------------------------------------------------------
  *        Prefetch Buffer                        | ON
  *-----------------------------------------------------------------------------
  *        Instruction cache                      | ON
  *-----------------------------------------------------------------------------
  *        Data cache                             | ON
  *-----------------------------------------------------------------------------
  *        Require 48MHz for USB OTG FS,          | Enabled
  *        SDIO and RNG clock                     |
  *-----------------------------------------------------------------------------

Для F4 надо просто пересчитать.
Короче кварц в 25 мГц спосет USB и Ethernet одновременно.

Flexz
При чем тут кварц в 25МГц? В вашем примере входная частота первым делом делится на 25 (параметр PLL_M), дальше все частоты считаются из 1МГц * 240.
vlad_new
Не понятно что Вы этим хотели сказать. USB 48 мгц есть, В STM есть лапка, которая может программироваться на вывод частоты генератора. Используя кварц в 25 мгц можем запрограммировать ее на 25 или 50 мГц. Как раз под MII или RMII. У меня так все и работает. А про 168Мгц. это Вы придумали. Автор темы про это не писал. Что не так ?
aoreh
Цитата(vlad_new @ May 24 2013, 05:54) *
Не понятно что Вы этим хотели сказать. USB 48 мгц есть, В STM есть лапка, которая может программироваться на вывод частоты генератора. Используя кварц в 25 мгц можем запрограммировать ее на 25 или 50 мГц. Как раз под MII или RMII. У меня так все и работает. А про 168Мгц. это Вы придумали. Автор темы про это не писал. Что не так ?

из вашего предыдущего поста - вы использовали STM32F207, там получить на MCO 25 из 25 кварца легко, а 50 - есть нюянсы из-за errata

использую ksz8031, у него RMII, но внутренний умножеитель 25->50
demiurg_spb
Цитата(vlad_new @ May 23 2013, 22:21) *
К примеру для STM32F207 это выглядит так:
Короче кварц в 25 мГц спасёт USB и Ethernet одновременно.
+1
для STM32F107 где-то также при кварце 25 мГц:
PPL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz
PPL1 configuration: PLLCLK = (PLL2 / 5) * 9 = 72 MHz
andrewlekar
А чо нельзя поприличнее PHY поставить и не заморачиваться с тактированием от проца? LAN8720 мы используем например.
Flexz
Цитата(vlad_new @ May 24 2013, 06:54) *
Не понятно что Вы этим хотели сказать. USB 48 мгц есть, В STM есть лапка, которая может программироваться на вывод частоты генератора. Используя кварц в 25 мгц можем запрограммировать ее на 25 или 50 мГц. Как раз под MII или RMII. У меня так все и работает. А про 168Мгц. это Вы придумали. Автор темы про это не писал. Что не так ?

Да, мне тоже не понятно, что вы хотите сказать sm.gif Ткните меня носом в функцию удвоения HSE для вывода на MCO, в упор не вижу такого. Поделить можно, это да.
Или вы предлагаете использовать вторую PLL, ту что I2S? Так для нее тоже 25МГц не нужно, т.к. формула генератора частоты имеет вид HSE / PLL_M * PLLI2S_N / PLLI2S_Q, где при HSE=25, имеем M=25,N=200,Q=4. Т.е. для получения 50МГц на MCO нужен любой кратный 1МГц кварц.
Дальше ТС писал про подачу 50МГц с таймера. Надеюсь не нужно объяснять вам разницу между МСО и таймером? Попробуйте сгенерить 48МГц для USB и при этом получить с таймера 50МГц.

И, как сказали выше, errata пишет нам для F2
Цитата
When the clock source output by the microcontroller on the MCO pin is issued from the PLL,
the MCO pin cannot be used to deliver a 50 MHz RMII clock input or a 25 MHz MII clock
input to the ethernet PHY compliant with the long term jitter maximum value for 1.4 ns
specified in the IEEE802.3 standard.

для F4, правда, этого уже нет.

Вот только, насколько я понял, вопрос был совсем в другом. На PHY идут 50МГц, взять их можно с внешнего генератора, и эти же 50МГц нужно подать на вход REF_CLK процессора. ТСа смутило то, что процессор вроде как должен работать внутри на этих 50МГц, а это не так, согласованием частот занимается контроллер Ethernet, процессор может работать на любой удобной частоте.
vlad_new
Цитата
Ткните меня носом в функцию удвоения HSE для вывода на MCO, в упор не вижу такого. Поделить можно, это да.

А с чего Вы решили, что надо умножать. Там делить надо либо на 2 либо на 4.
На счет дерганья в F2 - это правильное замечание. Пусть автор F4 ставит. Хотя, как я уже писал и на F2 все работает, даже если там фронт и подергивается. Видимо в phy модеме все равно частота делится и ему начихать на это дрожание. На осциллоскопе выглядело все очень стабильным и без дрожания. Правда я уменьшал полосу лап до 50 мгц, иначе модем не всегда запускался, хотя у меня дешевый реалтек стоит, а не депешка.
Flexz
Цитата(vlad_new @ May 25 2013, 04:13) *
А с чего Вы решили, что надо умножать. Там делить надо либо на 2 либо на 4.

Потому что для DP83848 нужно 50МГц на вход.
Вы что-то знаете, чего не знаю я, но говорить явно нехотите. Можете все-таки раскроете тайну?
Golikov A.
чего то я не понимаю
при общении мак контролера и фи клок 50 мегогерц генериться в одну сторону фи, в другую сторону контроллером мак. При этом клок должен быть синхронен со всякими дерганьями ножек, не уверен но вроде бы это надо чтобы ФИ отличало интерфейс по которому в него долбят. Неужели при таком раскладе 50 МГц можно сгенерить просто ножкой проца, а не специальной ножкой мак контроллера?

у меня вообще клок идет с ФИ в проц, правда у меня марвел...
Flexz
А почему нет? Типовая схема включения DP-шки - 50МГц генератор заведенный как на вход RMII_REF_CLK проца, так и на тактовый вход DP-шки. RMII интерфейс процессора работает в своем частотном домене (этом самом 50МГц), в нем же работает RMII интерфейс PHY. Связь с частотынм доменом AHB (на который накладывается только одно ограничение - не менее 25МГц) и проца в целом - забота MAC, где-то внутри него должны быть FIFO для пересечения разных частотных доменов, аналогично внутри PHY.
При таком раскладе нет разницы, берутся эти 50МГц с генератора или с ножки процессора.

С процессора 50МГц можно сформировать как я писал выше - используя для HSE кврац кратный 1МГц и задействовав вторую PLL. Видимо можно как-то еще, оттолкнувшись именно от 25МГц кварца, как пишет vlad_new, но детали от не раскрывает sm.gif
vlad_new
Цитата
Видимо можно как-то еще, оттолкнувшись именно от 25МГц кварца, как пишет vlad_new, но детали от не раскрывает

А я то тут причем. Вопрос был быть или не быть! Ответ: - пациен скорее жив, чем мертв. Про подробный диагноз пациент не спрашивал. sm.gif
Да и все давно нарисовано. Берем схему кейловского демо борда с PHY и смотрим как там все тактируется. Там можно выбирать варианты тактирования.
Flexz
Цитата(vlad_new @ May 27 2013, 00:52) *
А я то тут причем. Вопрос был быть или не быть! Ответ: - пациен скорее жив, чем мертв. Про подробный диагноз пациент не спрашивал. sm.gif
Да и все давно нарисовано. Берем схему кейловского демо борда с PHY и смотрим как там все тактируется. Там можно выбирать варианты тактирования.
Тот пациент ответ давно получил. Теперь я - пациент, и вот уже который день топаю ногами и требуют подробный диагноз sm.gif
В кейловской плате PHY тактируется с внешнего генератора 50МГц - никакого выбора нет. На STшной плате действительно можно выбрать MCO как источник, но там подается с MCO только 25MHz для MII. Для RMII написано буквально следующее:
Цитата
RMII mode configuration(*)
(*) User have to provide the 50 MHz clock by soldering a 50 MHz oscillator (ref SM7745HEV-50.0M or
equivalent) on the U3 footprint located under CN3 and also removing jumper on JP5. This oscillator
is not provided with the board.

Мне действительно очень интересно узнать, как можно удовлетворить потребность PHY в 50 мегагерцах не задействуя ни доп. генератор, ни вторую PLL.
aoreh
Цитата(Flexz @ May 27 2013, 09:41) *
Мне действительно очень интересно узнать, как можно удовлетворить потребность PHY в 50 мегагерцах не задействуя ни доп. генератор, ни вторую PLL.

на всякий случай повторюсь... можно взять RMII PHY с PLL внутри, 25 на входе (пользую ksz8031, дешевый, доступный, современный), он умножает и дает 50 для RMII
Golikov A.
я так понимаю у человека уже есть плата с уже запаянным ФИ, тогда остается следовать мануалу, и запаять 50 МГц резонатор-генератор,
vlad_new
На лапе точно можно получить 50 мгц - это я проверял. И то, что все равно везде ставят отдельные генераторы это я в курсе. Сам удивляюсь зачем. Могу только предположить, что 107 просто мог не тянуть, а 207 из за ерраты, а 407 тогда еще не было. Мне на днях привезут плату с депешкой и с 407. Вот и посмотрим что получится в RMII без внешнего генератора. Самому интересно. Хотя наверняка кто нибудь это уже пробывал сделать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.