你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F746以太网UDP通信提示jabber 定时器过期

[复制链接]
yu0405jie 提问时间:2018-1-24 21:44 /
本帖最后由 yu0405jie 于 2018-1-26 06:23 编辑

        在使用STM32F746 Disc开发板发送数据时,ETH_DMASR寄存器的第三位TJTS置位,按手册中的说明是“此位指示发送 jabber 定时器已过期,这意味着发送器过度有效。发送过程会中止并将其置于停止状态。这会导致对发送 jabber 超时 TDES0[14] 标志进行置位”,但不明白造成超时的原因是什么?
        需要说明的是在实验中我没有使用LWIP库,也没有使用HAL库,问题发生在使用UDP发送数据的过程中,由于数据量比较大,我将数据量分了八片,采用环形描述符,描述符第一个缓冲区保存协议首部,第二个缓冲区包含实际数据,大小为1024字节. 我是每采集一片数据(时间大约0.6s),就对对应的描述符状态进行更新,当八片数据全部采集完成后调用发送指令(写DMA 发送轮询要求寄存器),此时会提示上述错误。

       实验中ping、arp以及UDP发送一帧数据(不分片)时都没有问题,只是当分片时会出现该问题。


收藏 评论3 发布时间:2018-1-24 21:44

举报

3个回答
斜阳__ 回答时间:2018-1-25 09:35:07
帮顶         
yu0405jie 回答时间:2018-1-26 06:23:16
问题找到原因了,与大家共享一下。

这个问题的原因在于自己对UDP分包和以太网DMA描述符的关系的理解上有错误。

原来认为一个UDP分了八片,对应八个描述符,那就是一个完整的帧跨越了8个描述符,因此将第一个描述符标记为第一个,第八个描述符标记为了最后一个。但实际情况是,当一个UDP包分了八片时,每一片都是一个完整的帧,也就是每一个描述符都包含一个完整的帧,都需要标记为第一个和最后一个。

这可是昨晚睡觉的时候突然想到的,哈哈
toofree 回答时间:2018-1-26 09:10:22
yu0405jie 发表于 2018-1-26 06:23
问题找到原因了,与大家共享一下。

这个问题的原因在于自己对UDP分包和以太网DMA描述符的关系的理解上有错 ...

恭喜恭喜,找到问题就好。
我也琢磨了半天,正要找个带网络的给试试呢。这下好了,你解决了,该向你学习了,也避免以后自已用时走弯路

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版