这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » M487开发板接入网线到以太网接口,过了一段时间以太网的灯灭了,pingIP也不

共2条 1/1 1 跳转至

M487开发板接入网线到以太网接口,过了一段时间以太网的灯灭了,pingIP也不成功的原因?

工程师
2024-11-05 21:49:33     打赏

使用的是M487开发板,把官网给的EMAC_TxRx例程烧录,然后接入网线到以太网接口,以太网旁边的灯是亮的,但过了一段时间以太网的灯灭了,ping IP也不成功,我连代码都没修改,刚开始也能获取到IP,这不懂是啥原因了,是代码问题还是以太网的接口有问题
void EMAC_TX_IRQHandler(void)
{
    // Clean up Tx resource occupied by previous sent packet(s)
    EMAC_SendPktDone();
}

/**
  * @brief  EMAC Rx interrupt handler.
  * @param  None
  * @return None
  */
void EMAC_RX_IRQHandler(void)
{
    int i=0;
    while(1)
    {
        printf("u32PktLen =%drn",u32PktLen);
        // Check if there's any packets available
        if(EMAC_RecvPkt(auPkt,  u32PktLen) == 0)
            break;
        // Process receive packet
        process_rx_packet(auPkt, u32PktLen);
        for(i=0;iMODE  = ~(GPIO_MODE_MODE2_Msk | GPIO_MODE_MODE3_Msk);

    /* Enable External XTAL (4~24 MHz) */
    CLK_EnableXtalRC(CLK_PWRCTL_HXTEN_Msk);

    /* Waiting for 12MHz clock ready */
    CLK_WaitClockReady( CLK_STATUS_HXTSTB_Msk);

    /* Switch HCLK clock source to HXT */
    CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HXT,CLK_CLKDIV0_HCLK(1));

    /* Set core clock as PLL_CLOCK from PLL */
    CLK_SetCoreClock(FREQ_192MHZ);

    /* Set both PCLK0 and PCLK1 as HCLK/2 */
    CLK->PCLKDIV = CLK_PCLKDIV_APB0DIV_DIV2 | CLK_PCLKDIV_APB1DIV_DIV2;

    /* Enable IP clock */
    CLK_EnableModuleClock(UART0_MODULE);
    CLK_EnableModuleClock(EMAC_MODULE);

    /* Select IP clock source */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HXT, CLK_CLKDIV0_UART0(1));

    // Configure MDC clock rate to HCLK / (127 + 1) = 1.5 MHz if system is running at 192 MHz
    CLK_SetModuleClock(EMAC_MODULE, 0, CLK_CLKDIV3_EMAC(127));

    /* Update System Core Clock */
    /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock. */
    SystemCoreClockUpdate();

    /* Set GPB multi-function pins for UART0 RXD and TXD */
    SYS->GPB_MFPH  = ~(SYS_GPB_MFPH_PB12MFP_Msk | SYS_GPB_MFPH_PB13MFP_Msk);
    SYS->GPB_MFPH |= (SYS_GPB_MFPH_PB12MFP_UART0_RXD | SYS_GPB_MFPH_PB13MFP_UART0_TXD);
    // Configure RMII pins
    SYS->GPA_MFPL |= SYS_GPA_MFPL_PA6MFP_EMAC_RMII_RXERR | SYS_GPA_MFPL_PA7MFP_EMAC_RMII_CRSDV;
    SYS->GPC_MFPL |= SYS_GPC_MFPL_PC6MFP_EMAC_RMII_RXD1 | SYS_GPC_MFPL_PC7MFP_EMAC_RMII_RXD0;
    SYS->GPC_MFPH |= SYS_GPC_MFPH_PC8MFP_EMAC_RMII_REFCLK;
    SYS->GPE_MFPH |= SYS_GPE_MFPH_PE8MFP_EMAC_RMII_MDC |
                     SYS_GPE_MFPH_PE9MFP_EMAC_RMII_MDIO |
                     SYS_GPE_MFPH_PE10MFP_EMAC_RMII_TXD0 |
                     SYS_GPE_MFPH_PE11MFP_EMAC_RMII_TXD1 |
                     SYS_GPE_MFPH_PE12MFP_EMAC_RMII_TXEN;

    // Enable high slew rate on all RMII TX output pins
    PE->SLEWCTL = (GPIO_SLEWCTL_HIGH << GPIO_SLEWCTL_HSREN10_Pos) |
                  (GPIO_SLEWCTL_HIGH << GPIO_SLEWCTL_HSREN11_Pos) |
                  (GPIO_SLEWCTL_HIGH << GPIO_SLEWCTL_HSREN12_Pos);

    /* Lock protected registers */
    SYS_LockReg();

}


// This sample application can response to ICMP ECHO packets (ping)
// IP address is configure with DHCP, but if a lease cannot be acquired, a static IP will be used.
int main(void)
{

    SYS_Init();
    UART_Open(UART0, 115200);
    Led_init();
    key_init();
    TIM_init();

    // Select RMII interface by default
    EMAC_Open(g_au8MacAddr);

    // Init phy
    EMAC_PhyInit();

    NVIC_EnableIRQ(EMAC_TX_IRQn);
    NVIC_EnableIRQ(EMAC_RX_IRQn);

    EMAC_ENABLE_RX();
    EMAC_ENABLE_TX();
    printf("emaec enable rx dfksa rn");
//    if (dhcp_start() < 0)
//    {
//        // Cannot get a DHCP lease, use static IP.
//        printf("DHCP failed, use static IP 192.168.10.10n");
//        g_au8IpAddr[0] = 0xC0;
//        g_au8IpAddr[1] = 0xA8;
//        g_au8IpAddr[2] = 0x0A;
//        g_au8IpAddr[3] = 0x0A;
//    }
    if (dhcp_start() > 0)
    {
        printf(" IP is %d.%d.%d.%dn",g_au8IpAddr[0],g_au8IpAddr[1],g_au8IpAddr[2],g_au8IpAddr[3]);
    }
    while(1);

}




关键词: 以太网     开发板    

助工
2024-11-05 21:50:01     打赏
2楼

1. 物理连接问题:检查网线是否插好,并确保连接的网络设备(例如交换机或路由器)处于正常工作状态。还可以尝试更换网线或连接到其他网络设备以排除故障。

2. IP地址冲突:检查开发板和网络中的其他设备是否具有相同的IP地址。确保每个设备都具有唯一的IP地址。

3. 防火墙设置:检查网络设备或电脑上的防火墙设置,确保没有阻止对该IP地址的ping请求。

4. 软件配置问题:检查代码中的配置参数是否正确。特别是,检查代码中是否正确设置了以太网接口的参数,例如IP地址、子网掩码和网关地址。

5. 资源竞争:确保代码中的资源(例如内存或处理器资源)是否正确分配和释放。如果资源不足,可能会导致网络连接失败。

6. 驱动程序问题:检查官方提供的EMAC_TxRx例程是否存在已知的问题或错误。尝试查找并修复任何已知的问题,或尝试使用其他可靠的驱动程序。

7. 硬件故障:如果排除了上述所有可能的问题,那么可能存在硬件故障。检查开发板的以太网接口是否存在损坏或其他故障,并考虑更换开发板或与制造商联系以获取支持。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]