реклама на сайте
подробности

 
 
> Замена dp83848 на ksz8051RNL в проекте от ST, stm32f407/417
vovanxp
сообщение Oct 22 2014, 07:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 28-10-11
Пользователь №: 68 026



Маленькая проблема переросла в большую.

За основу взял stm32f4 cubemx, сам проект \Projects\STM324xG_EVAL\Applications\LwIP\LwIP_HTTP_Server_Raw\MDK-ARM
С начало подключил dp83848, подключил таким образом как в этой статье http://blog.tkjelectronics.dk/2012/08/ethe...g-external-phy/
все заработало с первого раза. Этот рабочий проект взялся переделывать под физику ksz8051RNL. Интерфейс RMII, ksz8051RNL тактируется кварцом на 25 Мгц.

Подключил ksz8051RNL, перенастроил
1) Закоментировал #define USE_DHCP, прописал IP и маску, шлюз

2) Прописал интерфейс RMII
EthHandle.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII;

3) Поменял адрес физики и регистры
#define DP83848_PHY_ADDRESS 0x00

4)
#define PHY_SR ((uint16_t)0x00)
#define PHY_SPEED_STATUS ((uint16_t)0x2000) /*!< PHY Speed mask 13-й бит */
#define PHY_DUPLEX_STATUS ((uint16_t)0x1000) /*!< PHY Duplex mask 8-й бит */

PHY_BCR и PHY_SR это одно и тоже, просто чтоб код не переписывать, из PHY_SR нам нужно узнать только скорость и режим.

ksz8051RNL запускалась в HALFDUPLEX
После HAL_ETH_Start(&EthHandle); добавил переключение режима
HAL_ETH_WritePHYRegister(&EthHandle, PHY_SR, PHY_DUPLEX_STATUS);

Теперь с регистра что ksz8051RNL работает на FULLDUPLEX и SPEED_100M.

После запуска веб молчит, пинги тоже. Видимо еще что-то нужно поменять чтоб заработало на ksz8051RNL.
На J-45 зеленый светодиод светит постоянно, желтый мигает.
Помогите плз.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vovanxp
сообщение Oct 23 2014, 10:54
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 28-10-11
Пользователь №: 68 026



Запустилась, я ее одолел.
Выставил резисторами strapping pins, 18 и 29 ногу через 1 КОм к земле, 28 я через 4,7 КОм к 3,3 правильно и все запустилось

Из регистров нужны только эти
#define PHY_BCR ((uint16_t)0x00) /*!< Transceiver Basic Control Register */
#define PHY_RESET ((uint16_t)0x8000) /*!< PHY Reset */
#define PHY_AUTONEGOTIATION ((uint16_t)0x1000) /*!< Enable auto-negotiation function */

#define PHY_BSR ((uint16_t)0x01) /*!< Transceiver Basic Status Register */
#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */
#define PHY_LINKED_STATUS ((uint16_t)0x0004) /*!< Valid link established */


#define DP83848_PHY_ADDRESS 0x00

#define PHY_SR ((uint16_t)0x1e)
#define PHY_SPEED_STATUS ((uint16_t)(1 << 0))
#define PHY_DUPLEX_STATUS ((uint16_t)(1 << 2))


Всем большое спасибо за помощь.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 23:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01347 секунд с 7
ELECTRONIX ©2004-2016