CAN总线节点软件设计摘要.doc_第1页
CAN总线节点软件设计摘要.doc_第2页
CAN总线节点软件设计摘要.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CAN总线节点软件设计CAN总线节点要有效、实时地完成通信任务,软件的设计是关键,也是难点。它主要包括节点初始化程序、报文发送程序、报文接收程序以及CAN总线出错处理程序等等。CAN控制器芯片SJA1000的内部寄存器是以作为微控制器的片外寄存器存在并作用的。微控制器和SJA1000之间状态、控制和命令的交换都是通过在复位模式或工作模式下对这些寄存器的读写来完成的。在初始化CAN内部寄存器时注意使得各节点的位速率必须一致,而且接、发双方必须同步。报文的接收主要有两种方式:中断和查询接收方式。为提高通信的实时性,文中采用中断接收方式,而且这样也可保证接收缓存器不会出现数据溢出现象。SJA1000的BasicCAN工作模式是与其前一款PCA82C200独立控制器相兼容的模式, 而PeliCAN工作模式支持CAN协议中的更多功能,它的程序设计也与之有所不同。下面给出SJA1000工作在模PeliCAN式下的节点初始化、报文发送、报文接收的196汇编源程序。 INITIALIZE: 初始化子程序 LDB AL, #09H; 初始化模式寄存器进入复位模式 STB AL, MODE; 选择单滤波方式 LDB AL, #88H; 时钟分频器STB AL, CDR; 选Peli CAN模式 LDB AL, #00H STB AL, ACR0; 初始化接收代码寄存器 LDB AL, #60H STB AL, ACR1 LDB AL, #00H STB AL, AMR0; 初始化接屏蔽寄存器 LDB AL, #3FH; 只接收标识符为2,3的报文 STB AL, AMR1 LDB AL, #8FH STB AL, IER; 中断使能寄存器 LDB AL, #01H; 总线定时寄存器0、1的设置 STB AL, BTR0; LDB AL, #1CH; 在16MHz晶振情况下 STB AL, BTR1; 波特率设置为250 LDB AL, #0AAH STB AL, OCR; 输出控制器寄存器设置 LDB AL, #0H; 接收缓存器起始地址设为0 STB AL, RBSA; LDB AL, #01H; ORB AL, MODE; STB AL, MODE; 返回工作模式 RETTRANSMIT:; 发送子程序 LDB AL, SR SRCVE: JBS AL,4, SRCVE;正接收 STRSV: JBC AL,3, STRSV;发送成功 STBF: JBC AL, 2, STBF; 发送缓存器锁定否 WID: LDB AL, #08H LD BX, #TXB;发送缓存的首址 STB AL,BX+;传送两个字节的标识符 LDB AL,#ID0 STB AL,BX+ LDB AL,#ID1 STB AL,BX+ LDB COUT,#08H;8个字节数据 TDATA: LDB AL,DATA+ CPU内的发送数据缓存区首址 STB AL,BX+; DJNZ COUT,TDATA; 8个字节发完否? LDB AL,#01H; STB AL,CMR; 发送 RETRECEIVE: ; 接收中断程序 PUSHF; 保护现场 LDB AL,IR JBC AL,0,OTHER; 接收中断否? LD BX,#RXB; 接收缓存器首址 LDB AL,BX+ JBC AL,6,RCDATA;标识符的RTR=1? LDB AL,#04H; 是远程帧,释放接收缓存区 STB AL,CMR; LCALL TRANSMIT; 相应远程帧,发送相应数据 SJMP BACK RCDATA: ANDB AL,#0FH; 取低四位数据长度 ADDB AL,#03H; STB AL,R1; 该报文含有的字节数 LD BX,#RXB; 接收缓存器的首地址 LD CX,#CRBF; CPU内的接收数据缓存区首址 RECE: LDB AL,BX+ STB AL,CX+ INCB R1 DJNZ R1,RECE;接收完否? LDB AL,#04H STB AL,CMR; 释放接收缓存区 BACK; POPF RET系统软件设计(1)CAN 总线通讯模块CAN总线测控系统的通信软件分为3部分:CAN初始化、数据发送和数据接收。 CAN初始化其主要是设置CAN的通信参数。需要初始化的寄存器有:模式寄存器(PeliCAN模式)、时分寄存器、接收代码寄存器、屏蔽寄存器、总线定时寄存器、输出控制寄存器等。需要注意的是,这些寄存器仅能在复位期间可写访向,因此,在对这些寄存器初始化前,必须确保系统进入了复位状态,并且系统中各CAN控制器的总线定时寄存器的初始化字必须相同。 数据发送现场的各传感器把环境多参数的检测信号(数字量、模拟量、开关量)进行转换处理后,发向CAN控制器的发送缓冲区,然后启动CAN控制器的发送命令,此时CAN控制器将自动向总线发送数据,不再需传感器的微控制器进行干预。若系统中有多个传感CAN控制器同时向总线发送数据,则CAN控制器通过信息帧中的标识符来进行仲裁,标识符数值最小的CAN控制器具有对总线的优先使用权。 数据接收整个温室微机测控系统中的CAN控制器检测到总线上有数据时会自动接收总线上的数据,存入其接收缓冲区,并向89C52微控制器发送接收中断,启动中断接收服务程序,89C52通过执行中断接收服务程序,从CAN控制器的接收缓冲区读取数据,并对其进行进一步处理工作。(2)监控模块集成了所有的数据采集、参数设定、数据统计分析等功能。同时,为了实现操作人员对生产过程的人工干预,如修改给定值、控制参数和报警限等,添加了参数的修改功能;为了建立人机信息联系,并且能将各节点传输来的数据以图形、图表或其它动态方式显示出来,本系统可以使用任何具有DDE(Dynamic Data Exchange)接口的MMI(Man-Machine interface)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论