佚名通过本文主要向大家介绍了打印机接收不到数据,网络接收不到数据,路由器接收不到数据,串口接收不到数据,本地连接接收不到数据等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: W5300 UDP 接收不到数据
描述:
在CCS4.2里调试,正常连续运行时rxlen(接收缓冲区收到字符长度)始终为0;
如果在 "rxlen = 0x0fff & getSn_RX_RSR(s);"前加断点,rxlen是有接收值的,且接收字符个数也正确。
简单说就是:
dsp连续运行,getSn_SSR(s)返回0;
dsp单步运行,getSn_SSR(s)才有返回值。
这是什么原因,请大侠给分析一下。
socket(s, Sn_MR_UDP, port, mode);
switch((0x00ff & getSn_SSR(s)))
{
case SOCK_UDP:
rxlen = 0x0fff & getSn_RX_RSR(s);
if(rxlen > 0)
{
rxlen = recvfrom(s, (uint8*)rxbuf, rxlen, gw, &rxport);
}
if(len !=sendto(s,p,len,gw,port)) // send the data to the destination
{ }
break;
...........
}
解决方案1:
描述:
udp
dsp控制W5300使用UDP与PC收发数据。W5300的UDP发送没问题,但无法接收PC传来的UDP报文。代码如下。在CCS4.2里调试,正常连续运行时rxlen(接收缓冲区收到字符长度)始终为0;
如果在 "rxlen = 0x0fff & getSn_RX_RSR(s);"前加断点,rxlen是有接收值的,且接收字符个数也正确。
简单说就是:
dsp连续运行,getSn_SSR(s)返回0;
dsp单步运行,getSn_SSR(s)才有返回值。
这是什么原因,请大侠给分析一下。
socket(s, Sn_MR_UDP, port, mode);
switch((0x00ff & getSn_SSR(s)))
{
case SOCK_UDP:
rxlen = 0x0fff & getSn_RX_RSR(s);
if(rxlen > 0)
{
rxlen = recvfrom(s, (uint8*)rxbuf, rxlen, gw, &rxport);
}
if(len !=sendto(s,p,len,gw,port)) // send the data to the destination
{ }
break;
...........
}
解决方案1:
是说加个断点停一下,然后继续执行就对了?那你可以在这里加个延时,是不是芯片反应速度慢
解决方案2: 你的getSn_SSR()函数以什么样的频率被调用阿?
接收方式是轮询还是中断?