stm32f107+IP101GR 接收不到数据
本帖最后由 zzccww 于 2018-2-26 10:49 编辑我用的stm32cubemx生成的代码,PHY已设置好,可是怎么都PING不通,轮询接收不到数据
PHY的寄存器操作正常,用的RMII,MCO输出正常,请大侠帮忙看看!
端口配置如下:
/* USER CODE BEGIN ETH_MspInit 0 */
/* USER CODE END ETH_MspInit 0 */
/* Enable Peripheral clock */
__HAL_RCC_ETH_CLK_ENABLE();
/**ETH GPIO Configuration
PC1 ------> ETH_MDC
PA1 ------> ETH_REF_CLK
PA2 ------> ETH_MDIO
PA7 ------> ETH_CRS_DV
PC4 ------> ETH_RXD0
PC5 ------> ETH_RXD1
PB11 ------> ETH_TX_EN
PB12 ------> ETH_TXD0
PB13 ------> ETH_TXD1
*/
GPIO_InitStruct.Pin = GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* USER CODE BEGIN ETH_MspInit 1 */
main函数
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_LWIP_Init();
MX_USART1_UART_Init();
/* Initialize interrupts */
MX_NVIC_Init();
/* USER CODE BEGIN 2 */
udp_echoserver_init();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
MX_LWIP_Process();
}
/* USER CODE END 3 */
}
toofree 发表于 2018-2-26 12:22
图1刚算了一下,50M波特率。
你用100M示波器抓到这个波形的话,已经算很好了。实际的波形比示波器抓到的要 ...
已上传附件,请帮忙看看,谢谢!
两块钱的PHY芯片好用吗:) 楼主你的图片上传失败了,可以看看这边如何正确上传(这样大家才能帮上忙):
https://www.stmcu.org.cn/module/forum/thread-612788-1-1.html 哪位大侠帮忙看看,谢谢!:'( RX0在什么地方测量的,是在MCU数字信号端吗?
如果是的话,那么信号质量好差。示波器多少带宽的,建议200M以上带宽,至少不要低于100M toofree 发表于 2018-2-26 11:33
RX0在什么地方测量的,是在MCU数字信号端吗?
如果是的话,那么信号质量好差。示波器多少带宽的,建议200M ...
在MCU端测量的,示波器带宽为100MHz,这种质量的信号,STM32能解析出来吗? 本帖最后由 toofree 于 2018-2-26 12:29 编辑
zzccww 发表于 2018-2-26 11:48
在MCU端测量的,示波器带宽为100MHz,这种质量的信号,STM32能解析出来吗?
图1刚算了一下,50M波特率。
你用100M示波器抓到这个波形的话,已经算很好了。实际的波形比示波器抓到的要好,STM32应该能识别。
把你stm32cubemx的配置文件(.ioc文件)发个上来
我用的stm32cubemx生成的代码,PHY已设置好,可是怎么都PING不通,轮询接收不到数据
PHY的寄存器操作正常,用的RMII,MCO输出正常,请大侠帮忙看看!
PHY的初始化参数是否设置好?IP101GR 的几个重要参数设置要在Lwip中配置好。
特别是中断寄存器地址。不能ping多半是寄存器地址没在Lwip中配置好。 wolfgang2015 发表于 2018-2-26 13:13
我用的stm32cubemx生成的代码,PHY已设置好,可是怎么都PING不通,轮询接收不到数据
PHY的寄存器操作正常, ...
附图为PHY的配置