首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教一个can08的问题

请教一个can08的问题

最近在做个can转232的程序,串部分以纪通了,不过怎么也can部分怎么也不通,在板子上电工作的情况下,外部发送can信号,can收发器PCA82C250输入端正常,但输出端不是方波,而是电压信号?是什么原因?跟程序有关吗?请牛人指导,谢谢!
总线两端需要加120欧姆的电阻
对,要加一个中断电阻。现在发现程序还有问题,屏蔽寄存器开的时候就不能接受,关掉的话就可以接收了,id的话也对过了,没有问题,这是怎么回事呢?

这是初始化程序:
void mscan08_init(void){
CMCR0=0x01;
CMCR1=0x00;
CBTR0=0x80; //Prescale value is 1 corresponding to BRP value-0
CBTR1=0X23; //Tq num. is 1+3+4=8
// clock is CMGXCLK/2=4MHz
//baudrate = 4MHz/(Pre value(1)*Tq num(8))=500k
CIDAC_IDAM=0; //single 32-bit acceptance filter
CIDAR0=0x41;CIDAR1=0x9c;CIDAR2=0x98;CIDAR3=0x8e;
//CIDMR0=0xff;CIDMR1=0xff;CIDMR2=0xff;CIDMR3=0xff; //Ignore ID
CIDMR0=0x00;CIDMR1=0x00;CIDMR2=0x00;CIDMR3=0x00; //Match ID
CMCR0=0x00;
CRIER=0x01;
}


下面是接收中断程序:
void interrupt canrece_int(void){

id_send[0][0]=0xff;             //只用DSR中的2,7位,其他是校验,自己定义的
id_send[0][1]=REC_DSR2;    
id_send[0][2]=REC_DSR7;
id_send[0][3]=id_send[0][1]+id_send[0][2];

sci_flag=1; //触发串口程序
CRFLG_RXF=1;

}

[此贴子已经被作者于2006-8-19 21:30:27编辑过]

首先怀疑你的波特率设置好想不对。
另外,你可以用:
//Time segment 1: 0
//Time segment 2: 5
//RSJ: 1
CMCR0 = 0x01;
CMCR1 = 0x00;
CBTR0 = 0x40;
CBTR1 = 0x50;
CMCR1_CLKSRC=0;
CMCR0 &= ~1;
CRIER = 0x01;

保证发送端和接收端使用一样的初始化设置

另外,不管总线上有几个节点,必须保证总线两端有120欧姆的电阻。
就是必须而且只能有两个节点有120的电阻
返回列表