当前位置:   article > 正文

S32K144 FlexCAN驱动SDK使用_s32k144-flexcan-rxfifo-dma-nonsdk

s32k144-flexcan-rxfifo-dma-nonsdk

想利用NXP的S32K144MCU的FlexCAN模块实现一个简单的周期性发送CAN报文的功能,根据NXP官方提供的SDK。

1.首先需要对flexcan模块进行chus初始化,调用 FLEXCAN_DRV_Init(INST_CANCOM1, &canCom1_State, &canCom1_InitConfig0);

2.配置发信邮箱FLEXCAN_DRV_ConfigTxMb(INST_CANCOM1, 1, &dataInfo, 0x428);

3.打开中断 INT_SYS_EnableIRQ(CAN0_ORed_0_15_MB_IRQn);

4.调用 FLEXCAN_DRV_Send(INST_CANCOM1, 1, &dataInfo, 0x428, report_data);

接上cantest,发现无报文输出。检查配置,原demo程序中提供的配置代码:

const flexcan_user_config_t canCom1_InitConfig0 = {
    .fd_enable = false,
    .pe_clock = FLEXCAN_CLK_SOURCE_SOSCDIV2,
    .max_num_mb = 2,
    .num_id_filters = FLEXCAN_RX_FIFO_ID_FILTERS_8,
    .is_rx_fifo_needed = false,
    .flexcanMode = FLEXCAN_NORMAL_MODE,
    .payload = FLEXCAN_PAYLOAD_SIZE_8,
    .bitrate = {
        .propSeg = 7,
        .phaseSeg1 = 4,
        .phaseSeg2 = 1,
        .preDivider = 5,
        .rJumpwidth = 1
    },
    .bitrate_cbt = {
        .propSeg = 7,
        .phaseSeg1 = 4,
        .phaseSeg2 = 1,
        .preDivider = 5,
        .rJumpwidth = 1
    },
    .transfer_type = FLEXCAN_RXFIFO_USING_INTERRUPTS,
    .rxFifoDMAChannel = 0U
};

查看S32K144RM,时钟源根据平台有所不同,将.pe_clock换成FLEXCAN_CLK_SOURCE_SYS,直接实现预期功能.

我的CAN收发器为UJA1044T,不适用CANFD功能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/144497
推荐阅读
相关标签
  

闽ICP备14008679号