|
void can_send_message( long id, uchar *data7, uchar length, uchar flags)
{
uchar temp[4];
if (length > 8)
length = 0;
//设置发送缓冲器0 发送优先级,TXP[1:0] = 11 , 为最高发送优先级
mcp2515_bit_modify( TXB0CTRL, TXP, TXP_HIGHEST );
// 根据标志位,确定其ID格式,标准格式或扩展格式,同时发送其ID
if (flags)
{
/*
temp[0] = (u08) (id>>21); //取出基本ID的高8位
//取出基本ID的低三位,加上扩展ID的高2位,同时设置扩展标示符EXIDE使能
temp[1] = (((u08) (id>>16)) & 0x03) | (((u08) (id>>13)) & 0xE0) | (1<<EXIDE);
temp[2] = (u08) (id>>8); //取扩展ID
temp[3] = (u08) id;
*/
}
else //标准格式,11位ID
{
temp[0] = (uchar) (id>>3); //取出基本ID的高8位
temp[1] = (uchar) (id<<5); //取出基本ID的低3位 , 同时设置扩展标示符EXIDE为0,即禁用
temp[2] = 0;
temp[3] = 0;
}
mcp2515_write_register_p( TXB0SIDH, temp, 4 ); //发送ID
// 根据标志位,设定报文是否为远程发送请求,同时设定数据字节数
//if (flags & CAN_RTR)
if (flags)
{
//mcp2515_write_register( TXB0DLC, length | (1<<RTR) ); //设定发送的报文为远程发送请求,并定义报文数据字节数
}
else
mcp2515_write_register( TXB0DLC, length ); // 设定报文的数据字节数
//写入发送数据
mcp2515_write_register_p( TXB0D0, data7, length );
// 请求发送报文,发送缓冲器为TXB0
mcp2515_bit_modify( TXB0CTRL, TXREQ, TXREQ_SET );
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|