21ic问答首页 - 请教GD32F107 以太网half-duplex 模式异常、full-duplex模式正常
请教GD32F107 以太网half-duplex 模式异常、full-duplex模式正常
workmanxxx2022-07-26
本帖最后由 workmanxxx 于 2022-7-26 17:09 编辑
大佬们,请教一下GD32F107这颗芯片的以太网问题。同一版本PCB,一个板用STM32F107,另一个用GD32F107,使用STM32F107的各个模式下都能正常工作(10M、100M、单工及双工模式)。使用GD32F107的双工模式下10M和100M都能正常工作,当使用单工模式下10M和100M都无法正常工作了。
请问大家都是否遇到过这样的问题,是芯片问题还是配置不到位导致?
下载视频
大佬们,请教一下GD32F107这颗芯片的以太网问题。同一版本PCB,一个板用STM32F107,另一个用GD32F107,使用STM32F107的各个模式下都能正常工作(10M、100M、单工及双工模式)。使用GD32F107的双工模式下10M和100M都能正常工作,当使用单工模式下10M和100M都无法正常工作了。
请问大家都是否遇到过这样的问题,是芯片问题还是配置不到位导致?
下载视频
赞0
我又用STM32的试了一下,调试时监控以太网MAC设置寄存器(ETH_MACCR)的CSD位,这位为0或1时,单工状态下确实能正常工作。
手册上写的内容如下,根据下面说法,按理应该是该位应该置1才对,为啥STM32为0还能正常工作,太奇怪了。
CSD:关闭载波侦听功能 (Carrier sense disable)位16
1:在半双工模式下,MAC的发送器在发送帧过程中忽略MII的CSR信号,发送过程中载波丢失或者没有载波都不会报错。
0:MAC在发送过程中如果发生上述情况会报错,甚至放弃发送。
评论
2022-07-29
赞0
评论
2022-07-29
赞0
真是感谢,按你的方法试过了,单工状态下确实能正常连通了。
主要是这个起作用ENET_MAC_CFG |= ENET_MAC_CFG_CSD,昨天也在enet_init()函数里增加了这句,不过增加到那自动协商部分的后面了,不是增加到enet_init()函数的最后面部分,估计内部还有其它参数设定,所以导致失败。
评论
2022-07-29
赞0
评论
2022-07-29
赞0
这里默认为自动协商模式,协商完成后读取phy的寄存器会和PC端设置的模式相同。
刚才也设置了成100M单工模式,还是无法连通。
评论
2022-07-28
赞0
评论
2022-07-28
赞0
不让上传大于2M的文件,压缩后还有5M多呢。
附上的是GD32F10x里的demo,稍微改动了一下。我这里用的是IAR IDE,KEIL没有试过是否能正常编译。
这里用的phy为LAN8720A,地址为0 。GD32用25MHz晶体,PA8使能MCO输出25M时钟给LAN8720A。
目前代码里IP为固定的192.168.2.100,phy设置为自动协商模式。
程序下载到GD32后,PC端的网口直连到GD32板的网口。
当PC端网口默认设置为自动协商模式时,用ping 192.168.2.100 能正常连通。
PC端网口设置为单工模式时,就无法连通了。
PC端网口设置为双工模式时,就正常连通了。
更改PC端网口的模式:
控制面板 -> 网络和 Internet -> 网络连接 -> 右键选择网卡 -> 单击弹出的菜单属性 -> 配置按钮 -> 高级页面 -> 单击属性列表的 Speed & Duplex -> 右边的值里选择相应的模式 -> 确定按钮
注意,每次更改网卡模式后,GD32板需要重新上电复位,因未加断线重连功能。
如果你们有现成的GD32的互联型的板,已经调通了以太网的,按上面的改动一下PC端网口的连接模式,看看单工模式下是否能正常连通,如果确实不能连通,那估计还是GD32互联型的芯片有BUG导致。
请大家帮忙试试,不管是否能连通,请回复一下,谢谢各位了。
评论
2022-07-28
赞0
感谢感谢,需要点时间从GD32的例子里整理出来一个以太网的demo,稍微晚点传上来。
评论
2022-07-28
赞0
评论
2022-07-28
您需要登录后才可以回复 登录 | 注册