CAN总线波特率配置与计算实例
4星 · 超过85%的资源 需积分: 21 70 浏览量
更新于2024-09-11
收藏 17KB DOCX 举报
"CAN总线的波特率计算涉及到多个参数,包括CAN控制器的晶振频率、总线传输延迟、接收延迟、同步段、传播段、相位缓冲段1和2,以及同步跳跃宽度(SJW)。计算过程需确保满足CAN协议的要求,以确保通信的准确性和稳定性。"
在CAN总线通信中,波特率是衡量数据传输速率的一个关键指标,它定义了每秒传输的位数。CAN总线的波特率计算通常基于以下几个步骤:
1. **确定CAN控制器的晶振频率(fcan_clk)**: 在示例中,fcan_clk为10MHz,这意味着每个时钟周期为100ns。
2. **计算最小时间量子(tq)**: tq等于1除以fcan_clk,即tq = 1/10MHz = 100ns。
3. **评估总线传输延迟**: 包括总线的最长距离(40m)与光速的关系,以及节点的总线输出延迟(50ns)和接收延迟(30ns)。总线最大传输延迟 = 最长距离 / 光速 ≈ 133ns。
4. **计算传播段(Prop_Seg)**: Prop_Seg = 2 * (总线输入延迟 + 总线输出延迟 + 总线最大传输延迟) = 426ns。由于需要冗余预留,Prop_Seg设置为600ns = 6tq。
5. **设定同步段(Sync_Seg)**: Sync_Seg通常为1tq。
6. **设置相位缓冲段1(Phase_Seg1)和2(Phase_Seg2)**: 采样发生在Phase_Seg1和Phase_Seg2之间,因此Phase_Seg2应包含至少1tq的处理时间。所以,Phase_Seg1设为1tq,Phase_Seg2设为2tq。
7. **确定同步跳跃宽度(SJW)**: SJW是最小的调整量,这里为1tq。
8. **计算位时间(Bit_time)**: Bit_time = Sync_Seg + Prop_Seg + Phase_Seg1 + Phase_Seg2 = 10tq,这对应于1Mbps的波特率。
9. **计算晶振漂移容许值**: 漂移容许值(min(Phase_Seg1,Phase_Seg2) / 2 * (13 * Bit_time - Phase_Seg2)) = 0.39%。
10. **配置寄存器**: 根据计算结果配置CAN控制器的波特率寄存器,如例子中所示的0x1600。
此外,示例还提供了宏定义BTR来简化波特率配置,如kBTR_1Mbps和kBTR_500kbps分别用于设置1Mbps和500kbps的波特率。`void set_bitrate(unsigned int btr)`函数用于设置CAN总线的波特率。
CAN波特率的计算是一个精确的过程,涉及到多个参数的调整,以适应不同的通信需求和环境条件,确保CAN总线网络的高效、可靠运行。
2020-07-11 上传
2010-01-14 上传
2023-10-31 上传
2011-02-20 上传
wulei527
- 粉丝: 0
- 资源: 3
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率