本文摘要:本文章介绍如何使用NXP官方软件S32KDS中的flexcan组件(RxFIFO+中断)

开发平台:S32 Design Studio for ARM Version 2.2

SDK版本:S32_SDK_S32K1xx_RTM_3.0.0

使用芯片:S32K148

注:本文讲述CAN使用Rx FIFO功能中断方式实现无过滤CAN报文接收,DMA方式见这篇文章!

S32K的flexcan组件使用(RxFIFO+DMA)_我是阿衰的博客-CSDN博客

组件例程免费下载方式在文末!!!

1. 配置CAN所使用的引脚

2. 添加flexcan组件到工程(使用多个CAN就添加多个)

3. 打开对应的flexcan配置页面

4. 根据所需进行配置(这里介绍使用RxFIFO功能中断方式)

5. 配置好参数后点击如下图按钮或选项即可将配置数据更新至代码

6. 在代码中加入CAN初始化的代码即可使用CAN

// 自定义数据缓存结构体
typedef struct {uint16_t CAN_ID;uint8_t CAN_DATA[8];
}CANDataStruct;
// CAN接收数据结构体
CANDataStruct CANrecMsg1;
CANDataStruct CANrecMsg2;
// 配置RxFIFO接收必须使用该结构体声明的变量
static flexcan_msgbuff_t recvMsg1;
static flexcan_msgbuff_t recvMsg2;
// CAN0初始化
void CAN0_Init(void)
{FLEXCAN_DRV_Init(INST_CANCOM1, &canCom1_State, &canCom1_InitConfig0);FLEXCAN_DRV_SetRxFifoGlobalMask(INST_CANCOM1, FLEXCAN_RX_FIFO_ID_FORMAT_A, 0);FLEXCAN_DRV_InstallEventCallback(INST_CANCOM1, canRxCallback, NULL);// 开启RxFIFO接收 之后在接收中断函数中加入此函数实现不间断接收FLEXCAN_DRV_RxFifo(INST_CANCOM1, &recvMsg1);
}
// CAN1初始化
void CAN1_Init(void)
{FLEXCAN_DRV_Init(INST_CANCOM2, &canCom2_State, &canCom2_InitConfig0);FLEXCAN_DRV_SetRxFifoGlobalMask(INST_CANCOM1, FLEXCAN_RX_FIFO_ID_FORMAT_A, 0);FLEXCAN_DRV_InstallEventCallback(INST_CANCOM2, canRxCallback, NULL);FLEXCAN_DRV_RxFifo(INST_CANCOM2, &recvMsg2);
}
// CAN接收中断回调函数
void canRxCallback(uint8_t instance, flexcan_event_type_t eventType,uint32_t buffIdx, flexcan_state_t *flexcanState)
{// RxFIFO接收完成if(eventType == FLEXCAN_EVENT_RXFIFO_COMPLETE) {// CAN0接收if(instance == INST_CANCOM1){CANrecMsg1.CAN_ID = recvMsg1.msgId;memcpy(CANrecMsg1.CAN_DATA, recvMsg1.data, 8);// 每次接收完成需要再设置接收,所以将此函数放在这里就可以不间断接收FLEXCAN_DRV_RxFifo(INST_CANCOM1, &recvMsg1);} // CAN1接收else if(instance == INST_CANCOM2){CANrecMsg2.CAN_ID = recvMsg2.msgId;memcpy(CANrecMsg2.CAN_DATA, recvMsg2.data, 8);FLEXCAN_DRV_RxFifo(INST_CANCOM2, &recvMsg2);}}
}

7. CAN发送使用该函数

// CAN发送时要使用到的  意为 标准帧 8byte 数据帧
flexcan_data_info_t can1_data_std_info = {.msg_id_type = FLEXCAN_MSG_ID_STD,.data_length = 8U,.is_remote = false
};uint8_t Tx[8] = {0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};// 通过 CAN0 邮箱10 以默认配置 发送 ID是0x111 数据为0,0x1,0x2,0x3,0x4,0x5,0x6,0x7的报文
FLEXCAN_DRV_Send(INST_CANCOM1, 10, &can1_data_std_info, 0x111, Tx);

组件例程下载地址:

https://download.csdn.net/download/m0_50669075/85034829

S32K148更多例程和源码以及最新内容下载地址:

nxp_s32k148_template: 使用NXP的S32KDS软件基于S32_SDK_S32K1xx_RTM_3.0.0编写的的S32K148各组件测试例程,亲测可用,带有注释,适用于S32K14X系列的芯片。 (gitee.com)

END

S32K的flexcan组件使用(RxFIFO+中断)相关推荐

  1. S32K的flexcan组件使用(RxFIFO+DMA)

    本文摘要:本文章介绍如何使用NXP官方软件S32KDS中的flexcan组件(RxFIFO+DMA) 开发平台:S32 Design Studio for ARM Version 2.2 SDK版本: ...

  2. S32K的lin组件使用(不用LDF配置LIN)

    本文摘要:本文章介绍如何使用NXP官方软件S32KDS中的lin组件(不使用LDF文件配置) 开发平台:S32 Design Studio for ARM Version 2.2 SDK版本:S32_ ...

  3. S32K的lpit组件使用(通用定时器)

    本文摘要:本文章介绍如何使用NXP官方软件S32KDS中的lpit组件(通用定时器) 开发平台:S32 Design Studio for ARM Version 2.2 SDK版本:S32_SDK_ ...

  4. S32K的LinStack组件使用(LDF配置LIN)

    本文摘要:本文章介绍如何使用NXP官方软件S32KDS中的LinStack组件 开发平台:S32 Design Studio for ARM Version 2.2 SDK版本:S32_SDK_S32 ...

  5. S32K的wdog组件使用(看门狗)

    本文摘要:本文章介绍如何使用NXP官方软件S32KDS中的wdog组件(看门狗) 开发平台:S32 Design Studio for ARM Version 2.2 SDK版本:S32_SDK_S3 ...

  6. S32K的pwm_pal组件使用

    本文摘要:本文章介绍如何使用NXP官方软件S32KDS中的pwm_pal组件 开发平台:S32 Design Studio for ARM Version 2.2 SDK版本:S32_SDK_S32K ...

  7. S32K的lpuart组件使用(串口)

    本文摘要:本文章介绍如何使用NXP官方软件S32KDS中的lpuart(串口)组件 开发平台:S32 Design Studio for ARM Version 2.2 SDK版本:S32_SDK_S ...

  8. S32K的bootloader CAN总线实现

    本文摘要:本文章介绍如何使用NXP官方软件S32KDS实现CAN总线上的bootloader 开发平台:S32 Design Studio for ARM Version 2.2 SDK版本:S32_ ...

  9. S32K148实现250K转500K波特率的网关

    首先感谢几位大神的源代码和优秀的文章: 1.阿衰0110 文章和代码:S32K的flexcan组件使用(RxFIFO+中断) S32K的flexcan组件使用(RxFIFO+中断)_阿衰0110的博客 ...

最新文章

  1. 10门必看的机器学习免费课程
  2. css深入浅出 宽度和高度
  3. 强化学习(六)时序差分在线控制算法SARSA
  4. python3标准库书怎么样_Python3标准库:filecmp比较文件
  5. mysql单库tps_MySQL数据库三个关键性能指标--TPS\QPS\IOPS
  6. pta函数统计素数并求和_关于求和的4种函数公式,此文讲透了,尤其是第4种,绝对的高效...
  7. 文献记录(part32)--Face spoofing detection under super-realistic 3D wax face attacks
  8. Date类+DateFormat
  9. 程序中 设置jvm 参数_高效应用程序的7个JVM参数
  10. 12无法使用otg_12个冷知识:或许只能看看而无法使用,但却真实存在着
  11. 计算机主板开机接线端子,装机必看,机箱前置面板接线向导,不怕再接错线了...
  12. tomcat-servlet-AJAX最基础例子
  13. 初学XPath,其实很简单
  14. Linux chapter test 10
  15. cocos2d-html5 sprite打印宽高都为0的问题
  16. zend studio php 错误提示,Zend Studio错误总结,zendstudio总结_PHP教程
  17. 路由器、AC、AP及POE交换机理解
  18. 许又声发表新春贺辞:潮涌东方 携手奋进
  19. 计算机考研代码854,哈工大计算机考研考纲854计算机基础
  20. 设置Chrome忽略网站证书错误

热门文章

  1. Ubuntu 16.04安装VLC播放器,替代系统默认播放器
  2. 通过ONES刻录ISO镜像
  3. Lesson 9 A cold welcome 冷遇
  4. Performance of Cell-Free Massive MIMO with Rician Fading and Phase Shifts (2)
  5. ScheduledExecutorService的scheduleAtFixedRate分析
  6. 买本必看!!全价位游戏笔记本推荐(1月4日更新)
  7. fabric协议规范
  8. docker redis配置源文件
  9. 小程序源码:2022虎年新UI春节送祝福
  10. 持续集成工具是怎样工作的?