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

TMS320F28377D: scic模块接受不到数据,接受标志位不置位

Part Number:TMS320F28377D

在使用DSP28377D通过scic模块与位置传感器进行通讯,当程序烧写RAM里面时,程序可以正常运行,scic可以正常的发送和接受数据,但是我把程序烧写到Flash里面的时候,程序一直等待不到接受标志位置1,导致程序卡死在这里,一直在while那里等待,无法运行。当把while注释掉,程序就可以运行。可以确定scic配置正确,波特率正确,发送和接受都使能了,在RAM里面可以正常运行,当烧写flash后通过串口调试软件也可以确定dsp给位置传感器发送了正确的指令,位置传感器也返回了正确的指令,所以不清楚接受寄存器的标志位为啥不置位,希望给与指导和解答,谢谢,本人联系方式13852037592.

void RS485_ReceiveData()
{
Uint16 j=0;
for(j=0;j<=8;j++)
{
while(ScicRegs.SCIRXST.bit.RXRDY != 1);
RS485_RX_BUFF[j] = ScicRegs.SCIRXBUF.all; }
}

Yale Li:

程序中有没有用到必须copy到RAM中运行的代码?比如delay函数、操作flash的函数

,

feng dong:

用到了delay函数,请问需要添加什么代码,谢谢,本人联系方式13852037592

,

feng dong:

是不是这么一段话,我在程序里面添加了的

#ifdef _FLASH// These are defined by the linker (see device linker command file)extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadSize;extern Uint16 RamfuncsRunStart;#endif

void main(void){#ifdef _FLASH memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);#endif

InitSysCtrl();

#ifdef _FLASH InitFlash();#endif

,

Yale Li:

是的,这些是代码里添加的。cmd文件中也需要做相应的修改。

可以参考一下例程中的写法。每个例程都有针对烧录到FLASH、RAM的不同配置。也有烧录到FLASH的空工程。

,

feng dong:

我是直接用的led双核烧写到flash程序,在它的基础上加的自己的程序,用的它自带的CMD文件,请问还有哪有需要修改,方便加个微信吗,谢谢,我的联系方式为13852037592

,

Yale Li:

SPRA958L_Running an Application from Internal Flash Memory on the TMS320F28xxx DSP

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28377D: scic模块接受不到数据,接受标志位不置位
分享到: 更多 (0)