摘要
本篇笔记主要记录MPC5744p的CAN通信波特率计算,以及需要注意的问题。
CAN 位时间
记得最早是在2015年就给大家推送过关于CAN通信波特率的设置,当时是以NXP的kinetis系列之KV46为例子来给大家介绍的,最近推送了几篇有关CAN通信的文章,后台又有人问起这个问题,今天我们就来在给大家详细普及下,今天以NXP的汽车级芯片MPC5744p的flexCAN为例,MPC系列是基于PowerPC架构的,和ARM架构的芯片时由区别的,但NXP家的PPC架构和ARM架构如果都是flexCAN的IP,那么驱动基本上可以通用,之前的文章也可供参考。
今天我们来一步步看如何在flexcan上配置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
CAN波特率
对于MPC57xx系列,主要时配置寄存器CAN_CTRL1


其中PRESDIV位域就是用来设置波特率预分频器的,也就是设置时间量子的时钟。
首先CAN控制器的时钟由两个入口

CAN总线控制寄存器1主要就是来设置位时间的几个域,TSEG1段用于设置传播段和相位缓冲段1,TSEG2用于设置相位缓冲段2,搞清楚这几个域的配置后,我们就可以来动手配置了,例如要求配置波特率位500k,使用总线时钟160MHz 4分频为CAN模块时钟(CAN模块时钟也可以配置为外部晶振,推荐正式项目,配置为外部晶振,当然如果你的板子有晶振的话),则我们可以配置如下:
预分频配置为4,
传输段配置为7,则为8个时间量子
PSEG1 配置为7,则根据数据手册描述,相位缓冲段1为8个时间量子 PSEG2配置为 2, 则根据数据手册描述,相位缓冲段2为3个时间量子
根据CAN标准,同步段一般为一个时间量子,
则波特率计算如下
波特率 = 1/(8 + 8 + 3 + 1) * 40000000/4 = 500kbps, 同理可配置其他波特率,当然同一种波特率,这几个域可以配为不同的值。也可以参考以下推送,里面有详细的推导过程。

如果时采用SDK 配置, 那么SDK只需要填入波特率,便会主动分配每个段的值,但是我们还是要知道和搞清楚会自己配置。
审核编辑:汤梓红
相关推荐
本篇笔记主要记录MPC5744p的CAN通信波特率计算,以及需要注意的问题
发表于 01-20 14:58
•186次阅读
当在两个设备之间建立通信链路时,自动波特率检测十分有用,因为从设备能够检测到主控制器的波特率并进行相应的自我调整。这需要使用一种自动机制来确定波特率。
发表于 11-28 11:15
•521次阅读
CAN波特率波特率发生器
学习电子知识
发布于 :2022年11月02日 20:00:29
can总线光纤转换器是能够将CAN总线数据转换为光信号进行传输的设备,是一种非常典型的远程CAN中继工具。和很多的CAN网关设备一样,CAN转光纤中继器在使用之前也是需要进行配置的,但配置的内容比较简单,就是波特率。下面,我以我们家的CAN总线 光纤转换器为例,
发表于 06-28 14:36
•825次阅读
CH375与MPC5744单片机通过串口连接,CH375晶振12M,目前无法通信,主要疑问:1、官方的例程中波特率是4800,请问波特率到底是多少?2、手册中串口是9bit数据,但是例程中都没有体现?3、有没有比较权威的手册和例程,很多资料和代码都对不上请求支援
发表于 06-27 07:19
在本文中,我们将探讨数据传输速率的挑战,并讨论波特率在旧通信系统中的作用。
发表于 04-29 15:16
•1039次阅读
信息在通信通道中传输的速率被称为波特率。通俗地说,波特率是数据在网络上传输的速度/速率。这是以比特/秒表示的。因此,一秒钟内在通信网络上传输的比特数就是波特率。
发表于 04-25 08:37
•1.2w次阅读
SWM系列关于UART/CAN/PLL等时钟相关模块,计算波特率的方法。
发表于 03-18 16:52
•3629次阅读
恩智浦MPC5744P微控制器芯片手册免费下载。
发表于 03-04 16:06
•15次下载
波特率的计算
STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1。在STM32中,有个波特率寄存器USART_BRR,如下
发表于 02-11 10:46
•15次下载
STM32下波特率计算详解波特率的计算 STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1。在STM32中,有个波特率寄存器
发表于 02-08 06:28
如何学习MPC5744P CAN总线?
发表于 02-07 08:58
/*************笔记****************1、波特率计算:baud=(systime/(pre*(bs1+bs2+sjw)))例如:500khz=(36/(12*(3+2+1
发表于 02-07 07:53
说明:其端口和can需要设置波特率:250/500,和can的类型,can1/can2串口直接和模拟量通信需要设置串口的信息,如下图:蓝牙和模拟量通信,不需要任何设置目前主流的是蓝牙和can通信,这个时候就需要蓝牙设置一下波特率
发表于 01-25 07:33
,F28004x,F28002x等等。
一 原理说明
假设有2块电路板通过SCI进行通信。“Transmitter”向“Receiver”发送未知波特率的数据,“ Receiver”则
发表于 01-12 13:56
•1291次阅读
请问CAN的波特率会和单片机芯片本身有关吗?以前用的STM32F103再加上CAN模块波特率可以到5KB, 现在换成STM8了,同样的CAN模块,低于20KB 就不通了
发表于 01-03 20:17
STM32下波特率计算详解波特率的计算 STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1。在STM32中,有个波特率寄存器
发表于 12-05 09:06
•21次下载
记录一下关于MPC5744P CAN总线学习主要是针对开发出busoff管理,NXP感觉都是一个套路,无论powerpc,还是arm_mstatus_t FLEXCAN_DRV_Init
发表于 12-04 16:51
•11次下载
CAN波特率计算:标称位时间 = 8 TQ:【可配置为8-25】因为:CANRATE =(1/TQ)*8(标称时间)因为:TQ=2*(BRP_val+1)/_XTAL_FREQ 所以:1/TQ=(2
发表于 11-24 08:31
内容提要引言1. MPC5744P的Overlay RAM工作原理介绍2 MPC5744P的Flash Overlay配置详解2.1 平台Flash标定区域描述字寄存器配置字
发表于 11-04 07:53
摘要 本篇笔记主要记录基于恩智浦MPC5744P的CAN驱动开发和测试过程中使用英飞凌TLE9252带功能安全的CAN收发器时候遇到的问题。 准备工作 安装S32DS for PA, 因为我们在
发表于 10-25 15:03
•4916次阅读
的,MPC5744P 支持CAN2.0B。CAN 的高层协议,J1939 是基于CAN2.0B的扩展帧,29位标识符,支持单帧和多帧收发通信。本次设计主要实现SAE J1939 数据链路
发表于 09-24 16:15
•3256次阅读
摘要 本篇笔记主要记录基于恩智浦MPC5744P的CAN驱动开发和测试,接口设计,封装为BSP驱动,为之后实现CAN的高层通信打下基础。。 准备工作 安装S32DS for PA, 因为我们在
发表于 09-03 11:35
•2604次阅读
波特率=APB1Clock/(1+CAN_BS1+CAN_BS2)/CAN_Prescaler(PS:CAN_SJW表示重新同步跳跃宽度,不参与波特率的计算,其值可以编程为1到4个时间单元,表示该
发表于 08-23 06:10
车辆使用的250K 的波特率,使用STM32制作的控制板中的CAN波特率的计算波特率=APB1Clock/(1+CAN_BS1+CAN_BS2)/CAN_Prescaler(PS:CAN_SJW表示
发表于 08-20 08:11
%波特率计算公式:波特率 = 频率/(CAN_BS1+CAN_BS2+1)/CAN_Prescaler采样点计算方式:smp = (1+CAN_BS1)/(1+CAN_BS1+CAN_BS2)以上内容如有错误或描述不合理的地方
发表于 08-20 07:51
波特率=APB1Clock/(1+CAN_BS1+CAN_BS2)/CAN_Prescalereg:APB1Clock=36Mhz,CAN_BS1=3,CAN_BS2=5,CAN
发表于 08-20 06:56
数据至上位机显示已接收到的数据;RCC:复位及时钟控制模块,用于初始化STM32 外设时钟及设置CAN总线通信的波特率;GPIO:通用输入输出口;NVI
发表于 08-20 06:30
STM32CAN波特率简易计算CAN总线通信的各节点通信时会产生相位差,所以要进行位同步,两个节点保持步调一致。CAN_SJW:重新同步跳跃宽度(SJW) 。定义了在每位中可以延长或缩短多少个时间
发表于 08-19 07:18
《STM32从零开始学习历程》@EnzoReventonCAN外设-模式及波特率相关链接:《STM32从零开始学习历程》——CAN通讯协议物理层CAN-bus规范 V2.0版本CAN总线入门周立功
发表于 08-19 07:13
使用的是基于PA架构的NXP MPC5744P。 安装SDK最新版本V3.0.3 NXP DEVKIT-MPC5744P开发板 SPI 通信 SPI通信是一种全双工同步通信,在嵌入式开发中是一种广泛使用的通信接口
发表于 07-27 14:43
•2611次阅读
在数字通信中的数据传输速率与调制速率是两个容易混淆的概念。数据传输速率(又称码率、比特率或数据带宽)描述通信中每秒传送数据代码的比特数,单位是bps。 波特率计算公式有哪些: 在串行通信中,收发双方
发表于 07-08 14:12
•2.1w次阅读
请问一下如何确定CAN通信节点的波特率容忍度?
发表于 05-18 06:33
STM32下波特率计算是怎么来的?
发表于 03-18 07:54
本帖最后由 hoopzhao 于 2020-12-2 10:20 编辑
最近在研究AT32F403A的CAN,发现CAN波特率计算公式计算出来的结果总是不对。花了点时间研究总结了一遍,具体成果
发表于 12-01 19:48
波特率的计算 STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1。在STM32中,有个波特率寄存器USART_BRR,如下
发表于 10-23 14:19
•6061次阅读
本文档的主要内容详细介绍的是波特率计算器的应用程序免费下载。
发表于 07-17 16:52
•14次下载
115200波特率的芯片能与9600波特率的芯片进行通信吗?就直接的通信管脚相连,然后共地
发表于 06-29 17:23
本帖最后由 SingleYork 于 2016-11-8 18:13 编辑 如题: 什么是波特率?如何计算和设置串行通信的波特率? 温馨提示: 请从以下链接中的帖子学习相关内容并进行回答
发表于 05-05 05:55
两个CAN通信是如果波特率设定的不同会怎样?
发表于 04-23 03:07
本文首先阐述了波特率的计算公式,另外还介绍了波特率和字节的关系。
发表于 04-21 14:21
•3.4w次阅读
CANOpen系列教程04_CAN总线波特率、位时序、帧类型及格式说明
发表于 03-06 16:18
•6076次阅读
通信教程06_波特率、比特率、通信速度的区别
发表于 01-10 15:43
•8569次阅读
8051单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod/32)×(定时器T1溢出率),其中smod是PCON《7》,表示是否波特率加倍,Fsoc是系统的晶振大小。
发表于 11-18 16:39
•2163次阅读
由于CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯。
发表于 11-10 09:02
•4877次阅读
不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。
发表于 08-15 15:30
•2844次阅读
影响CAN总线稳定的因素有很多,其中波特率是一项非常重要的指标,很多工程师在选择波特率时非常头疼。今天我们就来说说该如何快速解决特殊波特率计算的问题。CAN总线采用的是异步串行通信,也就是没有单独
发表于 07-29 08:00
前几天写一个程序,碰到一个问题,51单片机常用到的波特率是9600的,但是使用到的模块的波特率是115200的,程序写好了但是功能不能正常实现,所以想到了修改波特率,但是在网上查了好多关于修改波特率的文章,但是都没有直接可以解决问题的,希望写这篇文章可以对遇到相同问题的同学起到帮助。
发表于 06-13 17:45
•11次下载
请教STM32的CAN波特率如何计算?按照手册上是Tbs1 = Tqx(TS1[3:0] + 1)Tbs1 = Tqx(TS1[2:0] + 1) Tq= (BRP[9:0] + 1)xTpclk
发表于 05-17 02:44
据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。又比如每秒钟传送240个二进制位,这时的波特率为240Bd,比特率也是240bps。(但是一般调制速率大于波特率,比如曼彻斯特编码)。波特率,可以通俗的理解为一个设备在一秒钟内发送(或接收)
发表于 05-09 18:17
•0次下载
STM32f103开发板通过OBD2与汽车诊断系统通信,采用的协议是ISO15765-4,然后分为4种情况,波特率250K(数据帧为标准或者扩展帧)、500K(数据帧为标准或者扩展帧).初步做法:当
发表于 12-13 15:55
MPC5744P的内部协处理器FPU是默认开启的吗?需不需要通过设置某些寄存器开启相应的硬件浮点运算功能,该怎么做?通过阅读datasheet发现寄存器MSR有相应的功能位,但是在S32中没有找到寄存器。
发表于 10-19 22:59
我有个问题,我设计了一个关于mpc5744p板子,电路设计基本上都是按照mpc5744p电路,为什么烧写程序烧不进去??
发表于 06-29 11:45
本文介绍了MPC5744P主要特性,框图,以及三相PSMS马达开发板MTRCKTSPS5744P主要特性,框图和电路图。
发表于 06-17 18:54
•2.3w次阅读
不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。
发表于 05-10 11:49
•2.1w次阅读
当波特率相对误差小于4. 5%时,这种采样的偏移将不影响正常的数据接收。但一般为了保证传输的可靠性,通常波特率误差不大于2.5%,而尽量选择最小的传输误差率。
发表于 03-23 14:56
•1.5w次阅读
串行通信在波特率误差超过一定范围时,会产生错误。本节介绍的内容在51单片机上仅用软件就实现了波特率自动整定,最大程度地减小了波特率误差,因而可使串行通信的可靠性得到提高。
发表于 03-23 14:52
•2524次阅读
不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。下面以STM32单片机为例,讲解一下串口波特率的计算方法。
发表于 01-05 09:59
•2.6w次阅读
CAN总线采用的是异步串行通信,也就是没有单独的时钟线来保证各个收发器之间时钟的一致,每个收发器是按事先设置的波特率来对总线上的电平进行分位。因此波特率设置准确对CAN总线的稳定通信来说非常重要。
发表于 09-19 09:07
•26次下载
影响CAN总线稳定的因素有很多,其中波特率是一项非常重要的指标,很多工程师在选择波特率时非常头疼。今天我们就来说说该如何快速解决特殊波特率计算的问题。
发表于 08-30 11:04
•2.6w次阅读
波特率(Baud Rate) 单位 bps -- 每秒传送的字节数 Byte Per Second.。
发表于 08-23 11:54
•41.8w次阅读
CAN总线采用的是异步串行通信,也就是没有单独的时钟线来保证各个收发器之间时钟的一致,每个收发器是按事先设置的波特率来对总线上的电平进行分位。因此波特率设置准确对CAN总线的稳定通信来说非常重要。
发表于 08-17 18:19
•6595次阅读
/shangdawei/p/4641805.htmlwww.cnblogs.com/shangdawei/p/4641805.htmlSTM32 USART 波特率计算The baud rate
发表于 04-21 13:28
51波特率计算
发表于 12-28 11:07
•2次下载
本地430波特率计算器
发表于 12-26 22:38
•3次下载
51波特率计算
发表于 12-17 16:33
•1次下载
51波特率初值计算工具
发表于 12-01 16:44
•1次下载
C51波特率计算工具,感兴趣的小伙伴们可以看看。
发表于 08-03 18:36
•5次下载
最近(2015年1月)飞思卡尔MPC5744p芯片资料,需要的速来。
发表于 02-24 16:30
•35次下载
计算波特率 方便 刚开始来这个论坛玩,把以前有的资料分享
发表于 01-19 14:48
•0次下载
汽车CAN总线设计规范对于CAN节点的波特率容忍度有着严格的规定,每个节点都必须具备一定的波特率容忍度,才能使节点组合到一起后,实现较好的通信性能,不至于很容易就出现总线通讯不正常,通讯错误增加。
发表于 10-15 10:51
•4979次阅读
串口通信中计算波特率的定时器T1的高八位TH1与低八位TL1的初值怎么算,大神出山啊
发表于 09-19 13:00
电子发烧友网站提供《CAN 波特率计算器(MCP2515).exe》资料免费下载
发表于 08-13 19:46
•224次下载
。注意:如果小数部分乘以16之后仍带有小数,则要四舍五入去除小数部分得到一个新的整数,再将其写入USART_BRR的前四位。为什么在计算波特率的公式中要乘以16? 我们知道串口通信是通过TXD和RXD
发表于 03-02 14:12
、9600、14400、19200、28800、38400、57600、115200、230400。USB串口的特殊波特率通信是指300到230400之间但是不同于以上数字的任意波特率的串口通信.由于这些
发表于 10-14 13:17
CAN总线可以在5Kbps波特率时传输最远10Km、在10Kbps波特率时传输最远5Km、在100Kbps波特率时传输最远500m,增加波特率后传输距离大大减小。波仕电子的通信测试结果表明:CAN在
发表于 03-24 14:28
的常用CAN波特率就计算好了,但是需要考虑波特率越高,对晶振的误差越敏感,微小的晶振误差将会导致CAN波特率不匹配而通信失败,为了解决这个问题,可以通过调大SJW的取值来扩大CAN波特率的误差允许范围
发表于 11-23 14:37
想实现FPGA与PC之间的串口通信,用VHDL编程,请问波特率应该如何用VHDL实现?
发表于 08-08 18:32
串口通信波特率计算器
发表于 03-20 21:52
在用51单片机串口通信的时候涉及到波特率与初值的计算问题、下面有个计算小工具,便于你计算。。。。拿出来分享下。。。。
发表于 12-05 22:49
波特率是什么 在数字通信中的数据传输速率与调制速率是两个容易混淆的概念。数据传输速率(又称码率、比特率或数据带宽)描述通信中每秒传送数据代码的比特数,单位是bps。 当
发表于 09-25 08:28
•5.3w次阅读
本帖最后由 eehome 于 2013-1-5 09:46 编辑
波特率计算软件
发表于 08-17 09:38
can波特率其实并不难计算,这里给出了can波特率的简单计算,并给出了实例STM32的CAN波特率计算。讲解CAN波特率计算原理。
发表于 12-14 17:02
•9481次阅读
本文详细论述了单片机与PC机串行通信中波特率的确定原则和方法,特别给出了PC机与单片机串行通信中非标准波特率的计算方法及不同环境下实现的实例。
发表于 08-01 17:29
•1501次阅读
为了方便计算出 NXP 系列CAN 控制器(不包括NXP ARM 内嵌的CAN 控制器)的波特率,可使用如图 1 所示的工具软件。
这款工具软使用简单方便,按以下步骤操作即可轻松实现波
发表于 07-19 15:41
•108次下载
CAN通信波特率设置
LM3S2000、LM3S5000、LM3S8000系列CPU内部有1~3路CAN控制器,通过对CAN位定时寄存器CANBIT及CAN波特率预分频扩展寄存器CANBRPE的设置可以得到需要的CAN
发表于 04-06 18:00
•24次下载
串口波特率计算工具
发表于 03-11 09:38
•177次下载
比特率,波特率,比特和波特的关系是什么?
比特率:在数字信道中,比特率是数
发表于 03-06 14:35
•1w次阅读
51波特率初值计算
发表于 04-26 16:36
•44次下载
数字通信中的数据传输速率、波特率、符号率 在数字通信中的数
发表于 04-16 18:28
•1762次阅读
评论