CAN基础介绍

一、基础电平介绍

显性电平--逻辑0                      隐性电平--逻辑1

CAN空闲状态时,总线上为显性电平状态。

二、数据帧介绍(最常用也最常见)

参考链接:

CAN协议栈数据结构基础

CAN通讯详解

(1)       帧起始。表示数据帧开始的段。

(2)       仲裁段。表示该帧优先级的段,即ID+RTR。

(3)       控制段。表示数据的字节数及保留位的段,即IDE+DLC。

(4)       数据段。数据的内容,一帧可发送0~8个字节的数据。

(5)       CRC段。检查帧的传输错误的段。

(6)       ACK段。表示确认正常接收的段。

(7)       帧结束。表示数据帧结束的段。

RTR:0--数据帧 1--远程帧(遥控帧)

IDE:0--标准帧 1--扩展帧

DLC:数据段长度 0~8 (接受到9~15时也认为合法)

这三个数据部分芯片CAN模块会自动解析或填充在头信息寄存器中,直接获取或填充即可确定此帧的这三个参数。

ACK段的错误信息

在一帧数据的发送中,发送端的ACK段的电平需要发送2个位的隐性位,而接收到正确消息的单元在ACK槽(ACK Slot)发送显性位,通知发送单元正常接收结束。发送 ACK 的是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元(发送单元不发送ACK)。

所谓正常消息是指不含填充错误、格式错误、CRC 错误的消息。

大部分芯片可以直接解析出CAN数据发生错误的位置(诸如数据填充错误,CRC校验错误等等)以及发送错误时的状态(接收/发送)。

如何根据错误信息发现问题原因?

这里举例实际调试过程中出现的情况,如双节点采用同ID回复时(这个设计时错误的),当同时发送给两个CAN节点,并要求两个CAN节点都回复,由于ID一致,帧类型以及数据长度也一致,但数据不一致,在发送时有概率触发发送状态错误,计数+8,错误发生位置为Data Field,说明数据填充处出现问题。

具体错误相关介绍见如下链接:

CAN为什么会发送失败

三、CAN位时序介绍

一个位可分为 4 段。

l  同步段(SS)

l  传播时间段(PTS)

l  相位缓冲段1(PBS1)

l  相位缓冲段2(PBS2)

这些段又由可称为 Time Quantum(以下称为Tq)的最小时间单位构成。

1 位分为4 个段,每个段又由若干个Tq 构成,这称为位时序。

通常在CAN实现中,传播段(PROP_SEG)和相位缓冲段1(PHASE_SEG1)被统一编程,可称为Time segment 1,长度可编程为4-16tq。Time segment 1代表相位缓冲段(PHASE_SEG2),长度可编程为2-8tq。在位时间中,时间份额的总数必须为8-25tq。

PTS+PBS1 = BS1 = TSEG1 = SEG1+1  (SEG1通常用于芯片寄存器BTR1[3:0] -- 0~15)

PBS2 = BS2 = TSEG2 = SEG2+1        (SEG2通常用于芯片寄存器BRT1[6:4] -- 0·7)                  

采样点计算公式:

sample = (1+BS1)/(1+BS1+BS2)

对于采样点的选择,采样点越靠前,可传输距离越短,但是同步误差容错率高,越靠后,可传输距离越长,同步误差容错率越低。因为采样点越靠前,由于距离产生的信号延迟越容易落在采样点后方,但留给同步的时间就越多。建议采样点范围在70%--87.5%,根据波特率大小,越大,采样点越靠前。

参考链接如下:

https://blog.csdn.net/u014156403/article/details/103521725

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值