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

spi 从机接收程序,仿真调试时程序会跳出到 dbg_.h文件的void __DebugBreak(unsigned char operation, void *operands)程序,请问是什么原因?

Other Parts Discussed in Thread:MSP430FR5739

你好!spi 从机接收程序,仿真调试时程序会跳出到 dbg_.h文件的void __DebugBreak(unsigned char operation, void *operands)程序,请问是什么原因?谢谢!

      注:1、原例程增加一个数组,放在SPI数据接收程序,取消这个数组赋值这句时,程序是正常。

             2、中断程序与void __DebugBreak如下。

unsigned char data[30];

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
#else
#error Compiler not supported!
#endif
{
while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF =UCA0RXBUF; // Echo received data
data[i] =UCA0RXBUF;  //data[i] =UCA0RXBUF&0xff;
i++;
if(i==30)
{
i=29;
}
}

/* Low-level generic debugger break point. */
/* Copyright 2003-2010 IAR Systems AB. */

#include "__dbg_.h"

#pragma optimize = none
#pragma cspy_support = basic
#pragma language=extended
_DLIB_DEBUG_BREAK_FUNCTION_ATTRIBUTE
void __DebugBreak(unsigned char operation, void *operands)
{
/* Debugger breaks here */
}

Susan Yang:

有可能是您的stack设置不够大,建议您在IAR内增大一下试试

另外您可以使用__no_init__unsigned char data[30];来不让编译器初始化数组

,

user4385857:

好的,字符在调用前重新初始化,问题解决了,可能溢出问题。另外问下,1、数组空间定义大小问题,一个数组最大好象是861个,data[861],再大IAR编译器就不能通过了。2、SPI通讯时数据有5K多个,数组定义空间不够用,请问有什么办法能快速取存数据。

,

Susan Yang:

1 大型数组的话,IAR内一般建议使用__no_init__来不让编译器初始化

2 您现在使用的是哪款芯片?您可以看一下使用SPI DMA

,

user4385857:

1、了解。2、MSP430FR5739 ,有DMA的, 3、SPI 工作在2MHZ,如果有更多数据存取时,是否可以用FRAM 来存取

,

Susan Yang:

2MSP430FR5739 的DMA的话,有可能会碰到DMA9的情况,详细参考下面的链接,使用时需要注意一下。

www.ti.com.cn/…/slaz392af.pdf

您可以使用两个DMA通道来transfer相同的数据

3 抱歉,不太明白您所指的“用FRAM 来存取”,能详细说一下吗?

,

user4385857:

3、数据需要这样通讯:用MSP430FR5739芯片,一个做主机,一个做从机,用SPI通讯。主机一次发几K个数据给从机,从机中断接收后写入FRAM里。同时读取FRAM预存数据,从机发回主机几K个数据。目前通讯数据放在一个数组,数组空间长度不够,是不是可以在中断程序里读写FRAM数据,这种不需要数组中转

,

Susan Yang:

我认为是可以的

请在以下位置找到代码示例:  MSP430FR573x,MSP430FR572x C代码示例(IAR和CCS)

可以参考MSP430FR57xx_usci_i2c / SPI / UART_standard代码示例和MSP430FR57xx_FRAM Write代码示例 。

,

sky zhai:

user4385857你好 能具体说一下解决办法吗 谢谢

赞(0)
未经允许不得转载:TI中文支持网 » spi 从机接收程序,仿真调试时程序会跳出到 dbg_.h文件的void __DebugBreak(unsigned char operation, void *operands)程序,请问是什么原因?
分享到: 更多 (0)