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

TMS320F280049C: 程序移植

Part Number:TMS320F280049COther Parts Discussed in Thread:LAUNCHXL-F280049C

您好想问一下:28377S中的发送程序移植到280049C中都需要底层修改什么?

为什么我移植到280049不能用呢?

希望您测试一下然后给出您都修改了哪些参数?

Susan Yang:

shipeng huang 说:28377S中的发送程序移植到280049C中都需要底层修改什么?

理论上两者的CAN是相同的,您可以直接将例程在280049上使用。但是您需要根据板子原理图来修改CAN引脚

shipeng huang 说:为什么我移植到280049不能用呢?

具体表现是什么呢?能否详细说一下?

,

shipeng huang:

我的can引脚修改了,在28377S上收发都正常。当然是采用了收发2个程序和USBCAN ,但是现在移植到到280049上和USBCAN就连接不通了,具体表现就是停留在 while(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_TXOK)) !=  CAN_ES_TXOK)不动作了。难道是我的个屁噢修改的不对?

,

shipeng huang:

这个是280049的硬件贴图,我的gpio是按照硬件上修改的啊?

,

Susan Yang:

shipeng huang 说:但是现在移植到到280049上和USBCAN就连接不通了

280049的CAN引脚是否有修改?您使用的是开发板?哪个版本?

测试例程是哪一个呢?

,

Susan Yang:

shipeng huang 说:这个是280049的硬件贴图,我的gpio是按照硬件上修改的啊?

是的,您需要按照原理图来修改

,

Susan Yang:

您是否有进行如下设置

,

shipeng huang:

你好:

1、开发板是LAUNCHXL-F280049C,程序是由28377S中移植到280049中的。

2、280049的CAN引脚是已经修改,并按照开发板硬件原理图修改的。

3、程序是由28377S的can_ex4_simple_transmit移植到280049的。现在的状态是停在了while(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_TXOK)) !=  CAN_ES_TXOK)这一句。

,

shipeng huang:

这个也设置了,但是没有用。

,

Susan Yang:

谢谢反馈,那请您附上您的工程,我们测试一下

另外请确认下您的USB-CAN连接是正确的

,

shipeng huang:

#include "Main_Control.h"#include "TI_CLA_TASK.h"#include "device.h"#include "can.h"#include "sysctl.h"#include "gpio.h"//#include "f28004x_gpio.h"s

//CAN变量移植

#define MSG_DATA_LENGTH 4volatile unsigned long msgCount = 0;// Main

uint16_t temp_txMsgData[2],temp_rxMsgData[2];uint16_t txMsgData[4], rxMsgData[4];

//void initCLA( void );//变量定义

Uint32 Task_Mode = 0;Uint32 Load_Dram_Num=0;Uint32 Fram_Check_Cnt=0;Uint32 Fram_Check_Result=0;

//从28037xd复制的宏定义#define TXCOUNT 100000#define MSG_DATA_LENGTH 8#define TX_MSG_OBJ_ID 1

//50hz-60hz 程序兼容添加 / 数据中转 /修改 hz 后断电生效float DETECT_N_ADD =0;float DETECT_N_INV_ADD =0;

float DETECT_N2_ADD =0;float DETECT_N2_INV_ADD =0;

float DETECT_N4_ADD =0;float DETECT_N4_INV_ADD =0;

float DETECT_N8_ADD =0;float DETECT_N8_INV_ADD =0;

//函数部分//Uint16 buffer[500]={0};float buffer_f[624]={0};Uint16 num=0,num1=0;

void main(void){

static int16 Temp1= 0,Temp2=0;

InitSysCtrl(); //初始化系统时钟 InitPieCtrl(); //初始化PIE,clear PIE InitGpio(); //初始化GPIO

GPIO_SetupPinMux(DEVICE_GPIO_PIN_LED1, GPIO_MUX_CPU1, 0); GPIO_SetupPinOptions(DEVICE_GPIO_PIN_LED1, GPIO_OUTPUT, GPIO_PUSHPULL);

SCI_INIT(); //SCI 初始化配置 //initCLA(); IER = 0x0000; //CPU级中断失能 IFR = 0x0000; //清除CPU级中断标志 InitPieVectTable(); //初始化向量表

DINT; //关闭中断 PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //Enable the PIE PieCtrlRegs.PIEACK.all = 0xFFFF; EALLOW; PieVectTable.EPWM1_INT = &EPWM1_ISR; //Write the ISR vector EDIS; PieCtrlRegs.PIEIER3.bit.INTx1 = 1; //PIEIERx bit IER |= M_INT3; //Set the CPU IER @group 3

GPIO_setPinConfig(DEVICE_GPIO_CFG_CANRXA); GPIO_setPinConfig(DEVICE_GPIO_CFG_CANTXA); //GPIO_setPinConfig(DEVICE_GPIO_CFG_CANRXB); //GPIO_setPinConfig(DEVICE_GPIO_CFG_CANTXB);

CAN_initModule(CANA_BASE); CAN_setBitRate(CANA_BASE, DEVICE_SYSCLK_FREQ, 500000, 16);/* InitCpuTimers(); // 15.6K → 64 ConfigCpuTimer(&CpuTimer1, 100, 150); CpuTimer1Regs.TCR.all = 0x4000;*/ EPWM_INIT_GPIO(); EPWM_INIT_func(); PwmEnable(); //InitSPI(); //需要确认 //InitSPIB(); //需要确认

Control_Init(); //控制参数初始化

EINT; //Enable interrupts globally ERTM; //CAN_enableTestMode(CANA_BASE, CAN_TEST_EXL);

//20210730从28037xd移植过来的发送程序

CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID, 0x18102701, CAN_MSG_FRAME_EXT, CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS, MSG_DATA_LENGTH);

// // Initialize the transmit message object data buffer to be sent // txMsgData[0] = 0x01; txMsgData[1] = 0x23; txMsgData[2] = 0x45; txMsgData[3] = 0x67; //txMsgData[4] = 0x89; //txMsgData[5] = 0xAB; //txMsgData[6] = 0xCD; //txMsgData[7] = 0xEF;

// // Start CAN module A operations // CAN_startModule(CANA_BASE);

// // Transmit messages from CAN-A // while(1) { CAN_sendMessage(CANA_BASE, TX_MSG_OBJ_ID, MSG_DATA_LENGTH, txMsgData);

// // Poll TxOk bit in CAN_ES register to check completion of transmission // txMsgData[0] += 0x01; txMsgData[1] += 0x01; if(txMsgData[0] > 0xFF) { txMsgData[0] = 0; } if(txMsgData[1] > 0xFF) { txMsgData[1] = 0; }

while(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_TXOK)) != CAN_ES_TXOK) {

} } // // Stop application // asm(" ESTOP0"); }

GPIO我修改了成32、33,然后我自己也看一下是什么问题。非常感谢您的帮助!

,

shipeng huang:

你好不知道您的程序测试的怎么样了?

,

Susan Yang:

我手边的USB-CAN不太好用,我还在继续测试

,

Susan Yang:

建议您将CAN功能单独拿出来进行测试

,

shipeng huang:

你好我是单独测试can功能的其他的只是存放在里面,

现在找到的问题就是卡在这里 while(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_TXOK)) != CAN_ES_TXOK) { }

can_ctl 的SIE没有使能,不知道28377S是怎么弄的是不是也没有使能。

,

Susan Yang:

shipeng huang 说:现在找到的问题就是卡在这里 while(((HWREGH(CANA_BASE + CAN_O_ES) & CAN_ES_TXOK)) != CAN_ES_TXOK)

就是说明发送没有成功,CAN_ES_TXOK不置位

,

Susan Yang:

,

shipeng huang:

您好:你这个有什么用呢?现在是程序跑不通不是接口跑不通。能说一下程序的原因么,不知道您测试了没?测试结果怎么样?

,

shipeng huang:

这个问题已经卡了1周左右的时间了,这样也不是办法。麻烦您能不能想办法帮忙就解决掉。

,

shipeng huang:

能不能麻烦您如果您没有USBCAN ,您可以用2块卡发版测试一下么?我只是想知道您的280049是不是好用的?

,

Susan Yang:

我们将最后统一在最新帖内回复

https://e2echina.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/207511/tms320f280049c 

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280049C: 程序移植
分享到: 更多 (0)

© 2025 TI中文支持网   网站地图 鲁ICP备2022002796号-1