硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3866|回复: 13
收起左侧

[RL-RTX] STM32+RTX+LWIP+LAN8720A,网络灯闪烁,PING不通

[复制链接]

2

主题

5

回帖

11

积分

新手上路

积分
11
发表于 2021-11-7 16:17:32 | 显示全部楼层 |阅读模式
使用STM32F107+LAN8720A芯片,使用RTX5操作系统,应用LWIP,代码移植完成后,网口灯在闪烁,但是PING不通,不知道是什么原因?
移植资料主要来源于《安富莱_STM32-V5开发板_LwIP V2.X网络教程(V0.1)》,但是由于文档中使用的PHY芯片为DM9162,而目前我使用的PHY芯片为LAN8720A。
根据移植资料:
首先通过STM32cubeMX创建一个基础工程,然后在生成的工程中通过配置RTX5操作系统与LWIP,由于LAN8720A在配置中提供相关驱动接口代码,因此代码移植完成后直接添加如下代码:

HAL_GPIO_WritePin(ETH_NRST_GPIO_Port, ETH_NRST_Pin, GPIO_PIN_RESET);
  osDelay(1000);
  HAL_GPIO_WritePin(ETH_NRST_GPIO_Port, ETH_NRST_Pin, GPIO_PIN_SET);
  osDelay(1000);   
  tcpip_init( NULL, NULL);  
IP4_ADDR(&ipaddr, IP_ADDR0, IP_ADDR1, IP_ADDR2, IP_ADDR3);
IP4_ADDR(&netmask, NETMASK_ADDR0, NETMASK_ADDR1 , NETMASK_ADDR2, NETMASK_ADDR3);
IP4_ADDR(&gw, GW_ADDR0, GW_ADDR1, GW_ADDR2, GW_ADDR3);

  /* 将网络接口添加到netif_list列表 */
        netif_add(&netif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &ethernet_input);

        /*  注册默认网络接口 */
        netif_set_default(&netif);
  netif_is_link_up(&netif);
        netif_set_up(&netif);

for (;;) {ethernetif_poll(&netif);}
下载程序后,发现网口灯闪烁,但是ping不通,想请问一下:KEIL配置中提供LAN8720A,在配置PHY芯片地址后,应该不会在配置修改low_level_init、low_level_output、low_level_input、ethernetif_input等函数了吧?还是需要配置其它的地方呀,谢谢!

1636272868(1).png
1636272946(1).png
1636273003(1).png
回复

使用道具 举报

2

主题

5

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2021-11-7 16:25:11 | 显示全部楼层
在配置上面选择LAN8742A也不行,KEIL都提供这颗芯片的驱动,不是拿来就能使用吗?不明白为什么会出现这种情况 ,本人对于LWIP不是很熟悉。请高手指点基于STM32+RTX+LWIP使用LAN8720A作为PHY芯片需要的配置,谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106436
QQ
发表于 2021-11-8 00:34:36 | 显示全部楼层
试试我这个

分享个修正版RL-TCPnet V7.X和LwIP的LAN8720驱动,符合CMSIS-Driver驱动规范,适用于所有STM32系列(V1.0)
http://www.armbbs.cn/forum.php?m ... 7297&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106436
QQ
发表于 2021-11-8 00:34:45 | 显示全部楼层
试试我这个

分享个修正版RL-TCPnet V7.X和LwIP的LAN8720驱动,符合CMSIS-Driver驱动规范,适用于所有STM32系列(V1.0)
http://www.armbbs.cn/forum.php?m ... 7297&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

6

主题

636

回帖

654

积分

金牌会员

积分
654
QQ
发表于 2021-11-8 14:38:36 来自手机 | 显示全部楼层
都用rtx了,直接全家桶整上啊
回复

使用道具 举报

2

主题

5

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2021-11-8 16:45:42 | 显示全部楼层
eric2013 发表于 2021-11-8 00:34
试试我这个

分享个修正版RL-TCPnet V7.X和LwIP的LAN8720驱动,符合CMSIS-Driver驱动规范,适用于所有STM ...

大哥,,看了你的回复后,也看了链接文档,把LAN8720A的相关驱动换成你提供的调试也是一样的情况,绿灯常亮,黄灯一直闪烁,但是PING不通。使用PHY_LAN8720.c,KEIL配置时自动生成的PHY_LAN8742A.c,另外在PHY_LAN8720.c文件的PowerControl()函数中,存在PHY.bmcr = 0U;

      if (PHY.reg_wr(ETH_PHY_ADDR, REG_BMCR, PHY.bmcr) != ARM_DRIVER_OK) {
        return ARM_DRIVER_ERROR;
      }。这只把PHY配置为10M,半双工。在实际中这个可以屏蔽些代码吧?谢谢。来自一个小白的请教!
回复

使用道具 举报

2

主题

5

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2021-11-8 16:48:26 | 显示全部楼层
yklstudent 发表于 2021-11-8 14:38
都用rtx了,直接全家桶整上啊

RTX的硬件要求资源要小些。就是国内用的人少
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106436
QQ
发表于 2021-11-9 00:50:05 | 显示全部楼层
宋秋波 发表于 2021-11-8 16:45
大哥,,看了你的回复后,也看了链接文档,把LAN8720A的相关驱动换成你提供的调试也是一样的情况,绿灯常 ...

百兆全双工在这个里面呢

static int32_t SetMode (uint32_t mode)
回复

使用道具 举报

2

主题

5

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2021-11-9 08:39:34 | 显示全部楼层
eric2013 发表于 2021-11-9 00:50
百兆全双工在这个里面呢

static int32_t SetMode (uint32_t mode)

哦,明白了,谢谢大哥,昨天后来又继续弄了RTX+LWIP,终于在大哥资料中找到光明之路,能够PING通了,想看看一直PING的效果,结果发现PING了几分钟后,反应时间就变长了,达到了2秒左右,而设备重新上电初期PING时间很快(<1ms),再请问一下,这种情况要从哪方面查找原因,谢谢!
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2022-11-22 23:31:47 | 显示全部楼层
宋秋波 发表于 2021-11-9 08:39
哦,明白了,谢谢大哥,昨天后来又继续弄了RTX+LWIP,终于在大哥资料中找到光明之路,能够PING通了,想看 ...

您好,我最近在使用硬汉哥提供的《V7-2001_LwIP V2.X实验_工程移植模板(FreeRTOS)V1.1》这个固件,替换了PHY部分,也是使用的LAN8720,初始化中可以成功读取PHY的ID等,异常现象基本与你的一致,您是最终修改哪里可以Ping通的,非常期待您的指教~
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106436
QQ
发表于 2022-11-23 16:50:38 | 显示全部楼层
宋秋波 发表于 2021-11-9 08:39
哦,明白了,谢谢大哥,昨天后来又继续弄了RTX+LWIP,终于在大哥资料中找到光明之路,能够PING通了,想看 ...

这个应该时任务优先级的设置问题。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106436
QQ
发表于 2022-11-23 16:51:58 | 显示全部楼层
娟娟吊打升升 发表于 2022-11-22 23:31
您好,我最近在使用硬汉哥提供的《V7-2001_LwIP V2.X实验_工程移植模板(FreeRTOS)V1.1》这个固件,替换 ...

上电后,先复位下载你的PHY芯片,如果时硬件GPIO控制复位,就GPIO复位这个芯片,如果是和MCU一个复位系统,就软件命令复位下载。一般就可以解决了。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2022-12-23 10:14:14 | 显示全部楼层
eric2013 发表于 2022-11-23 16:51
上电后,先复位下载你的PHY芯片,如果时硬件GPIO控制复位,就GPIO复位这个芯片,如果是和MCU一个复位系统 ...

我是硬件复位的,但是我示波器测了一下,发现连接LAN8720的nRST引脚电平拉不高,我测试其他引脚拉高拉低都没问题,是LAN8720的nRST引脚就是拉不到3.3还是其他问题,请硬汉大哥帮忙评估一下
9a3a141d54d282cb461a1c64ba55637.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106436
QQ
发表于 2022-12-24 16:16:14 | 显示全部楼层
娟娟吊打升升 发表于 2022-12-23 10:14
我是硬件复位的,但是我示波器测了一下,发现连接LAN8720的nRST引脚电平拉不高,我测试其他引脚拉高拉低 ...

这不排除硬件有点问题了,焊接确定没问题吧。

可以发送软件复位命令,复位下,也可以的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-20 12:04 , Processed in 0.288873 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表