您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

P87C591内嵌CAN控制器的应用设计

时间:2007-1-20栏目:电子通信论文

2,那么任何对CANDAT的访问将使LANADR自动增加。
(范文先生网www.fwsir.com收集整理)
    ③CANMOD对PeliCAN模块寄存器CANMOD是直接进行读写访问的,模式寄存器位于PeliCAN模块中的地址00H。

④CANSTA根据访问方向的不同,CANSTA提供对PeliCAN的状态寄存器和中断使能寄存器的直接访问。对CANST

A的读操作是对PeliCAN的状态寄存器(地址2)进行访问。对CANSTA的写操作是对中断使能寄存器(地址4)进行访问。

⑤CANCON。根据访问方向的不同,CANCON提供对PeliCAN的状态寄存器中断使能寄存器的直接访问。对CANSTA的CANSTA的读操作是对PeliCAN的状态寄存器(地址2)进行访问。对CANSTA的写操作是对中断使能寄存器(地址4)进行访问。

4 基于P87C591的CAN节点接口应用电路

基于87C591的CAN节点接口应用电路十分简单,只需要附加一些CAN收发电路就可以进行CAN总线数据传输。CAN收发芯片采用philips公司的TJA1050收发器。为了增强CAN总线节点的抗干扰能力 ,SJA1000的TX0和RX0并不是直接与TJA1050的TXD和RXF相连,而是通过高速光电耦合器6N167与TJA1050相连。这样,就可以很好地实现总线上的总CAN节点间的电器隔离。不过,应该特别说明的一点是,光电耦合器采用的是两个独立的电源供电,电源Vcc和CAN_V必须完全隔离,否则光耦也就失去了意义。电源的完全隔离可采用小功率的电源隔离模块或通过带多路5V隔离输出的开关电源模块实现。这样虽然电路复杂些,但却提高了节眯的稳定性和安全性,具体节点电路如图3所示。

图3

5 CPU对PeliCAN的软件访问

除了CANMOD、CANSTA、CANCON等PeliCAN常用特殊寄存器可以进行直接读/写访问除外,所有其它的CAN寄存器都需要进行间接寻址。CANADR寄存器指向PeliCAN寄存器的地址,在写操作时将要送到被寻址寄存器的数据写入CANDAT;读操作时被寻址寄存器的数据可以从CANDAT中读出。下面的例子说明了对PeliCAN寄存器的直接和间接寻址功能。

/*模式寄存器的直接寻址*/

CANMOD=0x01;/*位RM置1进入复位模式*/

/*对位定时寄存器0和1的间接寻址*/

CANADR=BTR0;/*将地址设置到BTR0寄存器*/

CANDAT=0x45;/*将数据写入BTR0寄存器*/

CANADR=BTR1;/*将地址设置到BTR1寄存器*/

CANDAT=0x2B;/*将数据写入BTR1*/

下面给出上述节点电路的CAN初始化部分的程序。该程序可以直接应用到其它的系统程序之中。初始化部分的源程序如下:

#include<reg591.h>

void ini_can_controller(void)

{

CANMOD=0x01;/*进入复位模式,启动CAN初始化*/

P1M2=P1M2 I 0x02;/*引脚TXDC设置为推挽模式*/

CANSTA=0x03;/*使能接收和发送中断*/

CANADR=BTR0;/*BTR0和BTR1编程为125kb/s,在12MHz条件下*/

CANDAT=0x45;

CANADR=BTR1;/*TSEG1=12,TSEG2=3,SJW=

上一页  [1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页