打印

AT32F407VGT6网络延迟问题

[复制链接]
1114|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
scaler1224|  楼主 | 2022-6-26 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大佬,请教下,我在用AT32F407VGT6做IP广播产品,产品在自己的网络环境测试正常,局域网PING延迟都小于1毫秒。到一些客户的网络环境之后产品上电可能前一两小时PING延迟正常,后面就有上百毫秒延迟,一直解决不了这个问题

使用特权

评论回复

相关帖子

沙发
scaler1224|  楼主 | 2022-6-26 17:15 | 只看该作者

AT32F407VGT6网络延迟问题

系统采用FREERTOS8.2.3+LWIP2.0.2
以太网PHY用RTL8201F
初始化:
#ifdef RTL8201F       
        RegValue = ETH_ReadPHYRegister(PHYAddress, 2);  //read ID 0x001C
        ETH_WritePHYRegister(PHYAddress,31, 7); //�л���page7
        ETH_WritePHYRegister(PHYAddress,16, 0x0ffB); //RMII  50M���ģʽ��CRS_DV
        ETH_WritePHYRegister(PHYAddress,19, 0xf014); //enable linkstatus intterupt
#endif
速度设置:
#ifdef RTL8201F
        if ((RegValue & PHY_ANLPAR_100TXFD) || (RegValue & PHY_ANLPAR_10TXFD)){
                ETH_InitStruct->ETH_Mode = ETH_Mode_FullDuplex;
        }else{
                ETH_InitStruct->ETH_Mode = ETH_Mode_HalfDuplex;
        }

        if (!((RegValue & PHY_ANLPAR_100TX) || (RegValue & PHY_ANLPAR_100TXFD)))        {
                ETH_InitStruct->ETH_Speed = ETH_Speed_10M;
        }else{
                ETH_InitStruct->ETH_Speed = ETH_Speed_100M;
        }
#endif



收数据信号量初始化:
    if (g_rx_semaphore == NULL){
        g_rx_semaphore = xSemaphoreCreateCounting(200,0);                                       
    }

以太网收数据:
void ethernetif_input( void * pvParameters )
{
       
    struct pbuf *p;  
    for( ;; ){   
           if (xSemaphoreTake( g_rx_semaphore, LOWLEVEL_INPUT_WAITING_TIME)==pdTRUE)
            {       
              p = low_level_input( low_netif );
              if (ERR_OK != low_netif->input( p, low_netif))
              {             
                pbuf_free(p);
                p=NULL;
              }
            }
    }

}
EMAC中断:
void ETH_IRQHandler(void)
{       
    portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
    /* frame received */
    if(SET == ETH_GetDMAITStatus(ETH_DMA_INT_R)){
        /* give the semaphore to wakeup LwIP task */
        xSemaphoreGiveFromISR(g_rx_semaphore, &xHigherPriorityTaskWoken);
    }
    /* clear the enet DMA Rx interrupt pending bits */
    ETH_DMAClearITPendingBit(ETH_DMA_INT_R);
    ETH_DMAClearITPendingBit(ETH_DMA_INT_NIS);

    /* switch tasks if necessary */
    if(pdFALSE != xHigherPriorityTaskWoken){
        portEND_SWITCHING_ISR(xHigherPriorityTaskWoken);
    }
}

使用特权

评论回复
板凳
xch| | 2022-6-27 12:34 | 只看该作者
客户用交换机一样?其他挂的设备也一样?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝