微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN总线的机车实时监控系统

基于CAN总线的机车实时监控系统

时间:09-12 来源:互联网 点击:

,初始化工作既是一个重点,也是一个难点。can通信初始化包括操作模式的设置、验收滤波器的设置、总线定时器的设置等。验收滤波器的设置决定了节点所接收的信息的格式;定时器设置确定 can总线数据传输波特率。80c51cpu接口将pelican与p87c591微控制器内部总线相连,通过5个特殊功能寄存器canadr、 candat、canmod、cansta和cancon对pelican寄存器和ram区进行快捷的访问。对can进行初始化实际就是对以上5个特殊功 能寄存器的进行读写访问。以下是用c语言编写的初始化子程序代码。

void init_can(void)

{

canmod=0x01;

//将can控制器设置为复位模式以启动初始化

p1m2=p1m2|0x02;

//p1m2.1=`1`,p1m1.1=`0`(默 认)

canadr=btr0;

//btr0和btr1编程为125kbit/s@12mhz

candat=0x45;

canadr=btr1;

//tseg1=12,tseg2=3,sjw=2

candat=0x2b;

//sample=1->sample point~81%

canadr=acr10;

//将地址设置到验收代码寄存器0(bank1)

candat=0x40; // 验收滤波代码

candat=0xe0; //验收滤波代码

canadr=amr10;

//将地址设置到验收屏蔽寄存器 0(bank1)

candat=0x00; //bank1:验收屏蔽0

candat=0x0f; //bank1:验收屏蔽1无关

candat=0xff; //bank1:验收屏蔽2无关

candat=0xff; //bank1:验收屏蔽3无关

canadr=acfmod;

//将地址设置到acf模式寄存器

candat=0x55;

//单验收滤波器使用11位id(sff)

canadr=acfprio;

//将地址设置到acf优先级寄存器

candat=0xff;

//所有滤波器都为高优先级

canadr=acfen;

//将地址设置到acf使能寄存器

candat=0x01;

//使能bank1的验收滤波器

canmod=0x00;

//选择操作模式,退出 can控制器复位模式

}

4 系统软件设计

4.1 can初始化子程序

can控制器的初始化是系统设计工作中极为重要的部分,它是can总线正常工作的前提,关系整个车载系统能否正常工作,初始化工作既是一个重点,也是一个难点。can通信初始化包括操作模式的设置、验收滤波器的设置、总线定时器的设置等。验收滤波器的设置决定了节点所接收的信息的格式;定时器设置确定 can总线数据传输波特率。80c51cpu接口将pelican与p87c591微控制器内部总线相连,通过5个特殊功能寄存器canadr、 candat、canmod、cansta和cancon对pelican寄存器和ram区进行快捷的访问。对can进行初始化实际就是对以上5个特殊功 能寄存器的进行读写访问。以下是用c语言编写的初始化子程序代码。

void init_can(void)

{

canmod=0x01;

//将can控制器设置为复位模式以启动初始化

p1m2=p1m2|0x02;

//p1m2.1=`1`,p1m1.1=`0`(默 认)

canadr=btr0;

//btr0和btr1编程为125kbit/s@12mhz

candat=0x45;

canadr=btr1;

//tseg1=12,tseg2=3,sjw=2

candat=0x2b;

//sample=1->sample point~81%

canadr=acr10;

//将地址设置到验收代码寄存器0(bank1)

candat=0x40; // 验收滤波代码

candat=0xe0; //验收滤波代码

canadr=amr10;

//将地址设置到验收屏蔽寄存器 0(bank1)

candat=0x00; //bank1:验收屏蔽0

candat=0x0f; //bank1:验收屏蔽1无关

candat=0xff; //bank1:验收屏蔽2无关

candat=0xff; //bank1:验收屏蔽3无关

canadr=acfmod;

//将地址设置到acf模式寄存器

candat=0x55;

//单验收滤波器使用11位id(sff)

canadr=acfprio;

//将地址设置到acf优先级寄存器

candat=0xff;

//所有滤波器都为高优先级

canadr=acfen;

//将地址设置到acf使能寄存器

candat=0x01;

//使能bank1的验收滤波器

canmod=0x00;

//选择操作模式,退出 can控制器复位模式

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top