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

请教大家一个CAN驱动方面的问题,谢谢!!

请教大家一个CAN驱动方面的问题,谢谢!!

我的芯片MC9S12DG128,首先把我的CAN发送驱动提供给大家,是调通了的
但存在这样一个问题,当连续发多条消息时,中间必须加延时,否则只能发出一条消息
想请问大家这是什么原因?谢谢!!
unsigned char CAN0SendFrame(unsigned long id, unsigned char priority, unsigned char length, unsigned char *txdata ){

unsigned char index;
unsigned char txbuffer = {0};

if (!CAN0TFLG) /* Is Transmit Buffer full?? */
return ERR_BUFFER_FULL;

CAN0TBSEL = CAN0TFLG; /* Select lowest empty buffer */
txbuffer = CAN0TBSEL; /* Backup selected buffer */
/* Load Id to IDR Registers */
*((unsigned long *) ((unsigned long)(&CAN0TXIDR0)))= id;


for (index=0;index *(&CAN0TXDSR0 + index) = txdata[index]; /* Load data to Tx buffer
* Data Segment Registers
*/
}

CAN0TXDLR = length; /* Set Data Length Code */
CAN0TXTBPR = priority; /* Set Priority */

CAN0TFLG = txbuffer; /* Start transmission */

while ( (CAN0TFLG & txbuffer) != txbuffer); /* Wait for Transmission
* completion
*/
return NO_ERR;
}
hello,大家好
我是这样配置的,具体含义,我也不太清除,下面是我对应的通信速率和寄存器对应的表格

10K BTRO:BF BTR1:FF
20K BTRO:31 BTR1:1C
50K BTRO:18 BTR1:1C
125K BTRO:09 BTR1:1C
500K BTRO:01 BTR1:1C
800K BTRO:00 BTR1:1C
希望对你有帮助!!!
hello,大家好
返回列表