网站首页 > 技术文章 正文
通过前面两篇文章:
CAN通讯系列6- 波特率是什么?
CAN通讯系列7- 如何准确接收数据?
已经详细介绍了波特率,CAN位时间,同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2),采样点等概念。
有了这些基础,本文打算通过一个实例,揭开波特率的神秘面纱。为何这么说?
因为对于汽车研发人员,大多数人只需要关注波特率是否设置正确,只有底层软件开发人员需要去计算和配置波特率相关的参数。下面结合Infineon芯片手册来进行CAN波特率相关参数的计算和配置。
1 计算波特率相关参数
根据Infineon Aurix系列芯片手册提供了CAN位时间的标准格式定义,有:
- Tsync表示同步段(SS)的时间
- Tseg1表示传播时间段(PTS)和相位缓冲段1(PBS1)的时间
- Tseg2表示相位缓冲段2(PBS2)的时间
根据Infineon Aurix系列芯片手册提供的求解方法,这些时间相关量的关系如下所示:
假设需求是:需要设置某路CAN的波特率为500Kbps,采样率为87.5%。已知使用的微控制器的晶振时钟周期频率为20MHz。
首先,将晶振时钟周期频率转换为时间,即有:1/fCAN=1/20MHz=50ns
然后,要设置的波特率为500Kbps,换算时间表示则为1/500 Kbps =2000ns
其次,采样率要设置为87.5,那意味着(Tsync+Tseg1)/ (Tsync+Tseg1+Tseg2)= 7/8,因为CAN位时间长度范围应满足8~25个tq,则CAN位时间可能为8或16或24,此时:
如果CAN位时间为8个tq,那么tq=250ns;根据计算公式:
250ns/50ns=5,因为BRP只能为整数,这时取DIV8=0, BRP=4。
如果CAN位时间为16个tq,那么tq=125ns; 此时125ns/50ns=2.5,不为整数,不成立!
如果CAN位时间为24个tq,那么tq=83.33ns,tq不为整数,不成立!
综上就可以确定CAN位时间应为8个tq,tq=250ns,取DIV8=0, BRP=4。
根据采样点取在87.5%处,根据已有的计算公式,
先算TSEG2,即有:
1-87.5%=Tseg2/NBT=[(TSEG2+1)*tq]/8*tq=(TSEG2+1)/8
即有:TSEG2=0,注意也就是相位缓冲段2(PBS2)为1个tq
那么Tseg1= NBT-Tseg2-Tsync=6tq,所以TSEG1=5。
再根据下式计算SJW,
因为Tseg2=1Tq,所以SJW只能取0。综上有:DIV8=0, BRP=4,TSEG1=5,TSEG2=0,SJW=0。
2 配置波特率相关参数
有了上面的计算结果,接下来底层软件工程师要做的就是对寄存器做配置,比如Infineon的这款芯片是要去配置节点位时间寄存器,如下所示:
配置结果如下:
代码实现形式如下:
而汽车行业都在用AutoSAR工具链进行底层软件开发,比如EB Tresos是常用的MCAL配置工具,利用其进行波特率配置的话,将在下面界面进行配置。
猜你喜欢
- 2024-12-24 CAN通讯系列10- 经典CAN VS. CAN FD
- 2024-12-24 CAN通讯系列9- 负载率怎么算 can线负载率多大合适
- 2024-12-24 干货分享:CAN总线详解 整车的控制只需要一条线
- 2024-12-24 以太网can转换器的波特率怎么设置?
- 2024-12-24 CAN报文解析 can报文解析代码
- 2024-12-24 说说stm32开发板波特率如何用can分析仪来判断?
- 2024-12-24 来可电子元器件CAN FD实战之可变波特率
- 2024-12-24 说说如何修改can总线分析仪的波特率
- 2024-12-24 说说canopen io中的节点号以及波特率如何设置
- 2024-12-24 掌握 CAN 转 PN 网关连接 can 设备的配置要领
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)