前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何计算CAN通信波特率

如何计算CAN通信波特率

作者头像
用户1605515
发布2018-04-10 13:16:41
1.9K0
发布2018-04-10 13:16:41
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

CAN通信波特率的计算是一个难点,要正确计算设置CAN波特率。CAN2.0协议中定义标称位速率为一理想的发送器在没有重新同步的情况下,每秒发送的位数量,也就是我们说的波特率。

位时间由若干个时间单元(Tq)或者称为时间份额组成。那么位CAN消息中最小的时间份额由下式计算:

PRESDIV 为预分频因子, Fcanclk为CAN模块时钟源频率。

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

同步段(Synchronization segment)

传播段(Propagation segment)

相位缓冲段1(Phase segment 1)

相位缓冲段2(Phase segment 2)

同步段:

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

传播段:

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

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

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

采样点:

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

信息处理时间 (INFORMATION PROCESSING TIME)

信息处理时间是一个以采样点作为起始的时间段。采样点用于计算后续位的位电平。

同步段(SYNC_SEG)为 1 个时间份额;传播段( PROP_SEG)的长度可设置为 1, 2, …, 8 个时间份额;缓冲段 1 ( PHASE_SEG1)的长度可设置为 1, 2, …, 8 个时间份额;相位缓冲段 2( PHASE_SEG2 )的长度为阶段缓冲段 1 ( PHASE_SEG1 )和信息处理时间( INFORMATIONPROCESSINGTIME)之间的最大值;信息处理时间少于或等于 2 个时间份额。 一个位时间总的的时间份额值可以设置在 8—25 的范围。

在清楚了位时间的构成后,我们以飞思卡尔kv4x系列MCU为例说明如何计算CAN波特率

我们知道飞思卡尔KV4xMCU的CAN模块有两种时钟源可选,外设时钟时钟源和晶振时钟源,所以分两种情况来说明

例子:假设系统使用8M晶振,经过PLL倍频后输出144M作为系统时钟,外设也是144M,要求设定波特率为250kbps,CAN模块选择外设时钟源。如果使用peripheral clock 则设置 CAN_CTRL1 bit13 为1。

配置波特率主要是配置控制寄存器1

对照数据手册配置波特率:

首先配置预分频参数PRESDIV 为47

则可计算:

配置寄存器传播段域为2,则传播段时间 = (2 + 1)Tq

配置寄存器相位缓冲段1域为3,则相位缓冲段1时间 = (3+1)Tq

配置寄存器相位缓冲段2域为3,则相位缓冲段2时间 = (3+1)Tq

同步段不用配置,固定为1个Tq

则波特率 = 1/(1+3+4+4)Tq 将(2) 带入可计算出:

其他波特率值可类似计算,具体应用时候还要参考数据手册的限制条件,这四个值都有范围限制。

例子:假设系统使用8M晶振,经过PLL倍频后输出144M作为系统时钟,外设也是144M,要求设定波特率为250kbps,CAN模块选择晶振时钟源。

首先配置预分频参数PRESDIV 为3

其他波特率值可类似计算,具体应用时候还要参考数据手册的限制条件,这四个值都有范围限制。

在CAN 驱动中如果使用外部8M晶振作为CAN模块时钟源,必须配置CAN_CTRL1 bit13为0,选择can模块使用外部时钟,同时必须正确配置MCG_C2和OSC_CR寄存器,才能正常工作,否则CAN模块不能正常通讯。

MCG_C2 |=MCG_C2_EREFS_MASK;

// Enable ERCLK clock to FlexCAN

OSC_CR |= OSC_CR_ERCLKEN_MASK | OSC_CR_EREFSTEN_MASK;

各位亲,是否学会了如何计算CAN通讯波特率呢?如果你喜欢本文,请分享给你的朋友。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档