打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
STM32
userphoto

2023.08.31 广东

关注

前言

这里就不写CAN通讯的物理层了,主要说一下CAN通讯的协议层。

一、波特率

CAN通讯的波特率和串口通讯的波特率一样,表示传播速率,节点波特率相同相互之间才能传输准确的信息。

二、位时序

CAN通讯的位时序分成SS段、PTS段、PBS1段、PBS2段这四段。位时序的时间单位是Tq,一个完整的位由8~25Tq组成。

SS段:SS段是同步段,大小为1Tq。当总线信号跳变沿在SS段内时,节点时序与总线同步。
PTS段:PTS段是传播时间段,CAN总线上的数据会受到物理延迟,PTS段就是用来补偿这些延迟的。PTS段长度为1~8Tq。
PBS1段:PBS1段是相位缓冲段1,如果SS段相位超前,PBS1段长度就会增加,使下一个跳变沿在SS段内。PBS1段长度为1~8Tq。
PBS2段:PBS2段是相位缓冲段2,如果SS段相位滞后,PBS2段长度就会减小,使下一个跳变沿在SS段内。PBS2段长度为2~8Tq。

三、位同步

位同步方式有硬同步和重新同步两种。
硬同步:接收单元在总线空闲状态检测出第一个下降沿时会进行硬同步,直接将下降沿位置认为是SS段。然后按照时序对信号进行采样。
重新同步:接收单元在检测出下降沿后会进行重新同步,根据SS段超前或滞后来减少PBS2段长度或者增加PBS1段长度。

四、报文的种类

报文,即包含数据的“数据帧”。CAN有5种类型的帧,下面主要说数据帧。

数据帧分为标准数据帧和扩展数据帧,两者的区别是标准数据帧是11位ID,而扩展数据帧的ID比标准数据帧多18位。在CAN协议中,ID决定了数据帧发送的优先级,也决定了数据帧能否被其他节点收到。我们知道,若总线同时有显性电平和隐性电平,总线状态为显性电平。所以,当两个或多个节点同时发送报文时,先出现隐性电平的节点会失去总线占有权,进入接收状态。这就是ID能决定优先级的原因。

帧起始:SOF段即帧起始段,只有一个数据位,显性电平,用于通知其他节点将有数据传输。
仲裁段:仲裁段的主要内容是数据帧的ID。标准数据帧ID长度为11位,扩展数据帧为29位。此外,仲裁段还有RTR、IDE、SRR位,作用分别为区分数据帧和遥控帧、区分标准格式和扩展格式、代替标准格式中的RTR位。特别说明,扩展帧中SRR为隐性位,RTR为显性位,所以在标准帧和扩展帧ID相同的情况下,标准帧的优先级较高。
控制段:控制段中主要是DLC段,它由4个数据位组成,用于表示报文的数据段含有多少个字节(0~8个字节)。
数据段:数据段包含节点发送的原始信息,长度为0~8个字节,MSB先行。
CRC段:CRC段包含一段CRC校验码,保证报文准确传输。
ACK段:ACK段包含了ACK槽位和ACK界定符位。发送节点ACK槽位为隐性位,接收节点为显性位表示应答。ACK界定符位用来分隔ACK段和帧结束。
帧结束:发送节点发送7个隐性位表示帧结束。

五、CAN外设

CAN外设主要包含CAN控制内核、发送邮箱、接收FIFO和验收筛选器。


CAN控制内核包含了各种控制寄存器和状态寄存器。
主控制寄存器CAN_MCR
主控制寄存器负责管理CAN的工作模式。
(1)DBF调试冻结功能:设置CAN处于工作状态或禁止收发状态。
(2)TTCM时间触发模式:配置CAN的时间触发通信模式。
(3)ABOM自动离线管理:设置是否使用自动离线功能。
(4)AWUM自动唤醒:使能自动唤醒功能后,当CAN检测到总线活动时,会自动唤醒。
(5)NART自动重传:设置报文自动重传功能。
(6)RFLM锁定模式:用于锁定FIFO,锁定后,当接收 FIFO 溢出时,会丢弃下一个接收的报文。若不锁定,则下一个接收到的报文会覆盖原报文。
(7)TXFP报文发送优先级判定方法:设置根据ID优先级还是报文存进邮箱的顺序来发送。
位时序控制器CAN_BTR
位时序控制器用于配置测试模式、波特率和各位内的段参数。
(1)测试模式:测试模式包括正常模式、静默模式、回环模式、静默回环模式
(2)位时序:CAN外设的位时序只有SS段、BS1段、BS2段共三段
(3)波特率:

BS1段时间

Ts1 = Tq x (TS1[3:0] + 1)

BS2段时间

Ts2 = Tq x (TS2[2:0] + 1)

一个数据位时间

T-1bit = 1 + Ts1 + Ts2 = N Tq

位时序寄存器 CAN_BTR 中的 BRP[9:0] 寄存器位可以设置CAN 外设时钟的分频值,所以:

Tq = (BRP[9:0]+1) x T-PCLK

PCLK为APB1时钟,默认36MHz。波特率为

baudrate = 1/N Tq

CAN发送邮箱
CAN外设一共有3个发送邮箱,最多可以缓存3个待发送的报文。每个发送邮箱包含有标识符寄存器CAN_TIxR、数据长度控制寄存器CAN_TDTxR、低位数据寄存器CAN_TDLxR和高位数据寄存器CAN_TDHxR,功能见图。

CAN接收FIFO
CAN外设有2个接收FIFO,每个FIFO中有3个邮箱,最多可以缓存6个接收到的报文。当接收到报文,FIFO报文计数器会自增,读取数据后会自减,可通过状态寄存器查看计数器的值。FIFO寄存器及功能如下。

验收筛选器
CAN外设一共有28个筛选器组,CAN1和CAN2共用,每个筛选器组有2个寄存器。筛选器可以调整筛选ID长度和过滤模式。数据手册中说的是28个筛选器组CAN1和CAN2共用,但在实际测试中,013筛选器对应CAN1,1428筛选器对应CAN2。

筛选ID长度:
(1)检查 STDID[10:0]、EXTID[17:0]、IDE 和 RTR 位,一共 31 位。
(2)检查 STDID[10:0]、RTR、IDE 和 EXTID[17:15],一共 16 位。
过滤模式:
(1)标识符列表模式:把要接收的报文ID列成表,报文ID与列表中标识符完全一致才能接收。
(2)掩码模式:把接收报文的某几位ID列成表,这几位ID称为掩码,只要掩码相同报文就能被接收。通过配置筛选模式寄存器 CAN_FM1R 的 FBMx 位可以设置筛选器工作在哪个模式。每组筛选器包含两个32位寄存器CAN_FxR1 和 CAN_FxR2,功能如下。


掩码为 1 的部分表示该位必须与 ID 中的内容一致。


__EOF__

  • 本文作者:
  • 本文链接: https://www.cnblogs.com/LonelyPluto-W/p/16694349.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。 
  • 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
    打开APP,阅读全文并永久保存 查看更多类似文章
    猜你喜欢
    类似文章
    【热】打开小程序,算一算2024你的财运
    CAN基础知识介绍
    CAN协议详解-01
    CAN总线协议
    带硬件地址识别的UART IP 的设计和实现
    【stm32f407】CAN总线
    详解CAN通信的位定时与同步
    更多类似文章 >>
    生活服务
    热点新闻
    分享 收藏 导长图 关注 下载文章
    绑定账号成功
    后续可登录账号畅享VIP特权!
    如果VIP功能使用有故障,
    可点击这里联系客服!

    联系客服