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

SFO_MepDis()函数不好用

F28335的DSP板子,都能烧写程序,然而在部分DSP板子上出现下面问题:

while ( MEP_ScaleFactor[1] == 0 ) SFO_MepDis(1);    //SFO for HRPWM1  

while ( MEP_ScaleFactor[2] == 0 ) SFO_MepDis(2);    //SFO for HRPWM2  

while ( MEP_ScaleFactor[3] == 0 ) SFO_MepDis(3);    //SFO for HRPWM3  

while ( MEP_ScaleFactor[4] == 0 ) SFO_MepDis(4);    //SFO for HRPWM4

在程序跑到这里时一直循环在第一句,也就是说MEP_ScaleFactor[1]的值一直是0;后来发现即使屏蔽第一句,下面的几句运行结果也是0。

在正常情况下150MHz的对应的MEP_ScaleFactor应该是45左右吧。在正常的DSP板子上也确实是这样。

想请教一下这个问题可能的原因是什么?有可能是DSP本身的问题么?或者是焊接问题?

Ming Cheng3:

这个问题我查了一天,原来一直在软件上找问题,发现一个现象,就是MEP_ScaleFactor只会出现两个值,一个是0一个是0x07FF,虽说不正常但也是会变化的,再考虑到TI公司的DSP芯片质量毕竟过硬,基本排除DSP本身有问题。SFO是根据时钟SYSCLKOUT来算MEP的个数吧,就是和时钟相关的计算,然后就是在时钟上找问题,发现时钟的软件设置也正常。

在最后才想到是不是硬件出问题了,也就是晶振。。。设计的30MHz,板子的厂家给焊的是5MHz,除以2乘以10也才25MHz。MEP_Dis()函数的工作频率最小为50MHz,自然没法正常工作。

另外,当外部晶振和CCS3.3的flash烧写设置的时钟对不上的时候也能烧写程序,这也让我很吃惊,不太明白其中的原理。

F28335的DSP板子,都能烧写程序,然而在部分DSP板子上出现下面问题:

while ( MEP_ScaleFactor[1] == 0 ) SFO_MepDis(1);    //SFO for HRPWM1  

while ( MEP_ScaleFactor[2] == 0 ) SFO_MepDis(2);    //SFO for HRPWM2  

while ( MEP_ScaleFactor[3] == 0 ) SFO_MepDis(3);    //SFO for HRPWM3  

while ( MEP_ScaleFactor[4] == 0 ) SFO_MepDis(4);    //SFO for HRPWM4

在程序跑到这里时一直循环在第一句,也就是说MEP_ScaleFactor[1]的值一直是0;后来发现即使屏蔽第一句,下面的几句运行结果也是0。

在正常情况下150MHz的对应的MEP_ScaleFactor应该是45左右吧。在正常的DSP板子上也确实是这样。

想请教一下这个问题可能的原因是什么?有可能是DSP本身的问题么?或者是焊接问题?

Eric Ma:

回复 Ming Cheng3:

看起来应该就是晶振问题。

ERIC

赞(0)
未经允许不得转载:TI中文支持网 » SFO_MepDis()函数不好用
分享到: 更多 (0)