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

Одновременная работа USB и Ethernet на STM32F407VG

Добрый день.

 

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

 

Спасибо.

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


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

Для этого ее необходимо тактировать от 50мгц клока и я так понимаю процессор тоже должен его получать, если верить ДШ.

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

 

Единственный вариант, который приходит в голову тактировать от таймера встроенного в процессор.

И как вы собираетесь при частоте таймера, скажем 168 МГц получить ровные 50МГц на выходе?

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


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

Запросто. К примеру для 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 одновременно.

 

 

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


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

При чем тут кварц в 25МГц? В вашем примере входная частота первым делом делится на 25 (параметр PLL_M), дальше все частоты считаются из 1МГц * 240.

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


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

Не понятно что Вы этим хотели сказать. USB 48 мгц есть, В STM есть лапка, которая может программироваться на вывод частоты генератора. Используя кварц в 25 мгц можем запрограммировать ее на 25 или 50 мГц. Как раз под MII или RMII. У меня так все и работает. А про 168Мгц. это Вы придумали. Автор темы про это не писал. Что не так ?

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

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


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

Не понятно что Вы этим хотели сказать. USB 48 мгц есть, В STM есть лапка, которая может программироваться на вывод частоты генератора. Используя кварц в 25 мгц можем запрограммировать ее на 25 или 50 мГц. Как раз под MII или RMII. У меня так все и работает. А про 168Мгц. это Вы придумали. Автор темы про это не писал. Что не так ?

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

 

использую ksz8031, у него RMII, но внутренний умножеитель 25->50

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


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

К примеру для STM32F207 это выглядит так:

Короче кварц в 25 мГц спасёт USB и Ethernet одновременно.

+1

для STM32F107 где-то также при кварце 25 мГц:

PPL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz

PPL1 configuration: PLLCLK = (PLL2 / 5) * 9 = 72 MHz

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


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

А чо нельзя поприличнее PHY поставить и не заморачиваться с тактированием от проца? LAN8720 мы используем например.

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


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

Не понятно что Вы этим хотели сказать. USB 48 мгц есть, В STM есть лапка, которая может программироваться на вывод частоты генератора. Используя кварц в 25 мгц можем запрограммировать ее на 25 или 50 мГц. Как раз под MII или RMII. У меня так все и работает. А про 168Мгц. это Вы придумали. Автор темы про это не писал. Что не так ?

Да, мне тоже не понятно, что вы хотите сказать :) Ткните меня носом в функцию удвоения 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, процессор может работать на любой удобной частоте.

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


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

Ткните меня носом в функцию удвоения HSE для вывода на MCO, в упор не вижу такого. Поделить можно, это да.

А с чего Вы решили, что надо умножать. Там делить надо либо на 2 либо на 4.

На счет дерганья в F2 - это правильное замечание. Пусть автор F4 ставит. Хотя, как я уже писал и на F2 все работает, даже если там фронт и подергивается. Видимо в phy модеме все равно частота делится и ему начихать на это дрожание. На осциллоскопе выглядело все очень стабильным и без дрожания. Правда я уменьшал полосу лап до 50 мгц, иначе модем не всегда запускался, хотя у меня дешевый реалтек стоит, а не депешка.

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


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

А с чего Вы решили, что надо умножать. Там делить надо либо на 2 либо на 4.

Потому что для DP83848 нужно 50МГц на вход.

Вы что-то знаете, чего не знаю я, но говорить явно нехотите. Можете все-таки раскроете тайну?

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


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

чего то я не понимаю

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

 

у меня вообще клок идет с ФИ в проц, правда у меня марвел...

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


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

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

При таком раскладе нет разницы, берутся эти 50МГц с генератора или с ножки процессора.

 

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

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


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

Видимо можно как-то еще, оттолкнувшись именно от 25МГц кварца, как пишет vlad_new, но детали от не раскрывает

А я то тут причем. Вопрос был быть или не быть! Ответ: - пациен скорее жив, чем мертв. Про подробный диагноз пациент не спрашивал. :)

Да и все давно нарисовано. Берем схему кейловского демо борда с PHY и смотрим как там все тактируется. Там можно выбирать варианты тактирования.

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


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

А я то тут причем. Вопрос был быть или не быть! Ответ: - пациен скорее жив, чем мертв. Про подробный диагноз пациент не спрашивал. :)

Да и все давно нарисовано. Берем схему кейловского демо борда с PHY и смотрим как там все тактируется. Там можно выбирать варианты тактирования.

Тот пациент ответ давно получил. Теперь я - пациент, и вот уже который день топаю ногами и требуют подробный диагноз :)

В кейловской плате 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.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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