Jump to content
    

YT8512H Щупали?

On 5/11/2023 at 10:02 PM, makc said:

Разберёмся.

Благодарю! Хотелось бы, чтоб файл был восстановлен!

Share this post


Link to post
Share on other sites

10 часов назад, S17 сказал:

Благодарю! Хотелось бы, чтоб файл был восстановлен!

/pub/DOC/Datasheets/Motorcomm

Share this post


Link to post
Share on other sites

On 5/17/2023 at 8:21 AM, makc said:

/pub/DOC/Datasheets/Motorcomm

Спасибо!

Share this post


Link to post
Share on other sites

В 22.03.2023 в 17:47, Hevmal сказал:

Запустил устройство на данном чипе. Контроллер STM32F407. Базовый проект - эхо чипа DP83848.

Есть несколько доработок относительно проекта на DP83848.

1. Регистры PHY_MICR и PHY_MISR имеют другие адреса

//#define PHY_MICR                        ((uint16_t)0x11U)    /*!< MII Interrupt Control Register                  */
//#define PHY_MISR                        ((uint16_t)0x12U)    /*!< MII Interrupt Status and Misc. Control Register */
#define PHY_MICR                        ((uint16_t)0x10U)    /*!< MII Interrupt Control Register                  */
#define PHY_MISR                        ((uint16_t)0x11U)    /*!< MII Interrupt Status and Misc. Control Register */
 

2. В файле xxx_hal_eth.c необходимо изменить проверку статуса скорости

    /* Configure the MAC with the speed fixed by the auto-negotiation process */
    if((phyreg & PHY_SPEED_STATUS) == PHY_SPEED_STATUS)
    {  
      /* Set Ethernet speed to 10M following the auto-negotiation */
      //(heth->Init).Speed = ETH_SPEED_10M;
      (heth->Init).Speed = ETH_SPEED_100M;
    }
    else
    {   
      /* Set Ethernet speed to 100M following the auto-negotiation */ 
      //(heth->Init).Speed = ETH_SPEED_100M;
      (heth->Init).Speed = ETH_SPEED_10M;
    }

    HAL_Delay(PHY_RESET_DELAY);
 

3. Нужно учесть что адрес чипа YT8512H определяется подтягиванием входов LED0 и LED1. Чтобы адрес был как у DP83848 (1ый) необходимо LED1 через светодиод на землю садить (светодиод будет светиться когда выход высокий), а LED0 к питанию (светодиод будет светиться когда выход низкий). Либо адрес чипа в проекте поменять относительно заданного светодиодами.

 

yt8512h.jpg

ping.jpg



Работает Auto-MDIX ?

Share this post


Link to post
Share on other sites

3 hours ago, mitya1698 said:

Этим еще токозадающий резистор не нужен и кондеры к кварцу

Да, хитрый резистор не нужен. Но место я бы оставил и под него и под кондёры.

Share this post


Link to post
Share on other sites

В 15.06.2023 в 20:51, Рашид сказал:



Работает Auto-MDIX ?

Собрал плату на YT8512H, проект сгенерирован через CubeMX, подправил определение скорости как написано выше, пинг работает.

Auto-MDIX работает.

Для подключения используется RMII интерфейс.

Не работает скорость 10 Мбит, как я понимаю в данном физическом уровне не совсем стандартно реализован этот режим. Цитата из даташита:

Цитата

For 100M application, REF_CLK is 50MHz; for 10M application, REF_CLK is still 50MHz, data will be duplicated for 10 times in 20ns cycles. YT8512 supports two types of connection method;

Надо что-то свое городить если нужны 10 МБит.

 

p/s И кстати если использовать новую версию библиотек в CubeMX, то там все по-другому уже реализовано. 

10 минут назад, ReZIStoR сказал:

Собрал плату на YT8512H, проект сгенерирован через CubeMX, подправил определение скорости как написано выше, пинг работает.

Auto-MDIX работает.

Для подключения используется RMII интерфейс.

Не работает скорость 10 Мбит, как я понимаю в данном физическом уровне не совсем стандартно реализован этот режим. Цитата из даташита:

Надо что-то свое городить если нужны 10 МБит.

 

p/s И кстати если использовать новую версию библиотек в CubeMX, то там все по-другому уже реализовано. 

Кажется разобрался )) у меня проект под LAN8742A, а там режим 10 МБит по другому, а у DP83848 все как надо судя по даташиту.))

Share this post


Link to post
Share on other sites

В общем чтобы все работало во всех режимах (без использования прерываний от PHY), требуется минимум три регистра:

#define PHY_BCR                         ((uint16_t)0x00U)    /*!< Transceiver Basic Control Register   */
#define PHY_BSR                         ((uint16_t)0x01U)    /*!< Transceiver Basic Status Register    */

#define PHY_SR                          ((uint16_t)0x11U)    /*!< PHY status register Offset                      */

Эти битовые маски остаются без изменений:

#define PHY_RESET                       ((uint16_t)0x8000U)  /*!< PHY Reset */
#define PHY_LOOPBACK                    ((uint16_t)0x4000U)  /*!< Select loop-back mode */
#define PHY_FULLDUPLEX_100M             ((uint16_t)0x2100U)  /*!< Set the full-duplex mode at 100 Mb/s */
#define PHY_HALFDUPLEX_100M             ((uint16_t)0x2000U)  /*!< Set the half-duplex mode at 100 Mb/s */
#define PHY_FULLDUPLEX_10M              ((uint16_t)0x0100U)  /*!< Set the full-duplex mode at 10 Mb/s  */
#define PHY_HALFDUPLEX_10M              ((uint16_t)0x0000U)  /*!< Set the half-duplex mode at 10 Mb/s  */
#define PHY_AUTONEGOTIATION             ((uint16_t)0x1000U)  /*!< Enable auto-negotiation function     */
#define PHY_RESTART_AUTONEGOTIATION     ((uint16_t)0x0200U)  /*!< Restart auto-negotiation function    */
#define PHY_POWERDOWN                   ((uint16_t)0x0800U)  /*!< Select the power down mode           */
#define PHY_ISOLATE                     ((uint16_t)0x0400U)  /*!< Isolate PHY from MII                 */

#define PHY_AUTONEGO_COMPLETE           ((uint16_t)0x0020U)  /*!< Auto-Negotiation process completed   */
#define PHY_LINKED_STATUS               ((uint16_t)0x0004U)  /*!< Valid link established               */
#define PHY_JABBER_DETECTION            ((uint16_t)0x0002U)  /*!< Jabber condition detected            */

А эти надо подправить:

#define PHY_SPEED_STATUS                ((uint16_t)0x4000U)  /*!< PHY Speed mask                                  */
#define PHY_DUPLEX_STATUS               ((uint16_t)0x2000U)  /*!< PHY Duplex mask                                 */

Все остальное можно закоментить. 

Определение скорости (10Мбит и 100 Мбит) надо поменять местами не только в файле stm32fxx_hal_eth.c, но и в ethernetif.c, иначе после переподключения кабеля не будет связи. 

Edited by ReZIStoR

Share this post


Link to post
Share on other sites

Ребят подскажите, если я подключаю PHY YT8512 без инициализации со стороны STM32( фактически нет прошивки) линк должен подниматься?

Именно линк?

 

Share this post


Link to post
Share on other sites

On 9/29/2023 at 3:57 AM, ReZIStoR said:

В общем чтобы все работало во всех режимах (без использования прерываний от PHY), требуется минимум три регистра:

#define PHY_BCR                         ((uint16_t)0x00U)    /*!< Transceiver Basic Control Register   */
#define PHY_BSR                         ((uint16_t)0x01U)    /*!< Transceiver Basic Status Register    */

#define PHY_SR                          ((uint16_t)0x11U)    /*!< PHY status register Offset                      */

Спасибо за ваши настройки, только с ними у меня заработало.

Share this post


Link to post
Share on other sites

Подскажите как побороть проблему, если витая пара не подключена при включении МК, то если потом подключить витую пару ничего не работает. Но если витая пара подключена при включении МК, то работает и даже если переподключить витую пару.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...