This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS1224:技术问题

Guru**** 2538950 points
Other Parts Discussed in Thread: TMS570LS1224

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1089414/tms570ls1224-technical-issues

部件号:TMS570LS1224

大家好,

我帮助客户发送帖子。  

“我正在研究TMS570LS1224的CAN中断。 我想生成CAN Raw数据的正弦波信号。 我尝试修改CAN中断代码,但我无法获得输出,您能告诉我错误的位置,帮助我吗? 下面是我正在使用的代码:

#include "sys_common.h"

/*用户代码开始(1)*/
包含"CAN.h"
包括"ESM.h"
#include "sys_core.h"
#include "sci.h"
#include "stdio.h"
包含"math.h"

#define D_count 8.

UINT32 cnt=0,错误=0,TX_done =0;
UINT8 TX_DATA[D_COUNT][8]={0};
UINT8 Rx_DATA[D_COUNT][8]={0};
UINT8 *TX_PTR =&TX_DATA[0][0];
UINT8 *RX_PTR =&RX_DATA[0][0];
UINT8 *dptr=0;
UINT32 cnt1 = 0;
int x=0;
int y=0;
浮点I=0;
int j=0;
浮子A[600];

void dumpSomeData();

void dumpSomeData1();
/*用户代码结束*/

/**@fn void main(void)
*@简介应用程序主要功能
*@注意此函数默认为空。
*
*此函数在启动后调用。
*用户可以使用此功能来实施应用程序。
*/

/*用户代码开始(2)*/
/*用户代码结束*/

内部主(无效)

/*用户代码开始(3)*/

/*在Cortex R4 *中启用IRQ中断
_enable_interrupit_();

// sciInit();
//sciSend(scilinREG,18,(unsigned char*)"SCI已初始化.\r\n");

/**-在RAM中写入随机数据-传输*/
//dumpSomeData();
dumpSomeData1();

/**-将CAN1 MB1,Msg ID-1配置为传输,将CAN2 MB1配置为接收*/
canInit();

/**-启用错误中断*/
canEnableErrorNotification (canREG1);
canEnableErrorNotification (canREG2);

/**-起动变速箱*/
对于(cnt1=0;cnt1<D_count;cnt1++)

Int cnt1 = 0;
canTransmit (canREG1,canMESSAGE_BOX1,TX_PTR);/*传输8个不同的块,1 x 1 *
while (TX_done == 0){

//如果(++cnt1 == 100){
// sciSend(scilinREG,18,(unsigned char*)"无法传输.\r\n");
//中断;
//}

};/*....等待传输请求通过*/

用于(x=1;x<200;x++)

对于(y=0;y<200;y++){};
}
tx_done=1;
TX_PTR +=8;/*下一个块....*/


}

/**-使用传输的数据检查接收到的数据*/
TX_PTR =&TX_DATA[0][0];
RX_PTR =&RX_DATA[0][0];

用于(cnt=0;cnt<63;cnt++)

如果(*TX_PTR++!=*RX_PTR++)


错误++;/*数据错误*/
}
}

while (1){};/* TX-Rx完成后永远等待。 */

/*用户代码结束*/

返回0;
}


/*用户代码开始(4)*/
/*将一些数据写入ram */
void dumpSomeData()

UINT32 tmp = 0x11;

CNT =(D_COUNT*8)-1;
dptr =&TX_data[0][0];
*dptr = tmp;

而(cnt--)

tmp =*dptr++;
*dptr = tmp + 0x11;
}
}

void dumpSomeData1()

UINT32 tmp;
CNT =(D_COUNT*8)-1;

*dptr = tmp;


对于(i=0;i<40;)

*dptr=10*sin (2* 3.14 *50*i);
dptr =&TX_data[0][0];
J++;
1.5 ;


}

}

这就是我获得输出的方式:

"

感谢你的帮助。

此致,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,我们的专家在4月7日之前不在办公室。 请期待回复延迟。

    此外,请参阅此常见问题解答: software-dl.ti.com/.../index.html

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好,

    是否有任何更新?

    谢谢。

    此致,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Zhonghui,

    中断请求到达CPU之前有三个“门”:

    1.生成中断请求的模块具有一个寄存器,用于启用它可以生成的每个中断。

    2.矢量中断管理器(VIM)具有寄存器,允许将模块的中断请求按照优先级方案转发到CPU (首先是较低的通道号)。

    3.最后,必须将CPU本身配置为响应VIM (IRQ或FIQ)转发的中断请求。

    _enable_interrupit_();

     

    请确保步骤1和步骤2配置正确。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,王先生,

    感谢你的帮助。

    我的客户仍在分析您的回复。

    此致,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您的客户有进一步的问题,请告诉我。