Other Parts Discussed in Thread: DCA1000EVM,
您好,项目中打算在AWR1843中通过LVDS向DCA1000EVM每100ms发送1124KB数据,DCA1000EVM再通过以太网打包成多个UDP packet后传输到PC。由于每个UDP packet传输的数据为1466B,1466B = 4 + 6 + 1456;其中真正传输的数据大小为1456B。
在AWR1843中,每隔100ms发送的1124KB数据包括100KB自定义数据与1024KB ADC数据,其中100KB自定义数据通过多次连续的启动SW session来实现(因为启动一次SW session最多发送3*32K=96kB数据),在多次连续的启动SW session发送完256KB自定义数据后,随即通过启动HW session来发送1024KB ADC数据。通过以上过程在AWR1843中完成每次发送1280KB数据的任务。
为了传输方便,我在256KB自定义数据中定义了一个数据头。数据头是1kB大小的数据,其最前面(起始)为一串标识符,如“AAAAAAAAAAA”,其他均为自定义数据。
数据发送后,我在PC端通过wireshark来观测发送的数据是否正确。
由于在DCA1000EVM向PC发送的每个UDP packet的有效数据大小为1456B,而每次发送的1124KB数据并不是1456B的整数倍,这导致每100ms后数据头中的标识符,如“AAAAAAAAAAA”,并没有在固定的位置,比如有时在上一个100ms数据的最后出现,或下一个100ms数据的最前面出现。如果每隔100ms来实时的解析接收到的数据,为了能够每次(每100ms)能实时的解析完整的发送数据,我将1KB数据头增加一定的大小,也就是整个自定义数据会增加。增加后的自定义数据大小与1024KB ADC数据相加后其大小为1456的整数倍,大小为791(可以得知数据头增加的数据大小为:791*1456-1124*1024=720B)。更改以后,我发现还是不能每100ms内在固定的位置得到标识符,而且还出现了其他的错误,比如每100ms出现的UDP packet并不是791,有时候是314或其他数字。
那么问题是:我如何分配数据大小以每次(每100ms)得到完整的发送数据,其定义的数据头也出现在固定的位置处(如某一个UDP packet的起始处)?
谢谢!