查看: 1422|回复: 4

[讨论] MKE06 MSCAN通讯问题

[复制链接]

该用户从未签到

2

主题

6

帖子

0

新手上路

Rank: 1

积分
34
最后登录
2021-1-22
发表于 2020-11-18 21:22:43 | 显示全部楼层 |阅读模式
各位大侠,
         测试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);
}

回复

使用道具 举报

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
19947
最后登录
2024-4-19
发表于 2020-11-19 09:32:14 | 显示全部楼层
查一查接收过滤方面的内容
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

6

帖子

0

新手上路

Rank: 1

积分
34
最后登录
2021-1-22
 楼主| 发表于 2020-11-19 10:43:30 | 显示全部楼层
小恩GG 发表于 2020-11-19 09:32
查一查接收过滤方面的内容

你好,滤波配过了,IDMR寄存器中的所有位都配成“忽略(无关)”了。

mscanConfig.filterConfig.u32IDMR0 = 0xFFFF;
mscanConfig.filterConfig.u32IDMR1 = 0xFFFF;

typedef struct _mscan_idfilter_config
{
    mscan_id_filter_mode_t filterMode; /*!< MSCAN Identifier Acceptance Filter Mode */
    uint32_t u32IDAR0;                 /*!< MSCAN Identifier Acceptance Register n of First Bank */
    uint32_t u32IDAR1;                 /*!< MSCAN Identifier Acceptance Register n of Second Bank */
    uint32_t u32IDMR0;                 /*!< MSCAN Identifier Mask Register n of First Bank */
    uint32_t u32IDMR1;                 /*!< MSCAN Identifier Mask Register n of Second Bank */
} mscan_idfilter_config_t;

想不出还有什么地方会影响。
回复 支持 反对

使用道具 举报

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
19947
最后登录
2024-4-19
发表于 2020-11-19 10:46:40 | 显示全部楼层
collins1988 发表于 2020-11-19 10:43
你好,滤波配过了,IDMR寄存器中的所有位都配成“忽略(无关)”了。

mscanConfig.filterConfig.u32IDMR ...

按照例程先测loopback吧
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

6

帖子

0

新手上路

Rank: 1

积分
34
最后登录
2021-1-22
 楼主| 发表于 2020-11-19 11:15:28 | 显示全部楼层
小恩GG 发表于 2020-11-19 10:46
按照例程先测loopback吧

感谢,是我大意了。滤波器设置的不对。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-20 21:34 , Processed in 0.116736 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表