STM32H750XBH6的ETH模块的巨型帧分析
文档中和巨型帧有关的描述如图3,4,5,6,7,8,9,10,11,12所示。的数据包的时候,似乎可以发出去(通过逻辑分析仪捕获的长度可以判断),但是接收到的数据只有9463字节,目前还不知道是什么原因。只是告诉硬件是否需要跨越多个描述符,并不决定实际发送的数据的个数,实际发送的数据的个数由。,这里实际发送到总线上得到数据个数为84个而不是74个。,这里实际发送到总线上得到数据个数为84个而不是7
图1中 S T M 32 H 750 X B H 6 的 E T H 模块的 STM32H750XBH6的ETH模块的 STM32H750XBH6的ETH模块的手册里面说到,最多支持 16 K 16K 16K的数据包,我这里的数据手册目前是最新的,如图2所示。
文档中和巨型帧有关的描述如图3,4,5,6,7,8,9,10,11,12所示。我这里按照图5中红圈中的配置可以正常发送 1 K 1K 1K, 9 K 9K 9K的数据包且可以正常接收,但是当我发送 12 K 12K 12K的数据包的时候,似乎可以发出去(通过逻辑分析仪捕获的长度可以判断),但是接收到的数据只有9463字节,目前还不知道是什么原因。
这里发送的 12 K 12K 12K的数据采用 100 M 100M 100M的全双工模式。这个篇文章提到 100 M 100M 100M的速率(此时参考基准时钟为 50 m 50m 50m, R M I I RMII RMII接口),1个时钟周期里面能发送2个 B I T BIT BIT,因此 12 k = 12 × 1024 × 8 b i t 12k=12\times 1024\times 8bit 12k=12×1024×8bit的数据的发送需要 12 × 1024 × 8 2 = 49152 \frac{12\times 1024\times 8}{2}=49152 212×1024×8=49152个时钟周期,也就是 49152 × 20 n s = 983040 n s = 983.04 u s 49152\times 20ns=983040ns=983.04us 49152×20ns=983040ns=983.04us,这和我们图13中捕获的 100 M 100M 100M的通信波形是一致的。如果再加上4个字节的 C R C CRC CRC,就还要加上16个周期,即320 n s ns ns的时间,即 983.36 u s 983.36us 983.36us。
图14中的发送描述符里面有 b u f f e r l e n g t h buffer\quad length bufferlength和 f r a m e l e n g t h frame\quad length framelength( f r a m e l e n g t h frame\quad length framelength就是一个完整的数据包的大小),这里 f r a m e l e n g t h frame\quad length framelength只是告诉硬件是否需要跨越多个描述符,并不决定实际发送的数据的个数,实际发送的数据的个数由 b u f f e r l e n g t h buffer\quad length bufferlength决定,假设这里只用到 b u f f e r 1 buffer1 buffer1且 b u f f e r 1 l e n g t h = 84 buffer1\quad length=84 buffer1length=84, f r a m e l e n g t h = 74 frame\quad length=74 framelength=74,这里实际发送到总线上得到数据个数为84个而不是74个。
假设这里要发送的数据跨越了两个描述符且每个描述符都只用到 b u f f e r 1 buffer1 buffer1,第一个描述符的 b u f f e r 1 l e n g t h = 34 buffer1\quad length=34 buffer1length=34,第2个描述符的 b u f f e r 1 l e n g t h = 54 buffer1\quad length=54 buffer1length=54, f r a m e l e n g t h = 74 frame\quad length=74 framelength=74,这里实际发送到总线上得到数据个数为84个而不是74个。
有需要相关代码的可以联系我。
更多推荐



所有评论(0)