驱动开发篇] Can通信进阶 --- Can报文的三次采样

    • 一、CAN FD的采样次数
      • 1.1. 标准规定
      • 1.2. 传统标准CAN采样
      • 1.3. CAN FD的采样策略
        • 1.3.1. 基础采样策略
      • 1.4. 配置位置
      • 1.5. 常见步骤
    • 二、CAN FD与标准CAN在采样机制上的主要区别
    • 三、使用建议
    • 四. 芯片厂商实现
      • 4.1. 实际市面情况
      • 4.2. 例子
        • ① Microchip MCP2517FD
        • ② NXP S32K CAN FD
        • ③ Infineon XMC4000 CAN FD
    • 五、总结对比表

一、CAN FD的采样次数

CAN数据通信中,采样次数(sample points/number of samples)通常指的是在位时间(bit time)内,CAN收发器对总线上电平取样的次数,以判断该位的值。两类协议之间的主要差异体现在采样机制和位时序的调整能力上。

1.1. 标准规定

  • CAN FD 协议本身并没有强制要求必须支持三次采样。它只是允许三次采样作为一种选项存在于控制器设计中,主要是为了兼容老旧设备或改善某些特殊情况下的噪声容忍度。
  • **ISO 11898-1(CAN FD标准)**规定:
    • 必须支持单次采样
    • 三次采样是可选功能,标准并不要求所有芯片必须支持。

1.2. 传统标准CAN采样

  • 采样次数
    • 标准CAN(ISO 11898-1,也叫Classical CAN)只允许单点采样(single sampling)。
    • 即:在每一个位周期的采样点(sample point),收发器只对总线电平采样一次,用于判断该位是“显性”还是“隐性”。
  • 工作机制
    • 通过**重同步段(Re-Sync Segment)再同步(Resynchronization)**机制去提升通信稳定性。

1.3. CAN FD的采样策略

1.3.1. 基础采样策略
  • 采样次数

    • CAN FD由两类采样模式决定:
      1. 单点采样(Single Sampling):同标准CAN一样,在采样点取一次样。
      2. 三点采样(Triple Sampling):在某些实现(尤其用于抗干扰)或者特定配置下,CAN FD允许配置为三点采样。
  • 三点采样的机制(可选项,一般只在仲裁段低速通信才启用):

    • 在位时内选定的三个时间点各取一次样,然后采用“多数原则”判定该位的最终电平(即有两个以上为某状态则认为该位是该状态)。
    • 在**Data Phase(数据段)**高速部分,通常仍为单点采样,以减少时序复杂度和资源消耗。
  • 实现方式

    • 三点采样在高速阶段一般不用,因为对同步要求更高,只有在某些兼容性或特殊要求下可配置。
    • 当前主流CAN FD控制器大多数只在仲裁段支持三点采样。

传统 CAN/CAN FD 控制器在每个位时间内的特定采样点对总线取样一次。启用三次采样时,控制器会在靠近采样点前后各加一次,再在采样点取一次,也就是:

  • S1(采样点之前)
  • S2(采样点)
  • S3(采样点之后)

最终结果由多数原则决定(即至少两次一致则取该值),用来提升抗干扰能力。

1.4. 配置位置

  • 三次采样仅在仲裁段(Arbitration Phase)有效,数据段(Data Phase)通常不支持。
  • 配置项通常在控制器的相关寄存器中。

1.5. 常见步骤

  1. 进入CAN控制器初始化/休眠/配置模式
  2. 设置三次采样相关的寄存器或位
  3. 配置其他位时序参数(BSP、BRP、SJW、TSEG1、TSEG2等)。
  4. 退出配置模式,进入正常运行。

二、CAN FD与标准CAN在采样机制上的主要区别

  1. 采样次数的灵活性

    • 标准CAN:通常只能选择单点采样
    • CAN FD:可支持三点采样,但通常只有在仲裁段(Arbitration Phase)低速模式、需要兼容老模块时才用。
  2. 为什么有三点采样?

    • 三点采样在噪声较大、信号完整性较差场合(尤其长线、旧线束、物理层匹配不好时)可以提升抗干扰能力。
    • 但在高速数据传输(CAN FD数据段),三点采样会带来更大的时序复杂度,得不偿失,因此高速阶段通常关闭。

三、使用建议

  • 如果是全新设计,多采用单点采样,除非你遇到实际的信号质量问题或需兼容老旧节点,可以尝试三点采样。
  • CAN FD的最大优势体现在“数据段速率提升”而不是采样次数本身,但灵活的采样机制为工程师调试提供了更多选项。

四. 芯片厂商实现

4.1. 实际市面情况

  • 大部分主流CAN FD控制器(如NXP、Microchip、Infineon、TI等)
    • 默认或始终 采用单次采样,尤其是在数据段(Data Phase),几乎都是单采样,以保证高速与精度。
    • 对于仲裁段(Arbitration Phase),部分芯片可通过寄存器配置启用“三次采样”,但并不是所有控制器计数器提供。
    • 有的芯片(如Microchip MCP2517FD,NXP S32K,TI TCAN系列等)三次采样仅作为可选项出现,在默认配置和大多数应用中不开启。

4.2. 例子

  • Microchip MCP2517FD:支持三次采样,但需通过配置寄存器显式打开;且只对仲裁段有效,不支持数据段三次采样。
  • Infineon XMC4000 系列:三次采样支持受限,也只用于兼容特殊要求。
  • NXP S32K 系列:文档明确指出仅在仲裁段、低速情况下可用。
  • 部分国产以及老旧CAN控制器:干脆不实现三次采样功能。
① Microchip MCP2517FD
  • 三次采样开关寄存器位为SAM,位于寄存器CxNBTCFG(Nominal Bit Time Configuration)。
  • 这个位只作用于仲裁时段(Nominal Bit Time)。
// 伪代码示例(以MCP2517FD为例)
// 假定NBTCFG寄存器已定义,位0(SAM)为三次采样使能
CxNBTCFGbits.SAM = 1;      // 启用三采
// 其他时序参数配置同CAN基本位时序
② NXP S32K CAN FD
  • 三次采样由寄存器FDCTRL[SAMP]控制。
  • SAMP = 1 时为三次采样,SAMP = 0 为单次采样。
CAN->FDCTRL |= CAN_FDCTRL_SAMP_MASK;   // 启用三采(SAMP=1)
③ Infineon XMC4000 CAN FD
  • 在Node Control Register(NPCR)的SUSEN(SAM)位控制;
  • 只有仲裁段有效,数据段不支持。
XMC_CAN_NODE->NCR |= XMC_CAN_NCR_SAM_Msk;  // 启用三采

五、总结对比表

标准CANCAN FD
采样次数单点采样默认单点采样,仲裁段可选三点采样
速率最高1Mbps(典型)仲裁段1Mbps,数据段最高8Mbps+
异常处理冗余(重同步机制)更灵活且可配置采样机制
推荐配置通用单点默认单点,特殊需求下三点采样

Q:三次采样(Triple Sampling)是否被所有支持CAN FD帧的芯片普遍支持?

三次采样并不是所有支持CAN FD帧的芯片的“标配”功能。它通常只在一些控制器或在仲裁段作为可选项支持。现实应用中,CAN FD 的高速数据段普遍采用单点采样。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92107.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92107.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92107.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式文件系统06-分布式中间件弹性扩容与rebalance冲平衡

分布式中间件弹性扩容与rebalance冲平衡176_如果宕机的数据节点事后再次重启会发生什么事情?某个之前某个宕机的数据节点DataNode-A又重启后,肯定会再次注册,并进行全量上报的流程,此时,就会导致DataNode-A上的文件副本…

芯祥科技:工业/车规级BMS芯片厂商 规格选型对比

芯祥科技公司专注于工业和车规级BMS芯片,电源芯片及可编程模拟芯片的研发与销售,客户遍及新能源储能,汽车,电脑,服务器及电动工具等领域。并具有创业公司成功经验,平均具有逾17年以上的芯片研发和市场销售经…

莫队基础(Mo‘s algorithm)

莫队算法简介 莫队算法是一种用于高效处理离线区间查询问题的算法,由莫涛(Mo Tao)在2009年提出。其核心思想是通过对查询区间进行分块和排序,利用前一次查询的结果来减少计算量,从而将时间复杂度优化至接近线性。 莫…

板卡两个ADC,一个JESD204b sync正常,另一个JESD204B同步不上的问题

目录 1.问题来源: 2.问题分析 进一步测试表现: 抓取204B高速链路数据如上所示。 说明不是配置流程的问题 1.问题来源: 在工控机上和部分电脑上面出现时钟锁不住的现象,无法正常使用板卡。 经过分析,发现板卡上有两片ADC,其中一片的ADC的sync信号经过测量,是正常的,…

Android10 系统休眠调试相关

Android10 系统休眠调试相关实时打印休眠日志(实测好像没作用):echo 1 > /sys/module/printk/parameters/console_suspend查看唤醒锁:cat sys/power/wake_lock msm8953_64:/ # cat sys/power/wake_lock PowerManager.SuspendLockout PowerManagerServ…

一文掌握Bard机器翻译,以及用python调用的4种方式(现已升级为 Gemini)

文章目录一、Bard机器翻译概述1.1. Bard机器翻译介绍1.2 Bard机器翻译的核心特点1.3 技术背景1.4 与同类模型对比二、Bard机器翻译案例2.1 官方 REST API(推荐生产)2.2 通过Google Cloud API调用2.3 私有化部署方案2.4 开源镜像 PyBard(无需 …

Kafka-Eagle 安装

Kafka-Eagle官网 1)上传压缩包 kafka-eagle-bin-2.0.8.tar.gz 到集群第一台的/opt/modules 目录 2)解压到本地 tar -zxvf kafka-eagle-bin-2.0.8.tar.gz 3)将 efak-web-2.0.8-bin.tar.gz 解压至/opt/installs cd kafka-eagle-bin-2.0.8 …

接口请求的后台发起确认

场景讲解做业务开发时经常遇到这些场景,在后端代码执行命中了些业务规则,需要前端用户确认一下再往下执行。示例1:后端判断申请1笔超过5万的资金时会发起监管流程,告诉前端操作用户风险并询问是否确认执行。示例2:数据…

完整学习MySQL

DML 等术语概念 DML(Data Manipulation Language,数据操纵语言): DML主要用于插入、更新、删除和查询数据库中的数据。常见的DML语句包括: INSERT:用于向表中插入新的数据行。UPDATE:用于修改…

大模型笔记1——李宏毅《2025机器学习》第一讲

本篇笔记内容1、学习本节课需要的前置知识了解大模型的训练过程:预训练、后训练、强化学习(2024年生成式AI导论前8讲)了解基础机器学习、深度学习概念(如transformer)(2021年机器学习课程)2、本…

CSS scrollbar-width:轻松定制滚动条宽度的隐藏属性

在前端设计中,滚动条往往是一个容易被忽略的细节。默认的滚动条样式常常与页面设计格格不入,尤其是宽度 —— 过宽的滚动条会挤占内容空间,过窄又可能影响用户操作。而 CSS 的scrollbar-width属性,就像一把 “精细的尺子”&#x…

小迪23年-28~31-js简单回顾

前端-js开发 课堂完结后欲复习巩固也方便后续-重游-故写此篇 从实现功能过渡到涉及的相关知识点 知识点 1、 JS 是前端语言,是可以被浏览器“看到”的,当然也可以被修改啊,被浏览器禁用网页的 JS 功能啊之类的。所以一般都是前后端分离开发&…

JavaScript 概述

JavaScript 是一种高级、解释型编程语言,主要用于网页开发,使其具备动态交互功能。它是网页三大核心技术之一(HTML、CSS、JavaScript),能够直接嵌入 HTML 页面并在浏览器中执行。核心特性动态弱类型语言 JavaScript 是…

Mermaid流程图可视化系统:基于Spring Boot与Node.js的三层架构实现

什么是Mermaid?系统架构设计 三层架构 overview架构交互流程 核心组件详解 1. Spring Boot后端2. Node.js中间层3. 前端界面 功能实现 1. 节点和关系管理2. 流程图渲染3. 主题切换4. 导出功能 使用指南 启动步骤页面操作 总结与展望 什么是Mermaid? Mermaid流程图可视化系统…

R 数据框:高效数据处理与分析的利器

R 数据框:高效数据处理与分析的利器 引言 在数据科学和统计分析领域,R语言因其强大的数据处理能力和丰富的统计模型而备受推崇。R数据框(data frame)是R语言中一种重要的数据结构,它以表格形式存储数据,使得数据的组织、操作和分析变得简单高效。本文将深入探讨R数据框…

论文阅读笔记:《Curriculum Coarse-to-Fine Selection for High-IPC Dataset Distillation》

论文阅读笔记:《Curriculum Coarse-to-Fine Selection for High-IPC Dataset Distillation》1.背景与动机2.核心贡献3.方法详解4.实验结果与贡献主体代码算法整体逻辑CVPR25 github 一句话总结: CCFS基于组合范式(轨迹匹配选择真实图像&…

【Linux系统】详解,进程控制

前言: 上文我们讲到了Linux中的虚拟空间地址,知道了一个进程对应一个虚拟地址空间,虚拟空间地址与物理地址之间通过页表映射....【Linux】虚拟地址空间-CSDN博客 本文我们来讲一讲Linux系统是如何控制进程的! 如果喜欢本期文章&am…

Matplotlib(五)- 绘制子图

文章目录一、子图概述1. 子图介绍2. 子图布局2.1 网格布局2.2 自由布局二、绘制等分区域子图1. 使用 plt.subplot() 绘制子图示例:绘制多个子图示例:工业月度同比情况2. 使用 plt.subplots() 绘制子图示例:绘制多个子图示例:部分国…

C++中互斥锁、共享锁深度解析

一,互斥锁互斥锁(Mutex,全称 Mutual Exclusion)是并发编程中用于保护共享资源的核心同步机制。它通过确保同一时间仅有一个线程访问临界区(Critical Section),解决多线程环境下的数据竞争和不一…

Qt中的QWebSocket 和 QWebSocketServer详解:从协议说明到实际应用解析

前言 本篇围绕 QWebSocket 和 QWebSocketServer,从协议基础、通信模式、数据传输特点等方面展开,结合具体接口应用与实战案例进行说明。 在实时网络通信领域,WebSocket 技术以其独特的全双工通信能力,成为连接客户端与服务器的重要…