当前位置:   article > 正文

S32K344之FlexCAN_cbt bitrate

cbt bitrate

目录

前言

FlexCAN介绍

特点

方框图

时钟

工作模式

FLEXCAN内存分区

CANFD

MB结构

FlexCAN基本:传输、仲裁、移动、匹配和接收

传统CAN

普通(经典)CAN

普通CANFD

增强型CAN CANFD

CT组件

CT组件 FlexCAN

1、Name

2、Config Time Support

3、FlexCAN configurations

FlexCAN bitrate

FlexCAN CBT bitrate

回调函数以及FIFO配置

FlexCAN General

Timeout Configuration

开发注记:

关于邮箱和FIFO

文章:


前言

FlexCAN介绍

特点

  • 灵活的邮箱,可配置为存储0到8、16、32或64字节的数据长度。
  • 接收或发送结构未使用的RAM可以用作通用RAM空间。
  • 用于CAN FD的增强型FIFO,存储容量最多可容纳20个CAN FD帧和自动内部具有DMA支持的指针处理。
  • 可编程传输优先级方案:ID最低,缓冲区数最低,优先级最高。
  • CAN0中最大96 mbs,CAN1、2中最大64 mbs。(S32K3x4)。

方框图

时钟

 手册P910,时钟源有三个
1. AIPS_PLAT_CLK
2. FIRC_CLK
3. FXOSC_CLK 
CAN_PE_CLK 时钟源:(网上说 一般选1.比较精准)
1. AIPS_PLAT_CLK (typical 80Mhz)
2. FIRC_CLK (48Mhz)
3. FXOSC_CLK (8MHz ~ 40MHz)
时钟源经过分频才得到最后的 CAN_PE_CLK
所以,我的理解:FLEXCAN_n_PE_CLK 的n是分配的意思。
下图也说明了这一点: ,所以PE时钟是上诉三个时钟源之一的分频后的时钟 ,CHI时钟是AIPS_PLAT_CLK(应该是固定的)
搞清楚时钟源对后续的位定时等等配置有帮助。

工作模式

英文中文说明
Normal mode(user or supervisor)
正常模式一般用或者
Freeze mode 冻结模式冻结模式才可以修改参数
Loop back mode 回环模式自检
Listen only mode 仅听模式
CAN FD active modeCANFD激活模式激活FD
Low-power operation低功耗操作模式
Module disable mode模块禁用模式在模块禁用模式下,该模块会向CAN协议引擎和控制器主机接口子模块发出禁用时钟的请求。

FLEXCAN内存分区

CANFD

Message Buffer 称为邮箱 MB
  • FlexCAN FD内存以块的形式划分

         --一共有 96(3个块,每个块32)x8字节的有效负载缓冲区

         --SoC可以实例化0-2个块

                         

  • 每个块由相当于32个16字节MB( 为何是16?因为8bit邮箱信息+8bit数据)(即512字节,0x200)的内存空间组成
  • 每个块都可以配置为具有定义大小的消息缓冲区(MB),以存储有效负载为8字节、16字节、32字节或64字节的消息。消息缓冲区数据大小区域位字段:FDCTRL[MBDSRn] = 0bxx
  • 一个块中的消息缓冲区的数量取决于有效负载的大小。每个块可以(通过软件)配置如下:

每个块有以下的MB个数(一共有3个块 0 1 2,所有总MB个数*3)

32个MBs 8字节载荷

21个MBs 16字节负载

12个MBs 32字节负载

7个MBs 64字节负载

MB结构

下图是具有64字节有效负载的消息缓冲区结构示例

前8字节(0x00-0x08)用于存储一些邮箱信息(FD帧之类的):表示了CAN规范(2.0版本B部分)中使用的扩展(29位标识符)和标准(11位标识符)帧。紧接着是64字节的数据。所以一个MB能存储具有一个ID的特定消息,以及时间戳、数据长度等等信息。且还具有以下特点:

  • 每个MB都可配置为Rx或Tx;
  • 基于ID优先级或本地优先级的Tx;
  • 每个Rx MB都具有单独的ID和掩码;

下图是64字节负载消息消息缓冲区(MB)的存储地址偏移值,可以看出一个块有21个64字节Mb

一个块512b,当一个块被分为21个MBs 16字节负载(或者其他),21*16=336,可以发现512b并没有用完,但是,官方说明:

关于8bit的邮箱信息描述如下:

FlexCAN基本:传输、仲裁、移动、匹配和接收

1.CAN2.0A:也称为标准CAN(Classical CAN),是最常见的CAN总线通信协议。它使用11位标识符(D)字段,并支持最高传输速率为1Mbps。
2.CAN2.0B:与CAN2.0A类以,但采用29位标识符(ID)字段,提供了更多的D编码空间。支持最高传输速率为1MbpS。

A B区别:

数据帧标识符:CAN2.0A的标识符长度为11位,而CAN2.0B的标识符长度为29位。因此,CAN2.0B可以支持更多的节点和更大的网络拓扑结构。
错误检测机制:CAN2.0A使用CRC(循环冗余校验)来检测错误,而CAN2.0B使用了更加复杂的错误检测和纠正机制,包括CRC、ACK(确认应答)和重传机制等,从而提高了数据传输的可靠性和稳定性。


3.CAN FD (Flexible Data Rate):CAN FD是一种升级版的CAN总线协议,它提供了更高的数据传输速率和更大的数据包容量。CAN FD支持传输速率高达8MbpS,并可实现更大的数据包大小。
 

CAN最大传输速率1Mbps,CAN-FD速率可变,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps。BRS位速率切换为,BRS位为0时CANFD速率保持恒定速率、BRS位为1时CANFD的数据段会被切换到高速率。

摘自官方培训PPT:

• CTRL1 should be the configured for classical CAN frame bit timing.
• CBT should be the extended bit timing for classical CAN frame.
• FBCBT stores the CAN bit timing variables used in the data phase of CAN FD messages when the FDCTRL[FDRATE] is set. The contents of this register are not affected by soft reset.
• When set CTRL2[BTE], CAN FD nominal bit timing is configured in ENCBT, data bit timing in EDCBT. FDCBT will be read as 0.
(第二条,应该为FDCBT)
CAN位定时(CBT)扩展了CTRL1中的CAN位定时变量的范围。增强的数据相位CAN位
定时(EDCBT)提供了第二组CAN位定时变量, 它们将应用于具有位速率开关( BRS)= 1 CAN FD 帧的数据相位。

传统CAN

普通(经典)CAN

• CTRL1 should be the configured for classical CAN frame bit timing.


普通CANFD

• CBT should be the extended bit timing for classical CAN frame.
• FDCBT stores the CAN bit timing variables used in the data phase of CAN FD messages when the FDCTRL[FDRATE] is set. The contents of this register are not affected by soft reset

增强型CAN CANFD

• When set CTRL2[BTE], CAN FD nominal bit timing is configured in ENCBT, data bit timing in EDCBT. FDCBT will be read as 0.

CT组件

CT组件 FlexCAN

1、Name

2、Config Time Support

3、FlexCAN configurations

  • FlexCAN Hardware Channel
  • Name:配置结构体的变量名

    使用CT配置工具,每个外设都会生成一个结构体,这个结构体用于初始化函数。如下:
    将FlexCAN_Config0传入FlexCAN初始化函数中即可完相关外设的初始化FlexCAN_Ip_Init(INST_FLEXCAN_0, &FlexCAN_State0, &FlexCAN_Config0);

  • Number Of MB:(消息缓冲区)数量
  • FlexCAN Rx FFO filters number
  • Enable Legacy RxFiFO
  • Enable FD Can:使能CAN FD
  • FlexCAN operation modes:CAN工作模式
  • Payload Size (bytes):有效负载数 ,传输的数据长度 普通CAN只有8字节,FD才有12字节以上
  • Rx FIFO Transfer Type
  • DMA ChannelUsed
  • Enable EnhancedCBT Can:使能增强型Can
  • Enable BitRate Switch:使能速率切换,CANFD才有
  • Can FD ISO
  • Auto Bus Off
  • Remote Request Store
  • TimeStamp Free Runing Timer SourceTimeStamp Timer SourceTimeStamp HR Capture Config
  • FlexCAN Protocol Clock:Clock CAN的时钟频率,要和CT——时钟中配置的一样,不一样按照时钟那里的配置。(这里是个坑,原以为这两地方应该会统一的,结果不是。感觉CT—外设模块里面的最多也就是给参数,算一下波特率,采样点给用户看,不知道后续的版本会不会统一)

FlexCAN bitrate

位速率配置。普通CAN只需要配置这(第一)个

  • Name
  • Synchronization segment
  • Propagation segment
  • Phase segment 1
  • Phase segment 2
  • Prescaler division factor
  • Resync jump width
  • Bitrate (Kbps)
  • Sampling point (%)

需要注意的是,CAN 位速率的每一个(时间段)选项的配置范围,根据使用情况而定。

FlexCAN CBT bitrate

同上,不过只有CANFD才有。

启用CAN FD后,用于配置CAN FD 的数据域,FlexCAN bitrate 则用于配置仲裁域,且速率不一样需要勾选Enable BitRate Switch。

回调函数以及FIFO配置

  • CallBack
  • Error CallBack
  • The number of enhanced ID filter elements
  • The number of enhanced extended IDfilter elements
  • The number of enhanced Rx FIFOwatermarks/The number of MessageBuffers Transferred by DMA
  • Enable/Disable the Enhanced Rx FIFOfeature

FlexCAN General

Timeout Configuration

开发注记:

关于邮箱和FIFO

1.两者共用一个RAM空间 注意不能重?

2.配置时:

好像每一个MB需要配置一次接收 FlexCAN_Ip_Receive

在中断里面也是,每次接收到can报文,要重新调用FlexCAN_Ip_Receive 再配置一次MB

至于原理,具体看源码:FlexCAN_Ip_Receive 源码里面对接收的数据存在哪里进行配置,将接收到的CAN帧存在你指定的数据缓存区。此外还开启了接收的相关配置。

文章:

小猫爪:S32K3学习笔记02-S32K3之FlexCAN_legacy rx fifo_小猫爪的博客-CSDN博客

NXP S32K3系列学习笔记——FlexCAN驱动开发_s32k3 can-CSDN博客

CANfd 一次采样点和二次采样点_canfd采样点计算-CSDN博客
【图解CAN总线】-10-详解CANFD的TDC以及SSP(收发器延迟补偿和第二采样点)_canfd tdc-CSDN博客

CANCANFD的BitTime深聊 - 百度文库

NXP社区 关于CAN/CANFD采样点的内容分享

ISO 11898-1-2015中文-道客巴巴

S32K324芯片学习笔记-Clock - 知乎

Vector

Kvaser官网CAN总线分析仪和数据记录仪|CAN总线产品和软件解决方案

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

闽ICP备14008679号