Доброго времени суток!
Пишу проект под stm32f407vet6 пробую подключать ethernet, собираю пробный проект, в котором только LWIP + диод, чтобы пропинговать, но после прошивки плата сама не стартует. Только из дебага и с 3го нажатия RUN.
На плате Nucleo stm32f429 все работает и стартует(там встроенный phy).
Код программы привожу. Пингуется через раз, один-два пинга из четырех.
Пробовал разные версии куба.
Пробовал ставить оптимизацию 0
IP статический, в системе и в программе определен верно.
#include "main.h"
#include "lwip.h"
extern struct netif gnetif ;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_LWIP_Init();
while (1)
{
ethernetif_input(&gnetif);
sys_check_timeouts();
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);
HAL_Delay(10);
}
}
Вопросы: почему плата не стартует сама, как сделать чтобы стартовала?
Если по более конкретным вопросам - как происходит отправка данных по eth на самом низком уровне? Чтобы вопрос был более понятен:
Для другой физике, в её драйвере есть функция
1
enc28j60_send_packet((uint8_t *) uip_buf, uip_len);
А для моей dp83848 такой функции нет.
Как правильно реализовывать отправку кадров eth с ней? Как правильно инициализировать?
Хочу попытаться собрать на более простом uip, если кто знает, или есть примеры, напишите, пожалуйста.