你还没学会CAN通信波特率的设置?

记得最早是在15年就给大家推送过关于CAN通信波特率的设置,当时是以NXP的kinetis系列之KV46为例子来给大家介绍的,最近推送了几篇有关CAN通信的文章,后台又有人问起这个问题,今天我们就来在给大家详细普及下,今天以我最近使用的NXP的汽车级芯片KEAZ64的mscan为例,之前的文章也可供参考。

mscan跟flexcan两者使用不同的芯片IP,所以在寄存器级别上有不小区别,今天我们来一步步看如何在mscan上配置can的比特率,首先要搞明白CAN标准对位时间的定义,CAN通信波特率的计算是一个难点,要正确计算设置CAN波特率。CAN2.0协议中定义标称位速率为一理想的发送器在没有重新同步的情况下,每秒发送的位数量,也就是我们说的波特率。位时间由若干个时间单元(Tq)或者称为时间份额组成。每一位的组成如下图所示:

CAN2.0协议中规定要求每一位可以划分为几个不重叠时间片段,分别是:

同步段(Synchronization segment)

传播段(Propagation segment)

相位缓冲段1(Phase segment 1)

相位缓冲段2(Phase segment 2)

同步段:

位时间的同步段用于同步总线上不同的节点。这一段内要有一个跳变沿。

传播段:

传播段用于补偿网络内的物理延时时间。它是总线上输入比较器延时和输出驱动器延时总和的两倍。

相位缓冲段1、相位缓冲段2(PHASESEG1、PHASE SEG2):

相位缓冲段用于补偿边沿阶段的误差。这两个段可以通过重新同步加长或缩短。

采样点:

采样点是读总线电平并解释各位的值的一个时间点。采样点位于相位缓冲段1(PHASE_SEG1)之后。

除过同步段是一个时间份额外,其他几个域都在寄存器的不同位设置,需要特别注意的一点是在mscan中将传播段和相位缓冲段放在一个寄存器中设置

更波特率配置相关的寄存器,MSCAN总线定时器0和MSCAN总线定时器1,首先来看总线定时器0

其中BRP为就是用来设置波特率预分频器的,也就是设置时间量子的时钟。

总线定时器1主要就是来设置位时间的几个域,TSEG1段用于设置传播段和相位缓冲段1,TSEG2用于设置相位缓冲段2,搞清楚这几个域的配置后,我们就可以来动手配置了,例如要求配置波特率位250k,使用总线时钟24MHz为CAN模块时钟(CAN模块时钟也可以配置为外部晶振,推荐正式项目,配置为外部晶振,当然如果你的板子有晶振的话),则我们可以配置如下:

预分频配置为11,则根据数据手册描述,预分频为12

TSEG1 配置为3,则根据数据手册描述,传输段加相位缓冲段1位4个时间量子 TSEG2配置为 2, 则根据数据手册描述,相位缓冲段2位3个时间量子

根据CAN标准,同步段一般为一个时间量子,

则波特率计算如下

波特率 = 1/(4+ 3 + 1) * 24000000/12 = 250kbps, 同理可配置其他波特率,当然同一种波特率,这几个域可以配为不同的值。也可以参考以下推送,里面有详细的推导过程。

如何计算CAN通信波特率

精彩推荐:

CAN通信调试监测神器之CANCapture

我怼了硬件工程师,让你不按datasheet设计

一起来学习CAN FD(CAN with Flexible Data-Rate)

【CAN公开课】对面的猿猿你看过来

嵌入式程序猿工作室同时承接嵌入式设计,嵌入式开发培训,合作开发,项目外包等服务,欢迎来电详询 18706715925。

原文发布于微信公众号 - 嵌入式程序猿(InterruptISR)

原文发表时间:2018-04-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

什么是HDFS的纠删码

Fayson在前面的文章中介绍过CDH6,参考《Cloudera Enterprise 6正式发布》和《如何在Redhat7.4安装CDH6.0》。CDH6主要...

75960
来自专栏数据和云

DBA生存警示:系统级误删除案例及防范建议

编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中“幸存”,这源于无数血泪的教训,我曾经在《数据安全警示录》...

29040
来自专栏康怀帅的专栏

Ubuntu 常用软件

本文列举了 Ubuntu 常用软件。 娱乐 网易云音乐 http://music.163.com/#/download mpv 播放器 https://mpv....

52850
来自专栏小白课代表

犀牛Rhino3.0安装教程

17630
来自专栏程序猿DD

极大提高工作效率的几十种神兵利器

来源:https://www.liutf.com/posts/3720794851.html

24030
来自专栏腾讯Bugly的专栏

Android APK 瘦身 - JOOX Music项目实战

导语 JOOX Music是腾讯海外布局的一个音乐产品,2014年发布以来已经成为5个国家和地区排名第一的音乐App。东南亚是JOOX Music的主要发行地区...

38460
来自专栏Material Design组件

Human Interface Guidelines —— 搜索栏(Search Bars)

33180
来自专栏星回的实验室

nodejs实现简单的自动约车

最近约车真是越来越难了,网上约车经常车位刚放出来便已空空如也。突然回想起之前学车时教练反复提到的约车软件,去淘宝上一查:我去,卖出去一千多份了!还能约到车那就是...

13430
来自专栏数据小魔方

数据地图系列6|Stata数据地图(下)

今天要跟大家分享的是数据地图系列6——Stata数据地图(下)! 接着前一篇的节凑,这一篇会给大家介绍比较全面的Stata热力地图代码实现。 版本仍然是基于S...

70540
来自专栏FreeBuf

跟我学姿势:极客教你如何科学的看电影

俗话说自己动手丰衣足食,小米盒子之类的弱爆了,极客看片自然有极客的做法!相信看完本篇狠涨姿势的文章,你就可以像我一样吃着火锅唱着歌,喝着饮料吃着爆米花,用树莓派...

26250

扫码关注云+社区

领取腾讯云代金券