基于P87C591的CAN总线控制系统的设计研究
发布时间:2008/6/3 0:00:00 访问次数:375
引言
现场总线技术是一种基于现场设备之间进行数据通讯的新型总线系统,它综合了计算机技术、数字通讯技术、自动控制技术、网络技术和智能仪表等各种技术手段,从根本上突破了传统的“点对点”式的模拟信号或数字—模拟信号控制的局限性,构成了一种全分散、全数字化、智能化双向、互连、多变量、多结点的通信控制系统。
can总线是德国bosch公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通讯协议。can总线以其高性能、高可靠性及其独特的设计越来越受到人们的重视,并被公认为是汽车电控系统中最有前途的总线之一。奔驰、宝马、大众等一些国际著名汽车生产厂家已经在各自的产品中采用了can总线技术。目前,国内的汽车生产厂家也已经开始重视该项技术。毫无疑问,can总线技术将是今后车载网络领域的主流协议标准。
p87c591芯片的特点
p87c591是一个单片8位高性能微控制器,除了80c51的标准特性之外,器件还为实际应用提供许多专用的硬件功能。片中带16k字节内部程序存储器,可外部扩展到64k字节;512字节片内数据ram,可外部扩展到64k字节;并且有3个16位定时/计数器t0, t1(标准80c51)和附加的t2(捕获&比较),2个8位分辨率的脉宽调制输出(pwm),包含一个看门狗定时器t3。p87c591中包括4个中断优先级,l5个中断源,为编写高效率的程序软件提供了强大的硬件支持。
p87c591是nxp半导体公司推出的带有在片can控制器sja 1000的新型微控制器。它完全履行can 2.0规范并提供一个独立can控制器的软件移植路径。其中包括增强型验收滤波器、支持系统维护、诊断、系统优化以及接收fifo特性。该嵌入式can控制器包括了具有can的扩充特性。该嵌入式can控制器包括了下列功能模块:
① can内核模块根据can 2. 0规范控制can帧的接收和发送。
② can接口包含5个实现cpu与can控制器连接的特殊功能寄存器。
③ can控制器的发送缓冲区能够保存一个完整的can信息格式。只要通过cpu启动发送,信息字节就从发送缓冲区传输到can内核模块。
④ 所有验收滤波器验收的接收数据都保存在接收fifo中。取决于操作模式和数据长度的不同,最多可存放21个can信息。
⑤ 当接收一个信息时,can内核模块将串行位流转换成并行数据输入到验收滤波器,通过该可编程滤波器,p87c591确定实际接收到的信息。
p87c591微控制器内部总线通过80c51微处理器接口与peiican相连。通过canadr(地址)、candat(数据)、canmod(模式)、cansta(状态)和cancon(控制)5个特殊功能寄存器对peiican寄存器和ram区进行访问。图1为p87c591的功能框图。
硬件电路设计
本文所设计的控制系统的can总线节点硬件电路由微处理器(p87c591)、can总线通信接口的收发器(nxp公司的82c250)和功能装置(传感器、执行器等)组成。如 图2所示为控制系统can总线节点通讯相关的硬件电路原理图。由于p87c591本身含有can模块,因此不需要外加can控制器,所需要的外部元件仅仅是一个晶振加两个电容,一个连接到复位脚的电容(使用片内复位电路)以及一个收发器用于将p87c591连接到can总线。
为了防止干扰,在can总线节点硬件设计上采取了以下措施:
①82c250与can总线的接口部分采取了抗干扰措施。82c250的canh和canl引脚各自通过一个5? 的电阻与can总线相连,电阻可起到一定的限流作用,保护82c250免受过流的冲击。canh和canl与地之间并联了两个30pf的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射能力。另外在两根can总线接入端与地之间分别反接了一个保护二极管,当can总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。
② 总线两端应接有两个120?电阻,对于匹配总线阻抗起着重要的作用,忽略掉它们会使数据通信的抗干扰性及可靠性大大降低甚至无法通信。
在can总线程序设计中,初始化程序是整个软件设计中的重点和难点,它直接关系到系统能否正常工作。对can 控制器进行初始化,实际上就是对集成can控制器的p87c591芯片中的寄存器进行初始化设置,并对报文接收缓冲区进行设置。内容包括:操作模式、txdc输出管脚的配置、总线定时、验收滤波器、中断等。can控制器初始化流程图如图3所示。
硬件电路设计
本文所设计的控制系统的can总线节点硬件电路由微处理器(p87c591)、can总线通信接口的收发器(nxp公司的82c250)和功能装置(传感器、执行器等)组成。如 图2所示为控制系统can总线节点通讯相关的硬件电路原理图。由于p87c591本身含有can模块,因此不需要外加can控制器,所需要的外部元件仅仅是一个晶振加两个电容,一个连接到复位脚的电容(使用片内复位电路)以及一个收发器用于将p87c591连接到can总线。
为了防止干扰,在can总线节点硬件设计上采取了以下措施:
①82c250与can总线的接口部分采取了抗干扰措施。82c250的canh和canl引脚各自通过一个5? 的电阻与can总线相连,电阻可起到一定的限流作用,保护82c250免受过流的冲击。canh和canl与地之间并联了两个30pf的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射能力。另外在两根can总线接入端与地之间分别反接了一个保护二极管,当can总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。
② 总线两端应接有两个120?电阻,对于匹配总线阻抗起着重要的作用,忽略掉它们会使数据通信的抗干扰性及可靠性大大降低甚至无法通信。
在can总线程序设计中,初始化程序是整个软件设计中的重点和难点,它直接关系到系统能否正常工作。对can 控制器进行初始化,实际上就是对集成can控制器的p87c591芯片中的寄存器进行初始化设置,并对报文接收缓冲区进行设置。内容包括:操作模式、txdc输出管脚的配置、总线定时、验收滤波器、中断等。can控制器初始化流程图如图3所示。