请教专家,OMAPL138mcbsp设置为从模式,FPGA提供的帧同步信号有时候在前几个时钟周期没有被检测到,到后面某一个时钟周期才能被检测到,这样通过MCBSP发出的数据就会偏,请指导。
Tony Tang:
McBSP接口的工作方式都是以帧同步做为参考,所以不应该存在没有检测到,后面又检测到的问题。
可能是我理解你的问题不对,如果有波形图更能说明问题。
另外,McBSP可以配置成延时0~2个bit接收/发送数据,不知你说的是不是这个问题?或者说你注意到这个配置没有?
zhan shao:
回复 Tony Tang:
波形如附件图中所示,其中蓝色为FPGA提供的帧同步信号,绿色为发送的数据(时钟信号没有显示出来但时钟经过测试是没问题的),数据宽度为24bit,帧同步低有效,宽度也是24bit,MCBSP配置为延时0bit,正常情况来说,在同步信号为低的时候开始发送数据,当为高的时候发送就结束了,但是有时候,当同步信号拉高之后,还会有数据出来如图中所示的情况。这时候由于DA芯片是在同步信号低的时候接收数据,所以这种情况下,DA接收到的数据就会出错。请指导
Tony Tang:
回复 zhan shao:
Zhanshao,
从下面图来看,请问这个时候发的数据是什么?是不是本身这几个bit就是0?
帧同步是FPGA给的,位时钟是谁提供的?
zhan shao:
回复 Tony Tang:
1、图中这时候发送的数据应该是0x2ad7,正常前面应该有6个bit的0,但是图中前面有12个bit0,也就相当于数据开始移位的时间比帧同步信号有效时间延迟了6个bit,(而且不是每次数据偏的时候都是延时6bit,还有可能是其他bit)。
2、位时钟和帧同步时钟都是由FPGA提供。且位时钟和同步时钟是同源的。 请指教。
Tony Tang:
回复 zhan shao:
24位数据的0x2AD7前面应该是10个0,所以从图上来看,是延时了2个bit,你检查一下寄存器XCR[RDATDLY]的值是多少?
zhan shao:
回复 Tony Tang:
非常抱歉,图中的数据我弄错了,发送的并不是0x2ad7,而应该是0X02AD70前面有6个0,后面有4个0,XCR[RDATDLY]设置为不延时。请指教
Tony Tang:
回复 zhan shao:
说实话,我从来没见过这种情况。
#1. 有产生underrun的错误吗?
#2. 能否发送固定的数,来确认波形与数据的区别?
#3. 你是如何抓到这个错误的波形的?我的理解这是偶尔的情况,应该很难捕捉到。
#4. 不会是每发一个数,就配置一下McBSP吧?不然产生错误之后,就不会继续发送了的。
zhan shao:
回复 Tony Tang:
非常感谢TONY tang的解答:
1、没有underrun错误,数据还在正常发送,只是偶尔会有一个数据发偏几个bit。
2、曾经尝试过发固定的数据,也是过一段时间之后就会有一个数据会出现偏几个bit
3、这个波形的确很难捕捉到,这个问题也是在偶然中发现的,之后经过专门测试发现这个出现的概率也不小。基本上用示波器捕捉10分钟左右就能捕捉到一次数据偏
4、MCBSP只有在初始化的时候进行过配置,之后就没有再进行配置了。
5、请TONY TANG 帮忙再想想有没有其他办法。非常感谢