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

 
 
> Замена 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
Ответов
den_po
сообщение Oct 22 2014, 14:58
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



вроде 8051 и 8031 довольно похожи?
на всякий случай то, как я прикрутил какой-то пример lwip к 8031
Код
#define RMII_MODE
#define PHY_ADDRESS 0 //3
#define PHY_MICR                  0x1B /* MII Interrupt Control Register */
#define PHY_MICR_INT_EN           ((uint16_t)(1<<13)) /* PHY Enable interrupts */
#define PHY_MICR_INT_OE           ((uint16_t)(0)) /* PHY Enable output interrupt events */
#define PHY_MISR                  0x1B /* MII Interrupt Status and Misc. Control Register */
#define PHY_MISR_LINK_INT_EN      ((uint16_t)((1<<8)|(1<<10))) /* Enable Interrupt on change of link status */
#define PHY_LINK_STATUS           ((uint16_t)(1<<0)) /* PHY link status interrupt mask */
#define PHY_SR    ((uint16_t)0x1e)
#define PHY_SPEED_STATUS            ((uint16_t)0x0001)
#define PHY_DUPLEX_STATUS           ((uint16_t)0x0004)
Go to the top of the page
 
+Quote Post



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

 


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


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