Jump to content

    

Один STM32 и несколько Ethernet PHY

Здравствуйте!smile.gif

Кто-нибудь может пояснить, каким образом STM32F407 может поддерживать до 32 микросхем Ethernet PHY (например, LAN8720A)? Насколько я понял, по SMI передается адрес PHY и адрес регистра в этом PHY, но здесь более менее понятно - это последовательный интерфейс (похож на I2C) и к нему можно подключить несколько микросхем. А вот как быть с MII/RMII - он же параллельный. Или предполагается, что микросхем PHY может быть до 32-х, но работать они будут по очереди (выбрал микросхему, что-то сделал, перешел на следующую). По этой теме вообще информации мало. MAC один, а PHY до 32-х.confused.gif Может, кто хотя бы с двумя работал?

Вот и текст из ST-шного драйвера

  * @brief  Write to a PHY register
  * @param PHYAddress: PHY device address, is the index . 
  *   This parameter can be one of the following values: 0,..,31
  * @param PHYReg: PHY register address, is the index of one of the 32 PHY register. 
  *   This parameter can be one of the following values: 
  *     @arg PHY_BCR    : Transceiver Control Register  
  *     @arg More PHY register could be written depending on the used PHY
  * @param  PHYValue: the value to write
  * @retval ETH_ERROR: in case of timeout
  *         ETH_SUCCESS: for correct write
  */
uint32_t ETH_WritePHYRegister(uint16_t PHYAddress, uint16_t PHYReg, uint16_t PHYValue)

Share this post


Link to post
Share on other sites
1 hour ago, VladislavS said:

Никак. Один MAC - один PHY. 

А почему тогда в драйвере есть функция, которая позволяет по SMI записывать данные аж в 32 PHY? 

И в Reference Manual есть описание SMI frame format как раз для функции из драйвера? Получается, что из RM0090 следует, что можно подключить до 32-х PHY?

Гуглились реплики, что по MII можно подключить несколько PHY, а по RMII нельзя.

 

SMI frame format.png

Share this post


Link to post
Share on other sites
14 minutes ago, Pridnya said:

Гуглились реплики, что по MII можно подключить несколько PHY, а по RMII нельзя.

Можно еще не такое нагуглить :)

 

15 minutes ago, Pridnya said:

А почему тогда в драйвере есть функция, которая позволяет по SMI записывать данные аж в 32 PHY? 

Потому что единственный PHY может иметь произвольный адрес.

Share this post


Link to post
Share on other sites

Что вы от нас хотите? Чтобы мы разрешили подключить несколько PHY к одному MAC? Да я в принципе не против. Думаю, остальные тоже не будут сильно возражать. Подключайте. Результаты доложите.

Share this post


Link to post
Share on other sites
55 minutes ago, Pridnya said:

А почему тогда в драйвере есть функция, которая позволяет по SMI записывать данные аж в 32 PHY? 

Потому что в теории возможно (а на практике часто применяется) использование одной шины MDIO на несколько MAC

Share this post


Link to post
Share on other sites
1 hour ago, VladislavS said:

Что вы от нас хотите? Чтобы мы разрешили подключить несколько PHY к одному MAC? Да я в принципе не против. Думаю, остальные тоже не будут сильно возражать. Подключайте. Результаты доложите.

Меня интересует, для чего может использоваться такой функционал в STM32? Адрес у PHY может быть в диапазоне от 0 до 31, он уникальный, этот же уникальный адрес используется в стеке LwIP.

Жду ответа от того, кто знает больше, чем большинство. :)

 

1 hour ago, aaarrr said:

Можно еще не такое нагуглить :)

 

Потому что единственный PHY может иметь произвольный адрес.

Вот на комьюнити человек спрашивал.

https://community.st.com/s/question/0D50X00009XkgEDSAZ/stm32f4-how-to-support-two-network-interface

 

Share this post


Link to post
Share on other sites
1 минуту назад, Pridnya сказал:

для чего может использоваться такой функционал в STM32?

Интерфейс MDIO предусматривает адресацию и соответственно она реализована в STM32.

Share this post


Link to post
Share on other sites
1 hour ago, Pridnya said:

Меня интересует, для чего может использоваться такой функционал в STM32? Адрес у PHY может быть в диапазоне от 0 до 31, он уникальный, этот же уникальный адрес используется в стеке LwIP.

например чтобы подключить что-нибудь вроде KSZ8895

Share this post


Link to post
Share on other sites
3 minutes ago, _pv said:

например чтобы подключить что-нибудь вроде KSZ8895

Спасибо! Теперь понятно.

Share this post


Link to post
Share on other sites
4 часа назад, VladislavS сказал:

Никак. Один MAC - один PHY. 

Верно! Просто дело в том, что свитч он жутко тупой. Пакет приходит и рассылается по всем направлениям. Если у конкретного порта в таблице адресов есть адрес назначения, указанный в пакете, то этот пакет проходит в порт и отправляется наружу. И более никакого "ума", ну так грубо. Конечно, там есть много еще чего, сделанного только для пересылки пакетов, но свитч не умеет управлять PHY. И вот для более гибкого управления PHY как раз и ставят внешний по отношению к свитчу процессор. И он один успевает обслуживать все PHY. 

Но можно даже больше сказать. Сам свитч - чисто цифровое устройство. А значит для него нужна технология, где на первом месте скорость пересылки данных. А на утечки между линиями передачи - наплевать. А вот PHY - совсем другое дело. В нем есть аналоговые схемы, а значит на первом месте - минимум утечек, иначе не сделать усилители. И, соответственно, в нем бОльшие расстояния между проводниками. Поэтому совсем другие проектные нормы и технологии...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now