通过对CAN位定时寄存器CANBIT以及CAN波特率预分频扩展寄存器CANBRPE的设置可以得到需要的CAN通信波特率。

CAN的位定时配置不当,将使得CAN模块无法按照目标波特率接入CAN网络,将导致CAN节点无法通信正常。

根据CAN规范,位时间被分成4个时间段:同步段(Sync_Seg)、传播时间段(Prop_Seg)、相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2)

每个段由具体、可编程数量的时间份额(time quanta)组成,时间份额是位时间的基本时间单元,它的长度(tq)由CAN控制器的系统时钟(fcan)和波特率预分频器BRP定义:tq=BRP/fcan

CAN模块的系统时钟fcan是其CAN模块时钟(CAN_CLK)输入的频率。

各参数取值范围:

参数                         范围                   编程值                     说明

BRP                        1~64                   0~63                    波特率分频器,定义时间单元tq的时间长度

Sync_Seg               1tq                                                  固定长度,总线输入与系统时钟同步

Prop_Seg               1~8tq                  0~7                      补偿物理延时时间

Phase_Seg1          1~8tq                  0~7                      相位缓冲段1,补偿边沿阶段的误差,可通过同步暂时延长

Phase_Seg2          1~8tq                   0~7                      相位缓冲段2,补偿边沿阶段的误差,可通过同步暂时缩短

SJW                       1~4t                  0~3                       同步跳转宽度,不能比相位缓冲段长

位时间长度为:[TSEG1+TSEG2+3]tq或[Sync_Seg+Prop_Seg+Phase_Seg1+Phase_Seg2]tq

位定时配置的编程是由两个CANBTR决定的:Prop_Seg与Phase_Seg1 的和(作为TSEG1)与Phase_Seg2(作为TSEG2)组合成一个字节,而SJW与BRP组合成另一个字节。

SAMP  TSEG22  TSEG21  TSEG20  TSEG13  TSEG12  TSEG11  TSEG10

SJW1   SJW0      BRP5       BRP4      BRP3       BRP2       BRP1      BRP0

将结果配置写入寄存器:((TSeg2-1)<<12)|((TSeg1-1)<<8)|((SJW-1)<<6)|(BRP-1)

参数的计算步骤

1、首先计算CAN时钟和波特率的比值

2、根据比值确定BRP和时间量子的数目,一个位时间总的时间份额值可以设置在8~25的范围内

3、Sync_Seg的值固定为1tq,量子数目减1后再分配

4、Prop_Seg其长度视系统测量的延迟时间而定,必须为可扩展的CAN总线系统定义最大的总线长度和最大的节点延迟。

5、Prog_Seg<=Phase_Seg1<=Phase_Seg2;Phase_Seg1=Phase_Seg2 或者 Phase_Seg1+1=Phase_Seg2

6、Phase_Seg2不能比CAN控制器的信息处理时间短

7、同步跳转宽度SJW取4和 Phase_Seg1中小的那个

总的来说,波特率BitRate=Fpclk/((BRP+1)*((TSEG1+1)+(TSEG2+1)+1)

举例说明:

参考来源:http://www.docin.com/p-498322094.html

https://blog.csdn.net/sudogod/article/details/15503867

CAN波特率设置的更多相关文章

  1. STM32 CAN 波特率设置及采样点设置

    一.CAN波特率 STM32 位时间定义: ● 同步段(SYNC_SEG):通常期望位的变化发生在该时间段内.其值固定为1个时间单元(1 x tCAN).● 时间段1(BS1):定义采样点的位置.它包 ...

  2. MSP430FR6972的串口波特率设置代码

    1. 本次使用ACLK,就是辅助时钟(32.768KHZ)作为串口的时钟源,那么使用波特率9600的时候,分频系数=32768/9600=3.41,所以是有小数位的,设置代码如下 UCA0CTLW0 ...

  3. 一步一步学FRDM-KE02Z(一):IAR调试平台搭建以及OpenSDA两种工作模式设置

    摘要:FRDM-KE02Z是飞思卡尔公司较为新的微控制器,学习和开发资料较少.从本篇开始会陆续介绍其相关的开发流程,并完成一个小型的工程项目.这是本系列博客的第一篇,主要介绍开发环境IAR for A ...

  4. MSP430精准配置高速串口波特率的方法

    引言     在实际项目大批量生产调试设备时,笔者发现同样版本的程序在不同设备上运行时效果不一致,一部分设备串口通信正常,另外一部分串口通信不正常.通过示波器对多个设备的串口波特率及系统时钟频率测试, ...

  5. Linux串口设置及编程(转)

    用户常见的数据通信的基本方式可分为并行通信和串行通信. 并行通信是指利用多条数据传输线将一个资料的各位同时传送.特点是传输速度快,适用于短距离通信,但要求传输速度较高的应用场合. 串行通信是指利用一条 ...

  6. poll函数和串口设置

    2015.1.24 今天星期六,多云,早晨8:17起床的,今天是来南京起床最迟的一天,因为昨晚睡得有点迟,今天又不用上课,整个人有点放松.收拾好来到教室,教室门没有开,胡明也到了,其他人还在宿舍睡觉, ...

  7. 终端I/O之波特率函数

    波特率(baud rate)是一个以往采用的术语,现在它指的是"位/秒"(bits per second).虽然大多数终端设备对输入和输出使用同一波特率,但是只要硬件许可,可以将它 ...

  8. 串口接收模块(verilog) 波特率115200

    我来分享一下uart协议之接收verilog代码 顶层实例化 `timecale 1ns / 1ps////////////////////////////////////////////////// ...

  9. STM32 USART 波特率计算

    The baud rate for the receiver and transmitter (Rx and Tx) are both set to the same value as program ...

随机推荐

  1. PAT Basic 1014 福尔摩斯的约会 (20 分)

    大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm.大侦探很快就明白了,字条上奇 ...

  2. 加上这几个组件,flask摇身一变是django

    写在前面 flask和django作为python中的两大开源框架,各分春秋,各有各自的优点,不能一概而论说哪个好哪个不好.flask框架小而精,适用于快速开发一些小的应用的项目.django大而全, ...

  3. java8学习之Collector同一性与结合性分析

    继续沿着上一次[http://www.cnblogs.com/webor2006/p/8311074.html]Collector接口的javadoc进行阅读,在继续阅读之前,其中有个比较难理解的地方 ...

  4. linux下编译安装SDL2和ffmpeg

    首先安装sudo apt-get install libsdl2-dev ./configure --prefix=/tools/SDL2 make && make install $ ...

  5. PropertyPlaceholderConfigurer implements BeanFactoryPostProcessor

    BeanFactoryPostProcessor的应用 最常用的一个应用就是org.springframework.beans.factory.config.PropertyPlaceholderCo ...

  6. Windows KMS激活脚本

    @echo off&setlocal EnableDelayedExpansion&color 3etitle Windows KMS激活脚本 --by David :: 如果激活失败 ...

  7. 集合(三) HashMap

    三.Map 先来讲一下Map,Map和Collection完全不是一个系列的,按理说讲完Collection的List,应该接着讲Collection的Set,但是因为Set中很多实现是基于Map来实 ...

  8. hdu3586 Information Disturbing[二分答案+树形DP]

    给定 n 个节点的树,边有权值.1 号点是根,除了 1 号点外的度数为 1 的节点是叶子.要求切断所有叶子和 1 号点之间的联系,切断一条边要花费这条边上权值对应的代价,要求总的代价不超过 m.在满足 ...

  9. hiho #1474 拆字游戏(dfs,记录状态)

    #1474 : 拆字游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Kui喜欢把别人的名字拆开来,比如“螺”就可以拆成“虫田糸”,小Kui的语文学的不是很好,于是 ...

  10. spring data mongo API learn(转)

    显示操作mongo的语句,log4j里面加入: log4j.logger.org.springframework.data.mongodb.core=DEBUG, mongodb log4j.appe ...