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

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

Разберёмся.

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

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


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

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

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

/pub/DOC/Datasheets/Motorcomm

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


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

В 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 ?

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


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

Я ещё не щупал, в процессе. Но зато нашёл более дешёвые аналоги:

https://mt-system.ru/company/news/byudzhetnye_mikroskhemy_phy_ot_kompanii_wch/

По ногам совместимы вроде.

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


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

3 hours ago, mitya1698 said:

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

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

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


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

В 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 все как надо судя по даташиту.))

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


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

В общем чтобы все работало во всех режимах (без использования прерываний от 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, иначе после переподключения кабеля не будет связи. 

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

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


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

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

Именно линк?

 

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


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

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

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

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

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

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

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

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

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

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