本帖最后由 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发送一帧数据(不分片)时都没有问题,只是当分片时会出现该问题。 |
怎么监听触摸动作松开?
USB HS 怎样测试眼图?
STM32F767 LWIP无法ping通
touchgfx添加文字不能显示,直接死(HardFault_Handler)
求问诡异的问题,eth网口ping不通
STM32F745: PDR必须直连VDD或VSS吗?
STM32F765 3.3V和GND短路
stm32f723iek6
请问 Stm32 哪款芯片比较适合跑ai?
STM32F769I-DISCO各种板载芯片的引脚图应该去哪找,数据手册上好像没看到?
这个问题的原因在于自己对UDP分包和以太网DMA描述符的关系的理解上有错误。
原来认为一个UDP分了八片,对应八个描述符,那就是一个完整的帧跨越了8个描述符,因此将第一个描述符标记为第一个,第八个描述符标记为了最后一个。但实际情况是,当一个UDP包分了八片时,每一片都是一个完整的帧,也就是每一个描述符都包含一个完整的帧,都需要标记为第一个和最后一个。
这可是昨晚睡觉的时候突然想到的,哈哈
恭喜恭喜,找到问题就好。
我也琢磨了半天,正要找个带网络的给试试呢。这下好了,你解决了,该向你学习了,也避免以后自已用时走弯路