自己画的板子,原理图的以太网部分完全照搬探索者的电路。 用网络调试助手可以正常的收发数据。但是现在发现stm32读不到PHY的寄存器内容,求助大家这是怎么回事
代码是用cubemx生成后修改的。目前以太网可以ping通,可以正常收发数据,但是单片机读8720的寄存器得到的内容如下:
0x00=0
0x01=ffff
0x02=0
0x03=ffff
0x04=0
0x05=ffff
0x06=0
17=ffff
18=0
0x09=ffff
0x1f=ffff
以下是相关代码
[mw_shl_code=applescript,true]void StartDefaultTask(void const * argument)
{
/* init code for LWIP */
MX_LWIP_Init();
/* USER CODE BEGIN 5 */
uint32_t data;
osThreadDef(tcp_client_thread, tcp_client_thread, osPriorityNormal, 0, 128);
defaultTaskHandle = osThreadCreate(osThread(tcp_client_thread), NULL);
/* Infinite loop */
for(;;)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_10);
HAL_ETH_ReadPHYRegister(&heth,0x00,&data);
printf("0x00=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,0x01,&data);
printf("0x01=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,0x02,&data);
printf("0x02=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,0x03,&data);
printf("0x03=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,0x04,&data);
printf("0x04=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,0x05,&data);
printf("0x05=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,0x06,&data);
printf("0x06=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,17,&data);
printf("17=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,18,&data);
printf("18=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,0x09,&data);
printf("0x09=%x
",data);
osDelay(200);
HAL_ETH_ReadPHYRegister(&heth,0x1f,&data);
printf("0x1f=%x
",data);
osDelay(3000);
} /* USER CODE END 5 */
}
[/mw_shl_code] |