【STM32】bxCAN总线配置信息

1,波特率计算

1)CAN_TTCM :本成员用于配置CAN 的时间触发通信模式(time triggeredcommunication mode)。在此模式下,CAN 使用它内部定时器产生时间戳,被保存在CAN_RDTxR、CAN_TDTxR 寄存器中。内部定时器在每个CAN 位时间累加,在接收和发送的帧起始位被采样,并生成时间戳。本实验不使用时间触发模式。

2)CAN_ABOM :当CAN 检测到发送错误(TEC)或接收错误(REC)超过一定值时,会自动进入离线状态。在离线状态中,CAN 不能接收或发送报文。其中的发送错误或接收错误的计算原则由CAN 协议规定,是CAN 硬件自动检测的,不需要软件干预。软件可干预的是通过此CAN_ABOM 参数选择是否使用自动离线管理(automatic bus-off management),决定CAN 硬件在什么条件下可以退出离线状态。若我们把此成员赋值为ENABLE,则使用硬件自动离线管理。一旦硬件检测到128 次
11 位连续的隐性位,则自动退出离线状态。若我们把此成员赋值为DISABLE,离线状态由软件管理。首先由软件对CAN_MCR寄存器的INRQ 位进行置“1”随后清“0”,再等到硬件检测到128 次11 位连续的隐性位,才退出离线状态。本实验使用硬件自动离线管理。
3 ) CAN_AWUM : 本成员选择是否开启自动唤醒功能( automatic wakeup mode)。若使能了自动唤醒功能,并且CAN 处于睡眠模式,检测到CAN 总线活动时会自动进入正常模式,以便收发数据。若禁止此功能,则只能由软件配置才可以使

CAN 退出睡眠模式。本实验使用自动唤醒模式。

4 ) CAN_NART : 本成员用于选择是否禁止报文自动重传( no automatic retransmission)。按照CAN 的标准,CAN 发送失败时会自动重传至成功为止。向本参数赋值ENABLE,即禁止自动重传,若赋值为DISABLE,则允许自动重传功能。本实验允许CAN 的自动重传。

5 ) CAN_RFLM : 本成员用于配置接收FIFO 是否锁定( receive FIFO locked mode)。若选择ENABLE,则当FIFO 溢出时会丢弃下一个接收的报文。若选择DISABLE,当FIFO 溢出时下一个接收到的报文会覆盖原报文。本实验选择非锁定模式。
6)CAN_TXFP :本成员用于选择CAN 报文发送优先级的判定方法。STM32 的CAN 接口可以对它邮箱内的几个将要发送的报文按照优先级进行处理。对于这个优先级的判定可以设置为按照报文标识符来决定(DISABLE),或按照报文的请求顺序来决定(ENABLE)。本实验发送报文的优先级按照报文标识符来决定。

7)CAN_Mode :本成员用于选择CAN 是处于工作模式状态还是测试模式状态。它有四个可赋值参数,分别是一个正常工作模式(CAN_Mode_Normal),以及静默模式( CAN_Mode_Silent ) 、回环模式( CAN_Mode_LoopBack ) 和静默回环模式
(CAN_Mode_Silent_LoopBack)三个测试模式。本实验使用的是正常的两个CAN 节点间的通信,所以向本成员赋值为正常工作模式。

8)CAN_SJW、CAN_BS1、CAN_BS2 及CAN_Prescaler :这几个成员是用来配置CAN 通信的位时序的。它们分别代表CAN 协议中的SJW 段(重新同步跳跃宽度)、PBS1 段(相位缓冲段1)、PBS2 段(相位缓冲段2)及时钟分频。在STM32 的CAN 接口配置中,SS 段(同步段)被固定为1 Tq,PTS(物理缓冲段)被省略。所以一个正常的位时间只由SS 段(固定为1 Tq)、PBS1 段(CAN_BS1成员)及PBS2 段(CAN_BS2 成员)组成,PBS1 和PBS2 的重新同步跳跃宽度由成员CAN_SJW 决定。而时间单元Tq 则由CAN_Prescaler 成员决定,它决定CAN 使用的时钟是由APB1 的多少分频得到。

 

PBS1 与PBS2 之间是采样点,一般配置在位时间段的75% ~ 80% 的位置,保证总线上不同节点数据同步。在本实验中我们把采样点设置在70% 处。即SS=1Tq,CAN_BS1 =6 Tq,CAN_BS2=3 Tq。为提高同步调整的速度,把CAN_SJW 配置为2 Tq。利用图16-14 中的公式。时间单位Tq 根据成员CAN_Prescaler 的值(4 分频)及APB1 的时钟频率(36 MHz)计算得出。Tq =1/(36 MHz/4) 秒,即实际上每一个CAN 位的时间为10 Tq (1+6+3Tq),波特率为36MHz /4/10 = 0.9Mbit/s。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值