【使用C++开发MCU】05-CAN实例之NXP S32K1 FlexCAN模块

AUTOSAR知识点Com(零):Com栈零碎知识理解记录 有些信息是零碎抽象的,记录一下自己的理解以及在网上看到对自己有启发的句子。 阅读详情
AI摘要

本文详细介绍了NXP S32K1系列MCU的FlexCAN模块,包括协议引擎、控制器主机接口和总线接口单元的结构,以及操作模式、MBs结构、Rx FIFO、发送和接收过程。FlexCAN遵循ISO 11898-1和CAN 2.0 B协议,适用于高效开发CAN/CAN FD应用。

C++开发MCU 博客专栏

概述

本文总结归纳NXP S32K1系列的FlexCAN模块,概括其特征,讲解其MBs(message buffers)及其他处理、配置过程,以便更高效的开发CAN、CAN FD相关应用。

FlexCAN是NXP实现了ISO 11898-1 standard and CAN 2.0 B 协议的CAN控制器模块IP,不仅存在于S32K1系列MCU上,也存在于S32K3等MCU上,不同型号含有不同数量的FlexCAN实例数,其MailBox数量也不同。S32K1一般含有1-3个FlexCAN,不全支持CAN FD(up to 8 Mb/s),一般含有16,32或54个消息邮箱。

FlexCAN模块框图

FlexCAN Block

协议引擎Protocol Engine (PE)

PE用于管理CAN总线上的串行通讯: 请求RAM访问用于接收、发送消息帧;验证接收的消息; 运行错误处理; 探测CAN FD帧。

控制器主机接口Controller Host Interface (CHI)

CHI用于管理接收、发送的消息缓存( message buffer),负责仲裁和ID匹配。

总线接口单元Bus Interface Unit (BIU)

BIU用于控制访问内部总线,建立与CPU和其他模块的联系。包括时钟、寻址、数据总线、中断、DMA的访问都是通过BIU.

操作模式

  • Normal mode
  • Freeze mode
    配置其他寄存器时常需要进入此模式,此时,没有发送、接收,总线同步丢失。
  • Loop-Back mode
    用于自发自收。RX pin输入被忽略,TX pin隐性。
  • Listen-Only mode
    发送失能,错误计数器冻结,模块处于CAN Error Passive mode。
  • CAN FD Active mode
    FD没有RX FIFO、Rx FIFO DMA和Pretended network support。
  • Stop mode
    模块自生处于 inactive state,时钟可断掉。
  • Pretended Network mode
    CHI 时钟断掉,PE时钟保持,Rx接收处理依旧可以过滤将到来的消息。

MBs结构

寄存器占128Bytes, 地址偏移从0x80 to 0x27F 分配给32个128位(4字)的MBs消息邮箱。
64个数据的MB结构
上图是含有64个载荷数据时的MS结构。头部固定8Bytes,根据CAN消息的载荷 8, 16, 32, or 64,每个消息邮箱被分配组织为 16, 24, 40, or 72 bytes。

地址偏移从0x80 to 0x27F 分配给32个128位(4字)的MBs消息邮箱–>对于8bytes载荷的CAN帧,正好有32个MBs,载荷增多,MBs个数也就减少了。

载荷 MBs个数
8 32
16 21
32 12
64 7

Rx FIFO结构

当FIFO使能时,从0x80 to 0xDC (MBs 0–5)区域被R

NXP 系列:S32K 系列 S32K 系列单片机凭借其高性能、低功耗和高可靠性,广泛应用于汽车和工业领域。通过合理配置和使用其丰富的外设接口、电源管理模式和安全机制,可以开发出高效、可靠的嵌入式系统。希望本文档能为您的 S32K 系列单片机开发提供帮助。以上内容涵盖了 S32K 系列单片机的基础知识和应用示例,希望对您的学习和开发工作有所帮助。如果您有任何问题或需要进一步的指导,请随时联系 NXP 官方支持或查阅相关技术文档。 阅读详情

相关推荐

S32KSDKCAN组件详解-CANPAL-FLEXCAN,学习S32K系列CAN组件的使用和原理

S32KSDKCAN组件详解-CANPAL-FLEXCAN,学习S32K系列CAN组件的使用和原理

Halcon异常检测训练避坑指南:如何避免GPU内存溢出和样本不足问题

本文针对Halcon深度学习异常检测训练中常见的GPU内存溢出和样本不足两大难题,提供了从原理分析到实战解决方案的深度指南。通过调整批次大小、图像尺寸、使用梯度累积等技巧有效管理显存,并利用针对性数据增强与人工合成策略破解小样本困境,帮助开发者构建稳定高效的训练流程。

river的博客 215

YOLOv5+Astra Pro Plus深度相机:手把手教你实现实时目标检测(附ROS配置技巧)

本文详细介绍了如何将YOLOv5目标检测算法与Astra Pro Plus深度相机结合,构建实时目标检测系统。内容涵盖从硬件选型、环境搭建、ROS配置到YOLOv5部署与深度信息融合的完整流程,并分享了性能优化、避障算法等实战技巧,帮助开发者在机器人视觉等场景中快速实现智能感知应用。

weixin_28292761的博客 389

扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议

本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。

weixin_29313239的博客 1005

基于simulink的多能源系统协同控制的复杂场景实例:氢燃料电池+锂电池混合动力电动汽车能量管理仿真

本文介绍了基于Simulink的氢燃料电池与锂电池混合动力电动汽车能量管理系统的建模与仿真方法。系统包含驾驶循环输入、氢燃料电池、锂电池、能量管理和电机驱动等模块,通过Simulink实现各模块的协同控制。文章详细说明了从模型创建到性能评估的完整流程,包括驾驶循环输入设置、燃料电池和锂电池子系统建模、能量管理策略设计等关键步骤。该仿真模型可验证不同工况下的系统响应和能量利用效率,为优化混合动力汽车的能量管理策略提供有效工具。通过引入更复杂的物理细节和环境因素,可进一步提升模型的实用性和准确性。

xiaoheshang_123的博客 368

AS7341可见光谱传感器原理图设计,已量产(光线传感器)

最近在做便携式环境光光谱检测项目时,我们基于 ams 的 AS7341 搭了一套硬件电路 —— 这颗芯片算是业内新一代的光谱传感 IC,8 个可见光通道 + NIR + 闪烁检测的配置,加上 6 路并行 16 位 ADC,数据吞吐能力确实够顶。今天就拆解下这个模块的硬件设计细节,聊聊实际做板时的那些考量点。

不脱发的程序猿 642

STM32入门教程:自动门控制

通过这个简单的示例,我们展示了如何使用STM32微控制器来实现一个简单的自动门控制系统。如果有物体靠近门口,我们会改变doorState的值,并使用controlServoMotor函数来控制舵机电机的转动。具体的引脚连接可以根据您的具体硬件来定,例如将红外传感器的输出引脚连接到GPIOA_PIN0引脚。同样,具体的引脚连接可以根据您的具体硬件来定,例如将舵机的控制引脚连接到GPIOA_PIN1引脚。首先,我们需要包含必要的库文件和引用。然后,我们需要定义一些函数来处理红外传感器的输入和舵机电机的输出。

m0_75244442的博客 578

Kappa函数:测量一致性并计算置信区间的R语言包

Kappa函数是一种常用的统计量,用于衡量两个评估者之间的一致性。在R语言中,有一个名为"vcd"的包提供了计算Kappa函数以及相应的置信区间的功能。本文将介绍如何使用"vcd"包来计算Kappa函数的值,并进一步计算置信区间。Kappa函数的值介于-1和1之间,值越接近1表示评估者之间的一致性越高,值越接近-1表示评估者之间的一致性越低,值接近0表示评估者之间的一致性接近于随机。通过以上步骤,我们成功地使用R语言中的"vcd"包计算了Kappa函数的值和置信区间。接下来,我们可以使用"vcd"包中的。

2301_79331230的博客 1875

UE5 Niagara基础知识讲解

在UE5版本中,Niagara粒子系统引入了许多可添加的模块,分别用于控制发射器的生成和更新、粒子的生成和更新以及渲染效果。本文采用虚幻5.2.1版本,以图文方式对Niagara基础知识进行讲解。

一碗清深的博客 2470

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 【使用C++开发MCU】04-CAN实例之CAN FD协议快速入门
下一篇: 【使用C++开发MCU】08-CAN实例之C++实现CAN FD收发
mcucpp
博客等级 码龄12年 56粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值