基于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控制器复位模式
}
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控制器复位模式
}
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)