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

280049的can接口需要复位后正常

调试280049的can接口时遇到这样一个问题:

使用例程can_ex1_loopback,去掉内部回环测试模式和中断,只进行收发数据。

第一次插上usb仿真器,同时给开发板供电,启动方式为flash启动,然后使用ccs环境进行仿真,can运行不正常,无法收发数据,程序在运行到CAN_sendMessage(CANA_BASE, 1, MSG_DATA_LENGTH, txMsgData);时跑飞,跟进去是在ASSERT(SysCtl_getClock(DEVICE_OSCSRC_FREQ) == DEVICE_SYSCLK_FREQ);时跑飞。

复位板卡,不管是用按键复位还是重新插拨usb,再次运行程序,则can的收发恢复,程序正常运行。

正常运行后,只要不拔usb,用按键复位均能正常运行。但是如果拔usb,则又不能运行。

 

程序代码为:

 #include "driverlib.h"

#include "device.h"

#define MSG_DATA_LENGTH    2

volatileunsignedlong msgCount = 0;

voidmain(void)

{

    uint16_t txMsgData[2], rxMsgData[2];

    Device_init();

    Device_initGPIO();

   GPIO_setPinConfig(DEVICE_GPIO_CFG_CANRXA);

   GPIO_setPinConfig(DEVICE_GPIO_CFG_CANTXA);

   CAN_initModule(CANA_BASE);

   CAN_setBitRate(CANA_BASE, DEVICE_SYSCLK_FREQ, 125000, 16);

   CAN_setupMessageObject(CANA_BASE, 1, 0x1,CAN_MSG_FRAME_EXT,

                          CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_NO_FLAGS,

                           MSG_DATA_LENGTH);

   CAN_setupMessageObject(CANA_BASE, 2, 0x1,CAN_MSG_FRAME_EXT,

                          CAN_MSG_OBJ_TYPE_RX, 0, CAN_MSG_OBJ_NO_FLAGS,

                           MSG_DATA_LENGTH);

    CAN_startModule(CANA_BASE);   

    txMsgData[0] = 0x01;

    txMsgData[1] = 0x02;

    *(uint16_t *)rxMsgData = 0;

 

   for(;;)

    {

       CAN_sendMessage(CANA_BASE, 1, MSG_DATA_LENGTH, txMsgData);

 

        DEVICE_DELAY_US(500000);

        txMsgData[0] += 0x01;

        txMsgData[1] += 0x01;

       

       if(txMsgData[0] > 0xFF)

        {

            txMsgData[0] = 0;

        }

       if(txMsgData[1] > 0xFF)

        {

            txMsgData[1] = 0;

        }       

    }

}

Susan Yang:请问您现在使用的是哪个开发板?您所描述的“第一次插上usb仿真器,同时给开发板供电,启动方式为flash启动” 具体是如何供电的?

赞(0)
未经允许不得转载:TI中文支持网 » 280049的can接口需要复位后正常
分享到: 更多 (0)