在线时间3 小时
UID3684670
注册时间2020-11-18
NXP金币0
该用户从未签到
新手上路
- 积分
- 34
- 最后登录
- 2021-1-22
|
各位大侠,
测试MKE06的板子时,遇到个问题,CAN通信可以发送报文出来(扩展和标准帧都行),RXFG也置位了,缓存也能看到收到新数据了,但是却进不了收中断,请各位大神帮忙看看什么问题,谢谢!
/* FUNCTION ************************************************************************************************************
*
* Function Name : InitMSCAN
* Description : Configures CAN.
*
* END ****************************************************************************************************************/
void InitMSCAN(void)
{
PORT_SetPinSelect(kPORT_MSCAN, kPORT_MSCAN_TXPTE7_RXPTH2);/* pin E7,H2 is configured as CAN0_RX, CAN0_TX */
MSCAN_GetDefaultConfig(&mscanConfig);
mscanConfig.enableLoopBack = false;
mscanConfig.enableListen = false;
/* Acceptance filter configuration. */
mscanConfig.filterConfig.u32IDAR0 = MSCAN_RX_MB_EXT_MASK(NODE_ID1);
mscanConfig.filterConfig.u32IDAR1 = MSCAN_RX_MB_EXT_MASK(NODE_ID1);
// mscanConfig.filterConfig.u32IDMR0 = MSCAN_IDMR0;
// mscanConfig.filterConfig.u32IDMR1 = MSCAN_IDMR1;
mscanConfig.filterConfig.u32IDMR0 = 0xFFFF;
mscanConfig.filterConfig.u32IDMR1 = 0xFFFF;
/* Initialize MSCAN module. */
MSCAN_Init(MSCAN, &mscanConfig, MSCAN_CLK_FREQ);
/* Enable Rx Buffer interrupt. */
MSCAN_EnableRxInterrupts(MSCAN, kMSCAN_RxFullInterruptEnable | kMSCAN_OverrunInterruptEnable);
//MSCAN_EnableRxInterrupts(MSCAN, kMSCAN_RxFullInterruptEnable);
EnableIRQ(MSCAN_1_IRQn);
//MSCAN_ClearRxBufferFullFlag(MSCAN);
}
/* FUNCTION ************************************************************************************************************
*
* Function Name : CAN interupt
* Description : receive interupt(find interupt name in start.s)
*
* END ****************************************************************************************************************/
void MSCAN_1_IRQHandler(void)
{
test_num++;
/* If new data arrived. */
if (MSCAN_GetRxBufferFullFlag(MSCAN))
{
MSCAN_ReadRxMb(MSCAN, &rxFrame);
__ASM("NOP");
MSCAN_ClearRxBufferFullFlag(MSCAN);
rxComplete = true;
}
SDK_ISR_EXIT_BARRIER;
}
/* FUNCTION ************************************************************************************************************
*
* Function Name : CAN send frame
* Description :
*
* END ****************************************************************************************************************/
void SendMSCANFrame(void)
{
/* Prepare Tx Frame for sending. */
txFrame.ID_Type.ID = 0x72;
txFrame.format = kMSCAN_FrameFormatStandard;
txFrame.type = kMSCAN_FrameTypeData;
txFrame.DLR = 8;
txFrame.dataByte0 = 0x11;
txFrame.dataByte1 = 0x22;
txFrame.dataByte2 = 0x33;
txFrame.dataByte3 = 0x44;
txFrame.dataByte4 = 0x55;
txFrame.dataByte5 = 0x66;
txFrame.dataByte6 = 0x77;
txFrame.dataByte7 = 0x88;
/* Send data through Tx Buffer using polling function. */
//MSCAN_TransferSendBlocking(MSCAN, &txFrame);
MSCAN_WriteTxMb(MSCAN, &txFrame);
}
|
|