Autosar通信入门系列01-CAN通信位时间、Tq及采样点同步

1.前言

本篇记录些关于CAN的一些学习笔记,说实话CAN协议发展的已经非常成熟了,网上关于CAN通信的分享非常多,很多文章讲得而比较好,自己总结的这篇不是枯燥的理论,会结合具体的例子进行计算,相对于新手会更容易理解些,言归正传,下面进入正题。

2. 位时间

2.1 位时间定义

由发送单元在非同步的情况下每秒钟发送的位数称为位速率,即一个二进制位在总线上传输所需要的时间
位时间的组成包括四个部分:同步段、传播段、相位缓冲段1及相位缓冲段2四部分组成,其排列顺序示例如下:
在这里插入图片描述
同步段(SS: Synchronization Segment):每个位的传输从同步段开始,用于同步各节点,同步进行接收和发送的工作。
长度对应1个Tq

传播段(PTS: Propagation Time Segment):用于吸收网络上的物理延迟的段。
所谓的网络的物理延迟指发送单元的输出延迟、总线上信号的传播延迟、接收单元的输入延迟,这个段的时间为以上各延迟时间的和的两倍。
其长度对应1~8个Tq,

相位缓冲段1:同步过程中可以对TSEG1进行延长,此外为方便编程,许多CAN模块将传播段及TSEG1合并为一段。
最小为3个Tq

相位缓冲段2:同步过程中可以对TSEG2进行缩短。
最小为2个Tq

2.2 位时间计算

在计算位时间前,需要知道波特率,虽然波特率与比特率在定义上有所区别,但对于CAN总线上的传输而言可以认为其数值是一样的,即(1/波特率)为传输一个Bit所需的时间,

举个栗子
对于传输速率为500KBaud标准CAN而言,其位时间即为1/500kbaud = 2us/Bit

3. Tq

即Time Quantum,时间量子,或者一个时间份额。

3.1 Tq的计算

涉及到CAN的时钟频率及波特率分频系数(BRP)
Tq=BRP/fCAN

3.1.1 举个例子

对于fCAN=100MHz,BRP=10的case,
Tq=10/100 us=0.1us

3.2 位时间与Tq的换算

一个位时间由多个Tq组成,根据标准规定一个位时间最小由8个Tq组成。

举个栗子
传输速率为500KBaud标准CAN,且fCAN=100MHz,BRP=10的case,换算如下:
位时间 = 1/500k = 2us/Bit
Tq = 10/100 us=0.1us

位时间/Tq=20,即每个Bit由20个Tq组成。

4. 采样点同步

所谓采样点是读取总线电平,并将读到的电平作为位值的点,其位置在相位缓冲段1结束处。

在实际通信过程中,由于发送单元和接收单元存在的时钟频率误差及传输路径上的(电缆、驱动器等)相位延迟会引起同步偏差,为保证报文接收节点能在正确的采样点采集到准确的电平就需要重新进行同步,同步的方式有两种:硬同步及再同步。

4.1 硬同步

硬同步:接收单元在总线空闲状态检测出帧起始时进行的同步调整,在检测出边沿的地方不考虑 SJW 的值而认为是 SS 段,直接同步到SS位,其示意如下:
在这里插入图片描述

4.2 重同步

检测到下降沿后通过对自身相位缓冲段进行延长或者缩短而实现的同步,延长或缩短的最大范围受SJW(再同步补偿宽度)的限制,该变量定义了重同步的最大Tq,
SJW必须满足的两个条件:
SJW不得大于PBS1和PBS2的最小值;
2)SJW最大不能超过4

4.2.1 延长PBS1的重同步

适用情况:隐性电平到显性电平的边沿出现在PTS和BPS1间即发的比收的慢,延时等一等。

举个例子,当SJW=2,在PTS段检测到下降沿,较发送节点早了两个Tq,此时通过延长PBS1段2个Tq,此时采样点经过补偿后刚好与发送节点相同。

在这里插入图片描述

4.2.2 缩短PBS2的重同步

适用情况:隐性电平到显性电平的边沿出现在BPS2,即发的比收的快,这个周期赶不上了,下个周期追回来。。

在这里插入图片描述
在这里插入图片描述

<think>好的,用户想了解CAN总线中的时钟量子(clock quantum)概念和配置方法。首先,我需要回顾一下CAN总线的基本知识,尤其是与时钟相关的部分。 CAN总线的通信依赖于位定时(Bit Timing),而时钟量子是位定时的基本单位。位定时通常涉及几个参数,比如同步段(SYNC_SEG)、传播时间段(PROP_SEG)、相位缓冲段1(PHASE_SEG1)和相位缓冲段2(PHASE_SEG2)。这些参数共同决定了每个位的时间长度,而时钟量子是这些时间段的基本时间单位。 接下来,用户可能想知道如何配置这些参数。配置时钟量子需要考虑微控制器的时钟频率和所需的波特率。例如,假设系统时钟是48MHz,要配置1MHz的波特率,可能需要将每个位的时间分成多个时钟量子,通过预分频器来调整。 另外,ISO 11898-1标准中提到了位定时的详细配置方法,这可能需要引用。同时,用户可能在嵌入式系统中使用特定的控制器,比如STM32的bxCAN,这些控制器的参考手册会有具体的配置步骤,比如设置BTR寄存器的各个位段。 需要注意的是,时钟量子的配置错误可能导致通信故障,因此正确计算和验证参数非常重要。可能还需要提到工具如CAN分析仪来验证配置的正确性。 用户的问题还涉及到汽车或嵌入式系统,可能需要结合实际应用场景,比如汽车中的CAN网络通常有严格的实时性要求,因此正确的时钟配置对确保通信可靠性至关重要。 最后,要确保回答符合格式要求,使用中文,正确引用资料,并生成相关问题。</think>### CAN总线时钟量子概念及配置方法 #### 一、时钟量子(Clock Quantum)基本概念 时钟量子是CAN总线位定时的最小时间单位,由总线控制器的主时钟分频得到。位时间(Bit Time)由多个时钟量子组成,其结构分为四段: $$ \text{位时间} = \text{SYNC\_SEG} + \text{PROP\_SEG} + \text{PHASE\_SEG1} + \text{PHASE\_SEG2} $$ 其中$SYNC\_SEG$固定为1个时钟量子,其他段长度可编程配置[^1]。 #### 二、配置步骤(以1MHz波特率为例) 1. **确定主时钟频率** 假设控制器主频为$f_{clock}=48\text{MHz}$。 2. **计算预分频因子** $$ \text{预分频值} = \frac{f_{clock}}{\text{波特率} \times \text{总时钟量子数}} $$ 若选择总时钟量子数$TQ=16$,则: $$ \text{预分频值} = \frac{48\text{MHz}}{1\text{MHz} \times 16} = 3 $$ 3. **分配时间段** - $SYNC\_SEG$ = 1 TQ - $PROP\_SEG$ = 2 TQ - $PHASE\_SEG1$ = 7 TQ - $PHASE\_SEG2$ = 6 TQ 4. **寄存器配置示例(STM32 bxCAN)** ```c CAN_BTR = (3-1) << 0 // 预分频值BRP=2 | (2-1) << 16 // TS1=7 TQ → TS1[3:0]=6 | (6-1) << 20 // TS2=6 TQ → TS2[2:0]=5 | 3 << 24; // SJW=3 TQ ``` #### 三、关键注意事项 1. 采样点通常设置在$PHASE\_SEG1$结束位置,推荐位置为75-90%位时间 2. 时钟同步机制通过调整$PHASE\_SEG$长度补偿时钟偏差 3. 需满足ISO 11898-1标准中关于最小位时间(8 TQ)和最大位时间(25 TQ)的限制 : CAN总线位定时参数配置规范详见ISO 11898-1标准第10章
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Autosar汽车电子进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值