Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
drv_eth_以太网驱动
10
[STM32F2]LAN8720A 可以发送数据,无法接收到
发布于 2022-03-14 08:44:40 浏览:2241
订阅该版
[tocm] ## 1.环境 使用RT-Studio 创建的标准F2 工程,已经修改了HSE时钟。 RT 版本 : 4.0.3 STM32CubeMX 版本 6.4 编译不通过,提示 重复定义的 `PHY_FULL_DUPLEX` 修改 `PHY_FULL_DUPLEX`的名称为 `EPHY_FULL_DUPLEX` 编译通过,但是不知道为啥 ## 2. phy_reset.c 如下 ```c #include "board.h" #include "drv_common.h" #include
#define RESET_IO GET_PIN(A,3) void phy_reset(void){ rt_pin_write(RESET_IO, PIN_LOW); rt_thread_mdelay(50); rt_pin_write(RESET_IO, PIN_HIGH); } int phy_init(void){ rt_pin_mode(RESET_IO, PIN_MODE_OUTPUT); rt_pin_write(RESET_IO, PIN_HIGH); return RT_EOK; } INIT_APP_EXPORT(phy_init); ``` ## 开打 #define DRV_DEBUG 日志如下 ``` [I/sal.skt] Socket Abstraction Layer initialize success. msh >[D/drv.emac] Found a phy, address:0x00 [D/drv.emac] RESET PHY! [D/drv.emac] phy basic status reg is 0x7829 [D/drv.emac] phy control status reg is 0x1058 [D/drv.emac] link up [D/drv.emac] 100Mbps [D/drv.emac] full-duplex [D/drv.emac] transmit frame length :42 [D/drv.emac] receive frame faild [D/drv.emac] phy basic status reg is 0x782D [D/drv.emac] phy control status reg is 0x1058 [D/drv.emac] phy basic status reg is 0x782D ``` 定位到 ```c /* Get received frame */ state = HAL_ETH_GetReceivedFrame_IT(&EthHandle); if (state != HAL_OK) { LOG_D("receive frame faild"); return NULL; } ``` HAL_ETH_GetReceivedFrame_IT(&EthHandle); 返回了 HAL_ERROR ```c /* Scan descriptors owned by CPU */ while (((heth->RxDesc->Status & ETH_DMARXDESC_OWN) == (uint32_t)RESET) && (descriptorscancounter < ETH_RXBUFNB)) ``` 这个条件没有过, 请问有解决的方法么? 芯片是STM32F207ZET6,原理图如下 ![image](https://user-images.githubusercontent.com/13214300/158003103-22705d35-0191-4508-96f0-d17846a02a92.png) ## STM32 F4的寄存器状态 ![image](https://user-images.githubusercontent.com/13214300/158003712-ffe39a7c-d8ff-4fd8-b5ec-0ca25277fd3a.png) ## STM32 F2的寄存器状态 ![image](https://user-images.githubusercontent.com/13214300/158003714-501f07c1-ea37-4245-b91e-d0fb12b7486d.png) ![image](https://user-images.githubusercontent.com/13214300/158003963-ee663dd2-d63c-465c-8cbc-555d9b1ccd56.png) STM32F2的 OWM bit 是SET 的状态。其他位好像都是无效的 ``` OWN: Own bit When set, this bit indicates that the descriptor is owned by the DMA. When this bit is reset, it indicates that the descriptor is owned by the CPU. The DMA clears this bit either when it completes the frame transmission or when the buffers allocated in the descriptor are read completely. The ownership bit of the frame’s first descriptor must be set after all subsequent descriptors belonging to the same frame have been set. ``` 这个是用STM32 ( 192.168.1.10) ping 电脑主机的IP( 192.168.1.23) ![image](https://user-images.githubusercontent.com/13214300/158004318-368b0ab4-d3ce-49d6-9a2f-ee8457ba641a.png) 电脑回复了,但是32 一直无法收到
查看更多
2
个回答
默认排序
按发布时间排序
jiuxiaxixi
2022-03-14
这家伙很懒,什么也没写!
rt-thread.map 文件中的ETH dma 地址映射 ```C .bss.DMARxDscrTab 0x2000245c 0x4 ./drivers/drv_eth.o .bss.DMATxDscrTab 0x20002460 0x4 ./drivers/drv_eth.o .bss.Rx_Buff 0x20002464 0x4 ./drivers/drv_eth.o .bss.Tx_Buff 0x20002468 0x4 ./drivers/drv_eth.o .bss.EthHandle 0x2000246c 0x48 ./drivers/drv_eth.o .bss.stm32_eth_device 0x200024b4 0x84 ./drivers/drv_eth.o ``` @cuphead 这边eth dma 的配置是在哪里看参考资料捏,我怎么看 F4 的eth dma地址映射也差不多的样子? ```c .bss.DMARxDscrTab 0x200028d0 0x4 ./drivers/drv_eth.o .bss.DMATxDscrTab 0x200028d4 0x4 ./drivers/drv_eth.o .bss.Rx_Buff 0x200028d8 0x4 ./drivers/drv_eth.o .bss.Tx_Buff 0x200028dc 0x4 ./drivers/drv_eth.o .bss.EthHandle 0x200028e0 0x48 ./drivers/drv_eth.o .bss.stm32_eth_device 0x20002928 0x84 ./drivers/drv_eth.o ```
aozima
2022-03-14
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
简单一点,OWN为1就说明此时EMAC还没收到包。 可能原因: - 包没到PHY,网络接收有问题(协商速率时要用到,可以排除) - 包没到EMAC,MII/RMII的接收有问题,如IO配置,映射不对,或虚焊短路。 - 包到了EMAC但过滤掉了,检查EMAC配置和MAC地址。或是包校验不过。 你板子的IP是静态还是DHCP?如果是DHCP,那第1,2条都可以排除。第3条可以把过滤器那里**接收所有包**这个位打开,这样所有包都能进来。
撰写答案
登录
注册新账号
关注者
0
被浏览
2.2k
关于作者
jiuxiaxixi
这家伙很懒,什么也没写!
提问
2
回答
1
被采纳
0
关注TA
发私信
相关问题
1
SPI总线挂接2个W5500以太网芯片
2
用studio开发ETH设备时drv_eth.c不参与编译
3
STM32H743 以太网驱动 问题
4
关于在drv_eth.c中如何强制PHY工作
5
如何在rt-thread工作过程中切换IP地址获取模式(静态IP或者动态IP)
6
w5500_socket错误
7
STM32H743 LAN8720A
8
rt bthread studio不支持stm32H7系列的cpu 以太网驱动
9
studio生成stm32h7工程,drv_eth.c编译不过,如何解?
10
LWIP配置一直ping不同
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
在RT-Thread Studio中构建前执行python命令
2
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
3
CherryUSB开发笔记(一):FSDEV USB IP核的 HID Remote WakeUp (USB HID 远程唤醒) 2025-01-18 V1.1
4
RT-thread 缩写字典
5
RT Thread 源码分析笔记 :线程和调度器
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
聚散无由
2
篇文章
14
次点赞
catcatbing
2
篇文章
4
次点赞
Wade
2
篇文章
2
次点赞
Ghost_Girls
1
篇文章
4
次点赞
xiaorui
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部