OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6714|回复: 7

STM32F756 + LAN8720A 网络ping不通

[复制链接]

8

主题

169

帖子

0

精华

高级会员

Rank: 4

积分
564
金钱
564
注册时间
2015-7-4
在线时间
105 小时
发表于 2018-7-2 23:08:39 | 显示全部楼层 |阅读模式
3金钱


问题如题:

硬件:
    1. 单片机和PHY芯片通过RMII链接。
    2. 除了复位引脚,其他引脚与原子阿波罗开发板一致,复位引脚直接接到单片机PA0脚。

软件:
    1. 程序使用原子F7例程,修改复位引脚为PA0,配置为推挽 下拉 输出(在LAN8720_init()初始化函数里面,最前面位置)。
    2. 取消不使用代码 LCD,Key,PCF8574
    3. 电脑IP 设为 192.168.1.122,开发板IP设为 192.168.1.30  不使用DHCP
    4. 修改接收函数,让接收到的数据重新发送出来。
    5. 链接网线,网络指示灯正常(绿灯常亮,黄灯闪烁)。
    6. 通过断点调试,LAN8720和lwip_comm的初始化都通过,程序正常运行至主函数UDP测试程序。


问题:
     1. 通过电脑ping 指令,不通( 无法访问主机)
     2. 通过网络调试助手,发送数据,不返回任何数据

最佳答案

查看完整内容[请看2#楼]

发现问题了,TXD0和MDC引脚接反了。 通过自己调试过程,总结一下: 这个问题迷惑工程师的几点现象: 1. 程序初始化没有在while(lwip_init())处卡死,误认为PHY芯片没有问题。 2. 网络指示灯正常闪烁,肯定PHY芯片正常 3. 运行Get_speed()函数后,通过串口或者液晶显示 “全双工/100M ”, 更加肯定PHY芯片正常(其实Get_speed()函数返回值为7。包括LAN8720的所有寄存器 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

169

帖子

0

精华

高级会员

Rank: 4

积分
564
金钱
564
注册时间
2015-7-4
在线时间
105 小时
 楼主| 发表于 2018-7-2 23:08:40 | 显示全部楼层
发现问题了,TXD0和MDC引脚接反了。

通过自己调试过程,总结一下:

这个问题迷惑工程师的几点现象:
1.  程序初始化没有在while(lwip_init())处卡死,误认为PHY芯片没有问题。
2.  网络指示灯正常闪烁,肯定PHY芯片正常
3.  运行Get_speed()函数后,通过串口或者液晶显示 “全双工/100M ”, 更加肯定PHY芯片正常(其实Get_speed()函数返回值为7。包括LAN8720的所有寄存器读出来全为0XFFFF 。PS.原子哥,这儿的代码需要升级啊

根据我的问题,和网上一些解决方案,基本判定这个类型问题基本上是单片机和LAN8720没有通信成功
可能原因一般都有以下几点:
1.   LAN8720底座(GND引脚)未焊接
2.   由于LAN8720是QFN封装,芯片虚焊
3.   电路图画错
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-7-3 01:56:41 | 显示全部楼层
这个不好判断哦,慢慢调试吧。
回复

使用道具 举报

8

主题

169

帖子

0

精华

高级会员

Rank: 4

积分
564
金钱
564
注册时间
2015-7-4
在线时间
105 小时
 楼主| 发表于 2018-7-3 13:54:40 | 显示全部楼层
正点原子 发表于 2018-7-3 01:56
这个不好判断哦,慢慢调试吧。

有可能是什么问题呢???我一个一个试,我把启动函数也改为STM32F756xx.s了,还是不行
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-7-4 02:21:40 | 显示全部楼层
chaifuwu 发表于 2018-7-3 13:54
有可能是什么问题呢???我一个一个试,我把启动函数也改为STM32F756xx.s了,还是不行

我也不太清楚
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

169

帖子

0

精华

高级会员

Rank: 4

积分
564
金钱
564
注册时间
2015-7-4
在线时间
105 小时
 楼主| 发表于 2018-7-4 09:52:50 | 显示全部楼层

现在发现,LAN8720的寄存器都出来都是FFFF
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2018-4-12
在线时间
14 小时
发表于 2018-7-9 16:33:00 | 显示全部楼层
用stm32CUBE,设置好静态IP地址后,选择TCP和UDP使能(用哪个开哪个),然后选择外设芯片LAN8720和LAN8742程序通用。最后在主函数中加入MX_LWIP_Process(),就能直接ping通,如果不通多半是原理问题。
回复

使用道具 举报

5

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2018-1-14
在线时间
26 小时
发表于 2018-11-24 14:33:48 | 显示全部楼层
patrickliu 发表于 2018-7-9 16:33
用stm32CUBE,设置好静态IP地址后,选择TCP和UDP使能(用哪个开哪个),然后选择外设芯片LAN8720和LAN8742 ...

我烧历程都不行,屏幕啥都正常。为啥PING失败?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-2 11:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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