阅读:1065回复:7
朋友来看看缓冲切换的问题吧
问题:我设定的缓冲为4X缓冲,每个大小512,在我读数据的时候,读到2048就出现错或丢失一个字节数据的错误?是什么原因呢?,读数据的时钟是通过68013的IFCLK送出的30M时钟,采用GPIF模式
|
|
最新喜欢:![]() |
沙发#
发布于:2003-10-23 15:54
现在的问题是开始收到数据已经正确了,就是2048的时候丢数据
|
|
板凳#
发布于:2003-10-23 15:07
我觉得你头两个字节出错是因为你的时序问题,我只用过slave fifo,在下传数据过程中,一旦端点里有数据,那么头两个字节的数据就会被放在数据线上,如果你外设首先锁存数据再读的话读到的只能是第3、4个字节的数据
因此我想对于gpif也是类似的,你需要再看一看gpif的读写时序以及你得外设对端点读写数据的时序,除了这里我想不出那里还会出现问题。 另外对于你在2048的地方写数据的事情,你需要考虑一下主机读取数据和设备写数据的协调,如果当四个缓冲区都写满数据的时候你的设备还在往端点里写数据,那么这些数据就会丢失,如果你是实时传输,这是最大的可能。如果你不是实时传输,那么我想你应该通过检测端点的满标志来确定是否接着写数据到端点里,只有当端点不满时才能写,否则就等待。 祝你好运! |
|
地板#
发布于:2003-10-23 15:07
你先降低频率试试!
|
|
地下室#
发布于:2003-10-23 14:51
flytomoon
你好啊,我用的的确是AUTO模式,我现在的问题是在2048处丢失数据,这个问题始终出现,其他地方没有,如何解决? |
|
5楼#
发布于:2003-10-23 08:41
如果你用的是AUTO模式,在USB缓冲传输中丢数是不太可能的! :D
|
|
6楼#
发布于:2003-10-23 08:40
你用15或20M的时钟试试,速度太高估计你的硬件不一定可以跟的上,可能还没到USB就已经丢数了! :D
|
|
7楼#
发布于:2003-10-23 08:38
自己顶一下啊,
还有就是从缓冲读出来的数据中,每次开始的两个字节是一个固定的字,而我要的数据要从后面一个才开始,怎么解决呢?是什么原因造成的呢? 谢谢 |
|