硬汉嵌入式论坛

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

[以太网] 请教下大佬们, h743 lwip ping 不通 ?

[复制链接]

684

主题

3511

回帖

5588

积分

论坛元老

积分
5588
发表于 2025-6-2 15:53:58 | 显示全部楼层 |阅读模式
本帖最后由 hpdell 于 2025-6-2 16:04 编辑

请教下大佬们, h743 lwip  ping 不通 ?


相关设置如下:

能够识别到
01.png


h7 hal  库:
02.png

03.png


ip 地址设置
04.png


06.png


07.png

08.png



05.png



11.png





h7-lwip-ico.7z (13.91 MB, 下载次数: 1)


不知道是哪里有问题, 记得以前移植时 比较顺利的, 现在 这次 移植 就不靠谱了呀 ??

另外之前 使用 的 gpio 分配:
01.  这个是 现在使用的 gpio 分配管教

    PG11     ------> ETH_TX_EN
    PG13     ------> ETH_TXD0
    PG14     ------> ETH_TXD1






09.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 7 天前 | 显示全部楼层
1、GPIO速度等级改成low或者中等试试
2、phy芯片的全双工,100M可以正常识别不,这个要优先正常。
3、 然后ping不同,主要还是MPU Cache配置问题
回复

使用道具 举报

684

主题

3511

回帖

5588

积分

论坛元老

积分
5588
 楼主| 发表于 7 天前 | 显示全部楼层
eric2013 发表于 2025-6-3 08:08
1、GPIO速度等级改成low或者中等试试
2、phy芯片的全双工,100M可以正常识别不,这个要优先正常。
3、 然 ...

phy 配置的是全双工, 100M 可以识别到, 能够识别到网线 插入, 拔出 ,

还能够读取 phy 芯片的 id

我使用st 官方提供的  ..\STM32Cube_FW_H7_V1.11.2\Projects\STM32H743I-EVAL\Applications\LwIP\LwIP_UDPTCP_Echo_Server_Netconn_RTOS    修改了一下 可以 正常 ping 通了,而且 dhcp 工作也正常,只是小小的修改了一下 gpio 与我板子的对应管脚而已,另外就是增加了一个 uart 配置,只不过貌似是有 uart 波特率只能减半使用(配置的波特率是 921600 (但实际使用只能是 460800)) ,配置的其他波特率也是如此
我看这个例程驱动 跟我目前使用的基本差不多,不过st 官方使用的 freertos v1 os 系统

我自己另外又单独 使用 cubemx 配置了一个 freertos os2 + lwip 貌似也没有成功,我看配置也几乎都是一样的,有点想不明白呀 。。。
回复

使用道具 举报

4

主题

30

回帖

42

积分

新手上路

积分
42
发表于 7 天前 | 显示全部楼层
可以试一下,MDIO引脚可以设置为内部上拉,或者外接上拉电阻。
回复

使用道具 举报

33

主题

192

回帖

291

积分

高级会员

积分
291
发表于 7 天前 | 显示全部楼层
你的MPU配置没问题吗?

[C] 纯文本查看 复制代码
  /** ETH 描述符区(0x30000000, 具体地址见DMARxDscrTab),不可缓存 **/
  MPU_InitStruct.Number = MPU_REGION_NUMBER1;
  MPU_InitStruct.BaseAddress = 0x30000000;
  MPU_InitStruct.Size = MPU_REGION_SIZE_2KB; // 根据DMARxDscrTab等计算
  MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
  MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
  MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
  MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
  MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
  MPU_InitStruct.SubRegionDisable = 0x00;
  MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;
  MPU_InitStruct.Enable = MPU_REGION_ENABLE;
  HAL_MPU_ConfigRegion(&MPU_InitStruct);

回复

使用道具 举报

0

主题

51

回帖

51

积分

初级会员

积分
51
发表于 7 天前 | 显示全部楼层
ping不通一般都是接线和配置问题,另外lwip的1.4和2.1版本差别好像不小啊,哪位大神裸机移植过
回复

使用道具 举报

684

主题

3511

回帖

5588

积分

论坛元老

积分
5588
 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 hpdell 于 2025-6-3 20:54 编辑
LinY 发表于 2025-6-3 11:38
你的MPU配置没问题吗?

[mw_shl_code=c,true]




貌似可以了,
#define LWIP_RAM_HEAP_POINTER (0x30004000)      之前是这个地方定义 没有跟 mpu 配置保持一致造成的



        //__attribute__((at(0x30000000))) ETH_DMADescTypeDef  DMARxDscrTab[ETH_RX_DESC_CNT]; /* Ethernet Rx DMA Descriptors */
        //__attribute__((at(0x30000080))) ETH_DMADescTypeDef  DMATxDscrTab[ETH_TX_DESC_CNT]; /* Ethernet Tx DMA Descriptors */
        //#define LWIP_RAM_HEAP_POINTER (0x30004000)
       
        /* Configure the MPU attributes as Device not cacheable
         for ETH DMA descriptors */
        MPU_InitStruct.Enable = MPU_REGION_ENABLE;
        MPU_InitStruct.BaseAddress = 0x30000000;
        MPU_InitStruct.Size = MPU_REGION_SIZE_256B;
        MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
        MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;
        MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
        MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
        MPU_InitStruct.Number = MPU_REGION_NUMBER1;
        MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
        MPU_InitStruct.SubRegionDisable = 0x00;
        MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
        HAL_MPU_ConfigRegion(&MPU_InitStruct);


        /* Configure the MPU attributes as Normal Non Cacheable
         for LwIP RAM heap which contains the Tx buffers */
        MPU_InitStruct.Enable = MPU_REGION_ENABLE;
        MPU_InitStruct.BaseAddress = 0x30004000;
        MPU_InitStruct.Size = MPU_REGION_SIZE_16KB;
        MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
        MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
        MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
        MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE;
        MPU_InitStruct.Number = MPU_REGION_NUMBER2;
        MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;
        MPU_InitStruct.SubRegionDisable = 0x00;
        MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
        HAL_MPU_ConfigRegion(&MPU_InitStruct);





回复

使用道具 举报

684

主题

3511

回帖

5588

积分

论坛元老

积分
5588
 楼主| 发表于 7 天前 | 显示全部楼层
本帖最后由 hpdell 于 2025-6-3 21:42 编辑
eric2013 发表于 2025-6-3 08:08
1、GPIO速度等级改成low或者中等试试
2、phy芯片的全双工,100M可以正常识别不,这个要优先正常。
3、 然 ...

可以正常 ping 的工程 :
stm32h7 hal  v1.b.5
freertos os2  
h7_lwip_demo_v100_ping-ok.7z (13.92 MB, 下载次数: 1)

ping-ok.png









回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 6 天前 | 显示全部楼层
hpdell 发表于 2025-6-3 20:57
可以正常 ping 的工程 :
stm32h7 hal  v1.b.5
freertos os2

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 05:46 , Processed in 0.293086 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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