打印
[CAN-bus/DeviceNet]

PIC18F458的CAN总线控制器设置的问题

[复制链接]
3222|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lifespace|  楼主 | 2007-6-15 11:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//**************CANB初始化子程序***************
void    initcan(void)
{
    TRISB=(TRISB|0X08)&0XFB;//设置CANRX/RB3为输入,CANTX/RB2为输出

//设置CAN的波特率为125K,在Fosc=4M时,Tbit=8us,假设BRP=01h
//则TQ=[2*(1+BRP)]/Fosc=2*(1+1)/4=1us。
//NOMINAL BIT RATE=8TQ,SJW=1,Sync_Seg=1TQ,Prog _Seg=1TQ,Phase_Seg1=3TQ,Phase_Seg2=3TQ
    CANCON=0X80;    //请求进入CAN配置模式REQOP=100    
    while(CANSTAT&0X80==0){;}    //等待进入CAN配置模式OPMODE=100
    BRGCON1=0X01;    //设置SJW和BRP,SJW=1TQ,BRP=01H
    BRGCON2=0X90;    //设置Phase_Seg1=3TQ和Prog _Seg=1TQ
    BRGCON3=0X42;    //设置Phase_Seg2=3TQ

//设置发送邮箱0标识符号和发送的数据
    TXB0CON=0X03;//发送优先级为最高优先级,TXPRI=11
    TXB0SIDH=0XFF;//设置发送缓冲器0的标准标识符,本程序采用标准识符
    TXB0SIDL=0XE0;
    TXB0DLC=0X08;        //设置数据长度为8个字节
    TXB0D0=0X00;        //写发送缓冲器数据区的数据
    TXB0D1=0X01;
    TXB0D2=0X02;
    TXB0D3=0X03;
    TXB0D4=0X04;
    TXB0D5=0X05;
    TXB0D6=0X06;
    TXB0D7=0XA7;

//设置接收邮箱0的标识符和初始化数据
    RXB0SIDH=0XFF;        //设置接收缓冲器0的标识符    
    RXB0SIDL=0XE0;
    RXB0CON=0X20;    //仅仅接收标准标识符的有效信息,FILHIT0=0表示RXB0采用filter0
    RXB0DLC=0X08;        //设置接收缓冲器0的数据区长度
    RXB0D0=0X00;        //初始化接收缓冲器0的数据区数据
    RXB0D1=0X00;
    RXB0D2=0X00;
    RXB0D3=0X00;
    RXB0D4=0X00;
    RXB0D5=0X00;
    RXB0D6=0X00;
    RXB0D7=0X00;

//初始化接收滤波器0和接收屏蔽,
    RXF0SIDH=0XFF;
    RXF0SIDL=0XE0;
    RXM0SIDH=0X00;
    RXM0SIDL=0X00;

//初始化CAN模块的I/O控制寄存器
    //CIOCON=0X00;

//使CAN进入某种工作模式模式
    CANCON=0X00;    //=0X40,进入自测试模式;=0x00,正常操作模式
    while(CANSTAT&0XE0!=0){;}
    //while(CANSTAT&0X40==0){;}

//初始化CAN的中断
    PIR3=0X00;    //清所有中断标志
    PIE3=0X01;    //使能接收缓冲器0的接收中断
    IPR3=0X00;    //接收缓冲器0的接收中断为最高优先级
}
在最后的两部分中,标准程序将CAN中断的初始化放在了CAN工作模式改变为正常操作模式的设置之后,这样合适么??
我实验了一下,将中断放在了模式操作之前的话,也能正常进行CAN数据的收发。

请问各位高手在调试CAN初始化程序的时候,对这一点是如何认识的?这两部分的前后顺序有区别么?

相关帖子

沙发
桂电飞天鼠| | 2007-6-15 23:53 | 只看该作者

rt

按照SJA1000的用法来说,中断使能无论是复位模式还是在工作模式都可以进行设置,也就是说,在哪设置的结果都是一样的。

这是实验得出的结果~~~

使用特权

评论回复
板凳
lifespace|  楼主 | 2007-6-18 14:22 | 只看该作者

rt

我也做了实验,两者的位置没有关系,放在前面后面都可以的……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

19

帖子

1

粉丝