FlexCAN模块初始化与CAN协议详解
需积分: 44 195 浏览量
更新于2024-08-08
收藏 778KB PDF 举报
"初始化/应用信息-pxi总线接口协议"
FlexCAN模块是微控制器中用于实现CAN(Controller Area Network)协议的一个通信控制器,特别针对CAN2.0B规范进行设计。CAN协议广泛应用于汽车电子系统,因为它具有实时性、抗干扰性、成本效益和带宽管理等优点。FlexCAN模块具备多个特性,如支持标准和扩展帧格式、可编程的波特率以及多种错误处理机制。
48.5.1 FlexCAN模块初始化序列
初始化FlexCAN模块通常涉及以下几个步骤:
1. **硬件复位**:MCU级别的硬件复位将重置所有内存映射寄存器,这个过程是异步的。
2. **软件复位**:MCU级别的软件复位同步复位特定内存映射寄存器,它涉及到内部的请求/确认过程,可能需要一定时间来完成。复位期间,SOFT_RST位保持置位,软件可以通过轮询此位来判断复位是否完成。值得注意的是,软件复位不适用于任何低功耗模式时钟关闭的情况。
3. **MCR寄存器的SOFT_RST位**:设置此位也会触发一个与软件复位相同的效果,复位过程同样需要时间来传播其影响。
FlexCAN模块的初始化还可能包括配置波特率、设置接收和发送缓冲区、定义接收掩码寄存器、启用接收队列以及设定中断和错误处理机制。波特率的设置通常通过可编程的CAN协议接口时钟源完成,它可以是总线时钟或者是外部晶振。
48.1.1 FlexCAN模块的组成部分
FlexCAN模块由多个子模块构成,包括:
- **消息缓冲区**:用于存储发送和接收的消息帧,其数量取决于具体MCU的配置。
- **Rx全局掩码寄存器和Rx私有掩码寄存器**:用于筛选接收到的消息,确保只有符合特定条件的数据帧被接收。
- **Rx先进先出队列**:自动管理接收消息的存储和处理。
- **Rx队列标识过滤器**:帮助确定哪些消息应被接收并放入队列。
48.1.2 FlexCAN模块的主要特点
FlexCAN模块的特点包括:
1. **CAN2.0B协议的完整支持**:涵盖标准数据帧和扩展数据帧,数据长度可变。
2. **灵活的消息缓冲区**:每个缓冲区可以作为发送或接收缓冲区,并能适应不同帧格式。
3. **接受掩码控制**:每个缓冲区有自己的接受掩码,增加了接收的灵活性。
4. **全功能接受队列**:自动处理内部指针,最多可存储6个帧。
5. **传输中止能力**:允许在传输过程中停止发送。
6. **可编程时钟源**:支持总线时钟或外部晶振。
7. **回环模式**:用于自测试。
8. **优先级机制**:可通过ID、缓冲区数量或优先级进行设置。
9. **时间戳机制**:基于16位自由运行定时器,用于时间同步。
10. **全局网络时间**:通过特殊帧同步网络时间。
11. **中断掩码**:允许选择性地屏蔽中断。
12. **独立传输媒介**:需要外部收发器进行物理层通信。
13. **优先级高的信息处理**:快速响应高优先级信息。
FlexCAN模块是实现CAN通信的核心组件,其丰富的功能和灵活的配置选项使其成为嵌入式系统中实现高效、可靠的CAN通信的关键。在初始化和应用中,理解并正确操作FlexCAN模块的各项特性和功能至关重要。
2013-09-08 上传
2008-11-24 上传
2020-12-13 上传
2009-12-18 上传
390 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
陆鲁
- 粉丝: 27
- 资源: 3883
最新资源
- turtle-logo:用于Turtle徽标编程语言的MakeCode扩展
- screepsmod-mongo:用MongoDB和Redis替换LokiJS
- Personal-Website:我的个人作品集展示了我的经验和项目
- elirehema:自述文件
- EightInSeven:Minecraft 1.8 1.7.10 的可见性行走算法
- illustrator-scripts-for-mobile:Illustrator脚本的集合,这些脚本可将图层或画板导出到不同密度的PNG(iOS Retina Display,Android设备等)
- Andron
- 安卓电视机大屏显示ui设计
- Assertions:作证断言集
- 正常运行时间:st stitcombe的正常运行时间监控器和状态页面,由@upptime提供支持
- mern:Mern edu应用
- 行业文档-设计装置-一种降低混合机物料残留的方法.zip
- nvim:这是我的nvim点文件。 它已经被配置为在您的系统中自动安装vim-plug
- 疯狂java讲义源码下载-The-Way-I-Learn-Android:我的Android学习之路,主要记录我的android的学习过程,时
- html_rocketseat
- Python库 | FuXi-1.0_rc.dev-py2.5.egg