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

求助,关于can的3个发送缓冲区

求助,关于can的3个发送缓冲区

各位高人,小弟初学9s12单片机,准备用CAN 做点东西,看了V2 的手册和一些例子,有一个地方一直没想明白,还请各位点拨一下。


9s12的can有3个发送缓冲区,但V2手册上只写了在$30-$3F有一个16字节的缓冲区,请问这个缓冲区是否属于can的3个发送缓冲区之一,如果是,那其他两个缓冲区又在哪里?我始终没找到。


谢谢!

缓冲区有3个,但地址是一样的,即只有两个可见。你再看看发送说明,是通过一个寄存器来查找那个缓冲区空,然后选择这个缓冲区,再把数据放到发送缓冲区的相应寄存器里就可以了

多谢yunfeng,我查了以前的帖子,看到前人发的这个例程,还是有一点不明白:
既然3个发送缓冲区的地址是一个,那是不是发送缓冲区的寄存器也是唯一的呢?
如果是,那下面程序中为什么设有TB0***,TB1***, TB2*** 三个寄存器呢?
如果寄存器不是唯一的,又是在什么地方设定、如何设定呢?

还有,程序中的TBxDSRz与Foreground Transmit Buffer (CANTXFGz)是什么关系?

恳请赐教,感激不尽!


void CANTrans(void)

{
unsigned char BufferEmpty=0;
BufferEmpty=CTFLG;
if(BufferEmpty&1)
{ TB0IDR0=0x61;
TB0IDR1=0x60; //ECU1_CC ID.
TB0DLR=8; //data length=8.
TB0DSR0=ADResult[0];
TB0DSR1=ADResult[1];
TB0DSR2=ADResult[2];
TB0DSR3=ADResult[3];
TB0DSR4=ADResult[4];
TB0DSR5=ADResult[5];
TB0DSR6=0; TB0DSR7=0; //confirm data segment.
TB0TBPR=1; //confirm data buffer priority.
CTFLG=0x01; //buffer0 starts transmission.
}
else if(BufferEmpty&2)
{ TB1IDR0=0x61;
TB1IDR1=0x60; //ECU1_CC ID.
TB1DLR=8; //data length=8.
TB1DSR0=ADResult[0];
TB1DSR1=ADResult[1];
TB1DSR2=ADResult[2];
TB1DSR3=ADResult[3];
TB1DSR4=ADResult[4];
TB1DSR5=ADResult[5];
TB1DSR6=0;
TB1DSR7=0; //confirm data segment.
TB1TBPR=1; //confirm data buffer priority.
CTFLG=0x02; //buffer1 starts transmission.
}
else if(BufferEmpty&4)
{
TB2IDR0=0x61;
TB2IDR1=0x60; //ECU1_CC ID.
TB2DLR=8; //data length=8.
TB2DSR0=ADResult[0];
TB2DSR1=ADResult[1];
TB2DSR2=ADResult[2];
TB2DSR3=ADResult[3];
TB2DSR4=ADResult[4];
TB2DSR5=ADResult[5];
TB2DSR6=0;
TB2DSR7=0; //confirm data segment.
TB2TBPR=1; //confirm data buffer priority.
CTFLG=0x04; //buffer2 starts transmission.
}

}

[此贴子已经被作者于2006-5-16 12:03:34编辑过]

[此贴子已经被作者于2006-5-16 12:12:11编辑过]

你到底是学8位还是16位单片机啊?
8位和16位不一样
你说的代码是8位的
我用的是16位的9s12dg128b,
代码是下面这个帖子里的
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=29760&ID=29760
难道是8 位的?
有没有热心人可以帮忙解释一下啊?这个问题困扰我很久了,谢谢~

[此贴子已经被作者于2006-5-17 21:14:25编辑过]

你贴的代码是8位的
飞思卡尔带我走进神奇的单片机世界
返回列表