ping通状态,这时候可以ping通,时间比较久是因为开启了调试,但是Frame Failed
Debug 查看进入中断
PSR(1F) 读取为什么一直都是0
为什么Frame Failed
/ Section 3: Common PHY Registers /
/ Section 4: Extended PHY Registers /
配置代码关闭自适应
Rtthread 线程中关闭自适应
```C
static void phy_monitor_thread_entry(void *parameter)
{
uint8_t phy_addr = 0xFF;
uint8_t detected_count = 0;
while(phy_addr == 0xFF)
{
}
LOG_D(“Found a phy, address:0x%02X”, phy_addr);
// / RESET PHY /
// LOG_D(“RESET PHY!”);
// HAL_ETH_WritePHYRegister(&EthHandle, PHY_BASIC_CONTROL_REG, PHY_RESET_MASK);
// rt_thread_mdelay(2000);
// HAL_ETH_WritePHYRegister(&EthHandle, PHY_BASIC_CONTROL_REG, PHY_AUTO_NEGOTIATION_MASK);
}
static void phy_monitor_thread_entry(void *parameter)
{
uint8_t phy_addr = 0xFF;
uint8_t detected_count = 0;
}
修改为
就可以正常触发中断,正常ping通,无论Rtthread线程中的 phy 寄存器是否配置位自适应。
恳请 各位大佬 各位大神指点。。。。
恳请 大神 大佬们指点,项目比较急,万分感谢!!!
谢谢,了解了代码标签的使用,但是我现在的疑问是,我已经关闭了芯片的自适应,还是10M,半双工;您的意思是,即使你关闭了自适应,但是芯片的硬件设计没达到标准,所以依旧是 10M的,是这个意思吧?
还有就是为什么我的 PSR(0x1F) 读取出来的怎么一直都是 0 呢?,是芯片的设计问题嘛?如果要是接口有问题那么其他的寄存器读取也应该有问题呀。
另外,我说明一下,这个板子即使这样,他运行起来,我整天测试收发数据包,没有丢包掉线现象非常稳定,只是对配置这块比较疑惑,可能是强迫症吧,说什么弄个所以然,虽然已经研究3、4天了,继续研究。
@zhujie 代码标签是什么意思,麻烦举个例子?
markdown 中代码的标记