新闻中心

EEPW首页>嵌入式系统>设计应用> 基于SJA1000的CAN总线接口电路的设计与实现

基于SJA1000的CAN总线接口电路的设计与实现

作者: 时间:2016-11-28 来源:网络 收藏

3 CAN总线接口软件设计
CAN接口通信软件分为3部分:CAN初始化、数据发送、数据接收。CAN初始化主要是设置CAN 的通信参数。需要初始化的CAN控制寄存器有:模式寄存器、时分寄存器、接收代码寄存器、屏蔽寄存器、总线定时寄存器、输出控制寄存器等。值得注意的是:这些寄存器只能在CAN控制器处于复位状态下才可写访问。发送数据程序把数据存储区中待发送的数据取出,组成信息帧,并将主机的ID地址,填入帧头,然后将信息帧发送到CAN控制器的发送缓冲区。在接收到主机的发送请求后,发送程序启动发送命令。信息从CAN控制器发送到总线是由CAN控制器自动完成的。信息从CAN总线到CAN控制器的接收缓冲区也是由CAN控制器自动完成的。接收程序只需从接收缓冲区读取信息,并将其存储在数据存储区。
#p##e#
3.1 CAN控制器SJA1000的初始化程序
设 SJA1000的首地址是8000H;
CR EQU 8000H;控制寄存器
CMR EQU 8001H;命令寄存器
SR EQU 8002H;状态寄存器
IR EQU 8003H; 中断寄存器
ACR EQU 8004H;验收码寄存器
AMR EQU 8005H;验收屏蔽寄存器
BTR0 EQU 8006H;总线定时寄存器0
BTR1 EQU 8007H;总线定时寄存器1
OCR EQU 8008H;输出控制寄存器
DI
LDB CL, #03H
STB CL, CR;开放接收中断,复位请求位置1,开始初始化
LDB CL, #01H
STB CL, ACR;将节点1标识符送给ACR
LDB CL, #0FFH
STB CL, AMR;验收滤波
LDB CL, #00H
STB CL, BTR0;波特率为250kbps
LDB CL, #14H
STB CL, BTR1;定义位周期宽度,采样点位置及采样次数
LDB CL, #0AAH
STB CL, 0CH
LDB CL, #1AH
STB CL, CR;复位请求位置0,初始化结束
EI
3.2 SJA1000接收与发送数据程序流程
程序流程见图 3、图4.

图 3 接收数据的中断服务程序流程图
图 4 发送数据中断服务程序流程图
4 结 语
该接口电路利用 Xeltek公司的TOPICE-52仿真器进行调试,能模拟实现通信功能。在此基础上构建CAN总线控制系统具有实际意义,但针对不同的控制系统,在硬件和软件上需作相应的改动。
参考文献 :
〔 1〕 邬宽明.CAN总线原理和应用系统设计〔M〕.北京:北京航空航天大学出版社,1996.
〔 2〕 周凤余,鲁守银,李贻斌,等.CAN总线系统智能节点设计与实现〔J〕.微计算机信息,1999,(6):25-27.
〔 3〕 高强,董力川,朱宁.嵌入式CAN总线控制系统设计〔J〕.自动化技术与应用,2002,(2):33-34.
〔 4〕 陆前锋.基于SJA1000的CAN总线智能控制系统设计〔J〕.自动化技术与应用,2003,(1):61-64.

上一页 1 2 下一页

评论


技术专区

关闭