OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3990|回复: 6

W5500 发送数据不定期卡死 求原因

[复制链接]

7

主题

40

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-7-24
在线时间
13 小时
发表于 2019-4-8 10:58:34 | 显示全部楼层 |阅读模式
10金钱
我想知道我这种情况发生的原因  问题描述很清楚我  请不要胡乱那些给我网上建议来蹭问题结贴 你可以帮忙顶下谢谢  我查了很多都不符合我这个情况  另外  我想知道的是原因

用W5500发送较小的数据  可以坚持几天都没卡死
但是当我一次性发送大量数据  其实就400B  但是个把小时左右就阻塞在 发送数据(uint16 send(SOCKET s, const uint8 * buf, uint16 len))前读地址那里
截取出来函数
  /* wait to process the command... */
    while( IINCHIP_READ(Sn_CR(s)));


下面是函数原型     


/**
*@brief                从W5500读出一个8位数据
*@param                addrbsb: 写入数据的地址
*@param   data:从写入的地址处读取到的8位数据
*@return        无
*/
uint8 IINCHIP_READ(uint32 addrbsb)
{
    uint8 data = 0;
    iinchip_csoff();
    IINCHIP_SpiSendData( (addrbsb & 0x00FF0000)>>16);
    IINCHIP_SpiSendData( (addrbsb & 0x0000FF00)>> 8);
    IINCHIP_SpiSendData( (addrbsb & 0x000000F8))    ;
    data = IINCHIP_SpiSendData(0x00);
    iinchip_cson();
    return data;
}


这些东西都是官方封装好的库   
我发送数据大小肯定没有溢出定的是2K  而且都发了半小时


另外这个发送消息阻塞属于首次阻塞地方  就算我强制跳过  它在其他功能中一旦判断这个地址位还是无法过去   
这个就像中断标志位一样  我该怎么清除掉呢   这是什么原因造成的呢   

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

40

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-7-24
在线时间
13 小时
 楼主| 发表于 2019-4-8 11:28:56 | 显示全部楼层
问题补充下  有时候还会不定期出现乱码到我的服务端   是纯粹的乱码那种    因为我发送的是字符串  上位机很容易看的到乱码    不过这个不影响我  但是不知道这个和我帖子描述的问题是否有关   
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2019-4-8 10:59:43 | 显示全部楼层
帮顶顶
回复

使用道具 举报

7

主题

40

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-7-24
在线时间
13 小时
 楼主| 发表于 2019-4-8 11:11:27 | 显示全部楼层
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-4-10
在线时间
2 小时
发表于 2020-10-13 19:50:09 | 显示全部楼层
我也碰到类似问题,一段时间后,数据就发送不出去了,但是模块并未掉线
回复

使用道具 举报

11

主题

2143

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4880
金钱
4880
注册时间
2015-1-10
在线时间
611 小时
发表于 2020-10-14 08:31:40 | 显示全部楼层
用while这种阻塞结构的时候不考虑这种问题吗,没有哪个IC是100%不会出问题的,不管是USART、IIC、SPI还是其他接口,都不建议阻塞式的程序结构,例程这么写是图方便,不用搞超时处理
回复

使用道具 举报

2

主题

458

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4464
金钱
4464
注册时间
2018-5-14
在线时间
957 小时
发表于 2020-10-14 08:50:34 | 显示全部楼层
之前遇到过,好像是硬件SPI卡死在while(flag)中了,后来改成了软件模拟SPI就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-17 14:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表