CH32F207VCT6 网口连接交换机,过一段时间,link灯灭掉
掉线后,插拔网线又可以连接上。程序使用的是例程里面的tcpserver 可能跟交换机有关,继续观察一下 还是没用,直连电脑网口还是断线,指示灯熄灭 phy_stat = ETH_ReadPHYRegister( gPHYAddress, PHY_BSR);
掉线后这个数值=0x1809,跟没插网线一样。
void WCHNET_ETHIsr(void) 这个以太网中断函数触发下面代码,断线
if( int_sta & ETH_DMA_IT_PHYLINK)
{
ETH_PHYLink( );
ETH_DMAClearITPendingBit(ETH_DMA_IT_PHYLINK);
} PHY_BSR 正常联机后数值是0x182D 引入心跳数据吧,也就是定时一秒或是3秒发一次数据!
wang1979 发表于 2022-12-16 10:00
引入心跳数据吧,也就是定时一秒或是3秒发一次数据!
我这个做的是tcp服务器
#if KEEPLIVE_ENABLE //Configure keeplive parameters
{
struct _KEEP_CFG cfg;
cfg.KLIdle = 20000;
cfg.KLIntvl = 15000;
cfg.KLCount = 9;
WCHNET_ConfigKeepLive(&cfg);
}
#endif
这个功能已经使能了,现在程序烧录的就是出厂例程,还是有这个问题,内置10m的phy接口芯片就是认为掉线了,这个问题头疼 您好,连接交换机后会立刻linkdown还是正常通信一段时间才会linkdown? 张饕餮 发表于 2022-12-16 11:29
您好,连接交换机后会立刻linkdown还是正常通信一段时间才会linkdown?
是无通讯过一段时间会linkdown(1-2小时内,直连电脑也是一样),正常有通讯的时候没发现断线。
读取phy_stat = ETH_ReadPHYRegister( gPHYAddress, PHY_BSR); 这个和没连网线的时候数据一样,0x1809
开机连接网线正常读取的时候是0x182D 您好,KEEPLIVE_ENABLE仅保持TCP的连接与否并不会导致linkdown,您那边可以检查一下硬件电路,可以通过EVT板子下载最新的EVT例程测试一下是否会出现同样的现象呢。 这种方式的连接 是不是需要一个比较可靠的心跳信号呢 无通讯过一段时间会linkdown,正常有通讯的时候一般不会断线 需要特定的握手信息吗或者时序上对应不上 想要保持TCP的连接是不是需要特定频率的心跳信号啊 在断开连接的时候回返回一些信息码吗 最近测试发现6路中断输入(10K*6路),跑一段时间(几小时不等),以太网会崩溃,有串口没有问题。
页:
[1]