Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
drv_eth_以太网驱动
10
[STM32F2]LAN8720A 可以发送数据,无法接收到
发布于 2022-03-14 08:44:40 浏览:2064
订阅该版
[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.1k
关于作者
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 2024开发者大会议程正式发布!
2
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
3
RT-Thread EtherKit开源以太网硬件正式发布
4
如何在master上的BSP中添加配置yml文件
5
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
热门标签
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
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
19
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
6
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
4
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部