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
TI中文支持网






