CAN总线SJA1000节点测试程序实例
需积分: 10 179 浏览量
更新于2024-11-06
收藏 15KB DOCX 举报
"CAN总线参考程序提供了CAN节点的测试示例,包括SJA1000控制器的初始化、数据接收与发送功能。程序适用于学习和理解SJA1000在CAN通信中的应用。"
在给定的程序中,CAN总线通信的关键在于对SJA1000控制器的配置。SJA1000是一款广泛应用的CAN控制器,由Philips(现NXP)公司生产,它能与微处理器进行接口,处理CAN总线上的通信任务。以下将详细解释程序中的几个重要步骤:
1. **初始化**:`Sja_1000_Init`函数是SJA1000的初始化过程,首先关闭中断(`EA=0`),然后进入CAN控制器的返回模式(`BCAN_ENTER_RETMODEL()`),接着创建通信(`BCAN_CREATE_COMMUNATION()`),设置时钟源(`BCAN_SET_OUTCLK(0xc0)`,这里选择了Pelican模式的时钟),定义对象(`BCAN_SET_OBJECT()`),设置波特率(`BCAN_SET_BANDRATE(CAN_BPS_1M)`),并最后设置控制寄存器(`BCAN_SET_CONTROL(0x08)`)。如果在初始化过程中出现错误,函数会返回相应的错误代码。
2. **设置时钟**:`BCAN_SET_OUTCLK`函数用于设置CAN控制器的时钟输出。参数`Clock_Out`决定了时钟的频率,函数通过写入`REG_CDR`寄存器来完成设置。如果设置成功,返回0,否则返回1。
3. **设置对象**:`BCAN_SET_OBJECT`函数用于配置CAN控制器的对象,包括接收滤波器和发送缓冲区等。参数包括多个ACR(接收滤波器配置)和AMR(接收掩码配置)寄存器的值。这些设置决定了控制器如何过滤接收到的数据帧,并确定哪些数据帧会被接收。
4. **波特率设置**:`BCAN_SET_BANDRATE`函数用来设置CAN总线的波特率。在示例中,选择了1Mbps的波特率(`CAN_BPS_1M`)。这决定了CAN网络的数据传输速度。
5. **控制寄存器设置**:`BCAN_SET_CONTROL`函数设置控制寄存器的值。在本例中,设置为0x08,这可能包含了使能CAN控制器或设置工作模式的相关设置。
6. **中断使能**:初始化完成后,重新开启中断(`EA=1`),使得CAN控制器能够响应来自硬件的中断请求,如数据接收和发送事件。
这个参考程序展示了如何建立一个基本的CAN节点,它能发送和接收数据。对于初学者来说,这是一个很好的学习资源,可以帮助理解CAN总线通信协议以及SJA1000控制器的使用方法。通过这个程序,开发者可以进一步扩展和定制自己的CAN节点应用,例如添加错误处理机制、多节点通信以及更复杂的滤波规则等。
2009-12-08 上传
2010-05-14 上传
132 浏览量
306 浏览量
2008-08-30 上传
113 浏览量
heyang1109
- 粉丝: 0
- 资源: 1
最新资源
- 预测ABO3-结构
- 易语言-易语言超级列表框分页
- redux-fundamentals-example-app:Redux基础知识示例应用程序
- C#实体类生成器
- 获取多个游标的坐标8.2_labview获取游标_
- cli-rustdoc:用于Rust包或库的Buildsfinds文档
- react-flask-todilo:React + Flask =待办事项!
- 新海螺模板M3.2版本苹果cms模板全开源源码免授权无后门
- 光电通OEM3000DN兆芯.7z
- shariff-backend-perl:Shariff的Perl(Mojolicious)后端。 Shariff使网站用户可以共享自己喜欢的内容,而不会损害其隐私
- Diagnoser:运行AutoFixer诊断程序任务的脚本
- keras-基础学习课件(追光者).zip
- remote-camera:电子应用程序示例,该应用程序创建Web服务器,然后将连接的用户的远程网络摄像头流式传输到本地计算机
- 2020-2021年-CSAAI-实践:Misprácticasde CSAAI del curso 2020-2021年
- Python系统化基础知识思维导图
- gift-app-node