CubeMx笔记 --CAN通讯

1、can简介

1.1、显性电平和隐性电平

  • 概念图(低速)
    在这里插入图片描述
  • 显性电平:逻辑0 CAN_H和CAN_L电压差大
  • 隐性电平:逻辑1 CAN_H和CAN_L电压差小
  • 在总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平
  • 出现连续的11位隐性电平,那么总线就处于空闲状态
    在这里插入图片描述

1.2、报文(帧)的类型

  • 数据帧
    发送单元向接收单元传送数据的帧
  • 遥控帧
    接收单元向具有相同 ID 的发送单元请求数据的帧
  • 错误帧
    当检测出错误时向其它单元通知错误的帧
  • 过载帧
    接收单元通知其尚未做好接收准备的帧
  • 间隔帧
    将数据帧及遥控帧与前面的帧分离开来的帧

1.3、数据帧

在这里插入图片描述

0:显性 — 1:隐性
MSB:最高位 — LSB:最低位

  • 帧起始
    SOF(1位0 )
  • 仲裁段
    ID:数据的id ,决定优先级 禁止高 7 位都为1(禁止设定: ID=1111111XXXX)
    RTR:是否是远程帧(0:数据帧;1:远程帧)
    SRR:代替远程请求位,为1,它代替了标准帧中的 RTR 位
  • 控制段
    IDE:标识符选择位( 0:标准标识符; 1:扩展标识符)
    r0/r1:保留位,发送必须是0,接收可以是0或1
    DLC:长度表示段,MSB在前,有效值为 0~8,但是接收方接收到 9~15 的时候并不认为是错误。
  • 数据段
    该段可包含 0~8 个字节的数据。从MSB开始输出,标准帧和扩展帧在这个段的定义都是一样的
  • CRC段
    计算范围: 帧起始、仲裁段、控制段、数据段。
    接收方以同样的算法计算 CRC 值并比较,不一致时会报错
  • ACK段
    发送方的 ACK,发送 2 个位的1
    接收方确认后发送 1位的0

1.4、位时序

由发送单元在非同步的情况下发送的每秒钟的位数称为位速率,一个位可分为 4 段
每个段又由若干个 Time Quantum(以下称为 Tq) 构成,这称为位时序

  • 同步段( SS)
  • 传播时间段( PTS)
  • 相位缓冲段 1( PBS1)
  • 相位缓冲段 2( PBS2)

在这里插入图片描述

  • 对应cubemx
    1tq = (16/45M) * (10^9) ns
    波特率:45/(1+2+1)/16
    时钟/(bs1+bs2+sjw)/分频

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

  • 采样点
    在这里插入图片描述

1.5、工作模式

  • 静默模式
    在这里插入图片描述
    节点的输出端的逻辑0数据会直接传输到自己的输入端
    逻辑1可以被发送到总线
    所以它不能向总线发送显性位(0), 只能发送隐性位(1)。
    输入端可以从总线接收内容。

  • 环回模式
    在这里插入图片描述
    节点输出端的所有内容都直接传输到自己的输入端
    输出端的内容同时也会被传输到总线上
    输入端只接收自己发送端的内容,不接收来自总线上的内容。
    使用回环模式可以进行自检。

  • 环回与静默组合模式
    在这里插入图片描述
    节点的输出端的所有内容都直接传输到自己的输入端
    输入端不接收来自总线上的内容
    不会向总线发送显性位影响总线

对应cubemx
在这里插入图片描述

2、can寄存器

2.1、主控制寄存器

主控制寄存器 (CAN_MCR)
CAN master control register
在这里插入图片描述

  • 位 7 TTCM:时间触发通信模式
    (Time triggered communication mode)
    0:禁止时间触发通信模式。
    1:使能时间触发通信模式。
  • 位 6 ABOM: 自动的总线关闭管理
    (Automatic bus-off management)
    此位控制 CAN 硬件在退出总线关闭状态时的行为。
    0:在软件发出请求后,一旦监测到 128 次连续 11 个隐性位
    软件将 CAN_MCR 寄存器的 INRQ 位先置 1 再清零,即退出总线关闭状态。
    1:一旦监测到 128 次连续 11 个隐性位,即通过硬件自动退出总线关闭状态。
  • 位 5 AWUM: 自动唤醒模式
    (Automatic wakeup mode)
    此位控制 CAN 硬件在睡眠模式下接收到消息时的行为。
    0:在软件通过将 CAN_MCR 寄存器的 SLEEP 位清零发出请求后,退出睡眠模式。
    1:一旦监测到 CAN 消息,即通过硬件自动退出睡眠模式。
    CAN_MCR 寄存器的 SLEEP 位和 CAN_MCR 寄存器的 SLAK 位由硬件清零。
  • 位 4 NART: 禁止自动重发送
    (No automatic retransmission)
    0: CAN 硬件将自动重发送消息,直到根据 CAN 标准消息发送成功。
    1:无论发送结果如何(成功、错误或仲裁丢失),消息均只发送一次。
  • 位 3 RFLM: 接收 FIFO 锁定模式
    (Receive FIFO locked mode)
    0:接收 FIFO 上溢后不锁定。接收 FIFO 装满后,下一条传入消息将覆盖前一条消息。
    1:接收 FIFO 上溢后锁定。接收 FIFO 装满后,下一条传入消息将被丢弃。
  • 位 2 TXFP: 发送 FIFO 优先级
    (Transmit FIFO priority)
    此位用于控制在几个邮箱同时挂起时的发送顺序。
    0:优先级由消息标识符确定
    1:优先级由请求顺序(时间顺序)确定

对应cubemx
在这里插入图片描述

2.2、位时序寄存器

位时序寄存器 (CAN_BTR)
CAN bit timing register
在这里插入图片描述

  • 位 31 SILM: 静默模式(调试)
    (Silent mode (debug))
    0:正常工作
    1:静默模式
  • 位 30 LBKM: 环回模式(调试)
    (Loop back mode (debug))
    0:禁止环回模式
    1:使能环回模式
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值