全文预览

CAN总线的使用

上传者:相惜 |  格式:doc  |  页数:11 |  大小:923KB

文档介绍
的第一个对象,作用是发送 ID=11 的数据。假设我们需要发送 8 字节数据,用 IF1 寄存器组设置消息对象。首先确定消息对象的各个位域的值: ID=11转换为 2进制数为 1011b 以下根据要求确定 IF1 各个寄存器的值: ①IF1 Mask1 (掩码)的值对于发送无作用,可以不设置②IF1 Mask2 的值对于发送无作用,可以不设置③IF1 Arb1 (仲裁)的值为 0000h (理由同①) ④IF1 Arb2 的值为 A02Ch (含义:MsgVal =1表示设置该消息 RAM 有效, 如该位= 0,相当与该消息 RAM 不在使用中;Dir =1表示设定为发送消息;后面为ID号×4的二进制数,因为最低两位为 ID17 、ID16 ) ⑤IF1 消息控制值为 0088h (含义: Eob =1表示该消息对象不属于一个 FIFO ;DLC3-0=8 表示发送 8 字节数据,如果发送小于 8 字节数据,则该为相应值)。⑥IF1 命令掩码寄存器值为 00b0h (含义: WR=1表示从 IF1 向消息 RAM 写; Arb =1 表示传输 ID+Dir +Xtd +Msgval 到消息对象中; Control =1表示传输控制位到消息对象中) ⑦IF1 命令请求寄存器值为 0001h (含义传送 IF1 寄存器组内容到第一个报文对象中;这个寄存器必须在设置完 IF1 的其它寄存器后再写,因为一旦向这个寄存器中写入值后, IF1 寄存器组与消息 RAM 就开始交换数据了。以下是程序代码: mov sfrpage,#1 mov can0adr,#9 mov can0dath,#00h ;这句可以省略 mov can0datl, 0b0h ;执行完后 can0adr 自动加 1 mov can0adr ,#0ch mov can0dath,#0 mov can0datl,#0

收藏

分享

举报
下载此文档