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.

TMS320F280049C: 关于同样的初始化函数,我用CANA时我的设备可以识别,使用CANB就无法识别了

Part Number: TMS320F280049C

CANA的初始化函数

void HAL_setupCAN()
{
    //配置IO 30、31引脚
    GPIO_setPinConfig(CANRXA_GPIO_CFG);
    GPIO_setPinConfig(CANTXA_GPIO_CFG);
    // 初始化CAN控制器
    CAN_initModule(CANA_BASE);
    // 设置CAN,使用CANA,系统时钟,波特率1MHz,位时序20Tq
    CAN_setBitRate(CANA_BASE, DEVICE_SYSCLK_FREQ, 1000000, 20);
    // 使能CAN中断
    CAN_enableInterrupt(CANA_BASE, CAN_INT_ERROR|CAN_INT_STATUS|CAN_INT_IE0);
    // 配置CANA0中断
    Interrupt_register(INT_CANA0, &canISR);
    // 使能CANA0中断
    Interrupt_enable(INT_CANA0);
    CAN_enableGlobalInterrupt(CANA_BASE, CAN_GLOBAL_INT_CANINT0);
    //
    // Initialize the transmit message object used for sending CAN messages.
    // Message Object Parameters:
    //      Message Object ID Number: 邮箱ID
    //      Message Identifier: CAN_ID
    //      Message Frame: 数标准格式
    //      Message Type: 非远程发送
    //      Message ID Mask: 无消息拓展
    //      Message Object Flags: 发送中断标志位使能
    //      Message Data Length: 数据长度8字节
    //
    CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID, CAN_ID, CAN_MSG_FRAME_STD,
                           CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE,
                           Can_DATA_LENGTH);
    //
    // Initialize the receive message object used for receiving CAN messages.
    // Message Object Parameters:
    //      Message Object ID Number: 邮箱ID
    //      Message Identifier: CAN_ID
    //      Message Frame: 数据标准格式
    //      Message Type: 非远程接收
    //      Message ID Mask: 无消息拓展
    //      Message Object Flags: 接收中断使能
    //      Message Data Length: 8 Bytes
    //
    CAN_setupMessageObject(CANA_BASE, RX_MSG_OBJ_ID, CAN_ID, CAN_MSG_FRAME_STD,
                           CAN_MSG_OBJ_TYPE_RX, 0, CAN_MSG_OBJ_RX_INT_ENABLE,
                           Can_DATA_LENGTH);

    // 启动CAN模块
    CAN_startModule(CANA_BASE);
}

CANB的初始化函数

void HAL_setupCANB(void)
{
    //配置IO 30、31引脚
    GPIO_setPinConfig(CANRXB_GPIO_CFG);//GPIO_17_CANRXB
    GPIO_setPinConfig(CANTXB_GPIO_CFG);//GPIO_16_CANTXB
    // 初始化CAN控制器
    CAN_initModule(CANB_BASE);
    // 设置CAN,使用CANA,系统时钟,波特率1MHz,位时序20Tq
    CAN_setBitRate(CANB_BASE, DEVICE_SYSCLK_FREQ, 1000000, 20);
    // 使能CAN中断
    CAN_enableInterrupt(CANB_BASE, CAN_INT_ERROR|CAN_INT_STATUS|CAN_INT_IE0);
    // 配置CANA0中断
    Interrupt_register(INT_CANB0, &canBISR);
    // 使能CANA0中断
    Interrupt_enable(INT_CANB0);
    CAN_enableGlobalInterrupt(CANB_BASE, CAN_GLOBAL_INT_CANINT0);
    //
    // Initialize the transmit message object used for sending CAN messages.
    // Message Object Parameters:
    //      Message Object ID Number: 邮箱ID
    //      Message Identifier: CAN_ID
    //      Message Frame: 数标准格式
    //      Message Type: 非远程发送
    //      Message ID Mask: 无消息拓展
    //      Message Object Flags: 发送中断标志位使能
    //      Message Data Length: 数据长度8字节
    //
    CAN_setupMessageObject(CANB_BASE, TXB_MSG_OBJ_ID, CAN_ID, CAN_MSG_FRAME_STD,
                           CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE,
                           Can_DATA_LENGTH);
    //
    // Initialize the receive message object used for receiving CAN messages.
    // Message Object Parameters:
    //      Message Object ID Number: 邮箱ID
    //      Message Identifier: CAN_ID
    //      Message Frame: 数据标准格式
    //      Message Type: 非远程接收
    //      Message ID Mask: 无消息拓展
    //      Message Object Flags: 接收中断使能
    //      Message Data Length: 8 Bytes
    //
    CAN_setupMessageObject(CANB_BASE, RXB_MSG_OBJ_ID, CAN_ID, CAN_MSG_FRAME_STD,
                           CAN_MSG_OBJ_TYPE_RX, 0, CAN_MSG_OBJ_RX_INT_ENABLE,
                           Can_DATA_LENGTH);

    // 启动CAN模块
    CAN_startModule(CANB_BASE);
}

接入CANA时

接入CANB时