TI中文支持网
TI专业的中文技术问题搜集分享网站

关于McBsp接收数据时出现丢失的问题

我们通过omapl138内的mcbsp模块来接收AK2401的AD转换后的数据时,发现偶尔有丢数据的情况。现在AK2401做主,138做从。clk以及fs均是从AK2401输入到138内,频率分别是4.608Mhz左右以及72kHz。AK2401的时钟,数据输出时序如下图:

现在配置的mcbsp大致情况是:

single phase,2 words,receive word length is 32bit,no delay,

clk以及fs都是选的从pin脚输入的时钟源,也就是2401给到138的,并且用示波器测量后频率都是对的(fs = 72kHz, fclk = 4.608MHz)。

现象是我们抓出这I,Q的数据并画出图形,发现有时候I,Q会互换,感觉像是丢了一个I或者Q,导致I,Q错位了,请问你们知道出现这种现象的原因以及有什么解决办法吗?

Shine:

接收时发生丢数据,可能是来不及接收数据,打开fifo+edma看能否解决,例程如下。
e2echina.ti.com/…/344301

user4755476:

回复 Shine:

你好,我昨天试了一下fifo+dma,dma的中断出不来了,可是我已经在配置mcbsp之前就把fifo的配置写进去了,除此之外还有什么需要注意的吗?目前我的fifo配置是:RFIFOCTL = (16<<8)|1,RFIFOCTL|= (1<<16),dma每次读取的数据长度是1440byte,这个长度和fifo里触发dma_event的数据长度是要有什么对应关系吗?

user4755476:

回复 Shine:

你好,我昨天试了一下fifo+dma,dma的中断出不来了,可是我已经在配置mcbsp之前就把fifo的配置写进去了,除此之外还有什么需要注意的吗?目前我的fifo配置是:RFIFOCTL = (16<<8)|1,RFIFOCTL|= (1<<16),dma每次读取的数据长度是1440byte,这个长度和fifo里触发dma_event的数据长度是要有什么对应关系吗?

user4755476:

回复 Shine:

再问一下,dma的A_CNT长度一定要和RFIFOCTL中的RNUMEVT相等吗?

user4755476:

回复 Shine:

现在dma+fifo的模式已经配置可以了,但是还是有丢数据的现象,怎么能验证fifo模式生效了呢?

user4755476:

回复 Shine:

现在dma+fifo的模式已经配置可以了,但是还是有丢数据的现象,怎么能验证fifo模式生效了呢?

user4755476:

回复 Shine:

你好,那个问题我已经找到原因了,是我时钟的有效沿配置错了,本来是上升沿,我配置成了下降沿,还是很谢谢你的建议

user4755476:

回复 Shine:

我现在还有一个问题想问问你,因为上次配置错了mcbsp的时钟有效沿,所以关于mcasp的时钟有效沿的配置想跟你确认一下,我现在用mcasp传输数据,时序要求如下:

上图中可以看出时钟是上升沿有效,那ACLKXCTL的CLKXP=1对吗?

还有,如果我只需要传LRCK为低时的那16bit数据,为高的时候不传,那XFMT的XSSZ和XROT应该是多少啊?一直不太理解XROT的意义是什么

Tony Tang:

回复 user4755476:

Wayne Lee上图中可以看出时钟是上升沿有效,那ACLKXCTL的CLKXP=1对吗?

到底是做接收还是发送?按上图时序来看,发送端配置为下降沿,接收端配置成上升沿。

Wayne Lee如果我只需要传LRCK为低时的那16bit数据,为高的时候不传,

为什么会有这样的要求,到底是左右两个时隙,还是只有一个时隙?

Wayne Lee那XFMT的XSSZ和XROT应该是多少啊?一直不太理解XROT的意义是什么

XSSZ就是指的一个时隙是多少个时钟或者数据位。XROT你没有需要就不用管,无非就是数据先右移多少位再发送。

 

赞(0)
未经允许不得转载:TI中文支持网 » 关于McBsp接收数据时出现丢失的问题
分享到: 更多 (0)