📄 can.c
字号:
/*------------------------------------------------------
FILE NAME : can.c
DESCRIPTION : CAN FUNTION.
VERSION : 1.0.0
AUTHOR :
CREATE DATE : 03.12.2009
MODIFY DATE : 04.5.2009
LOGS :-\
--------------------------------------------------------*/
//-----------------Include files-------------------------//
#include "..\header\mcp2515.h"
#include "..\header\can.h"
#include "..\header\hardware.h"
#include "..\header\uart.h"
#include <string.h>
//-----------------Function Prototype--------------------//
//-----------------Variable------------------------------//
//-----------------Function------------------------------//
/*---------------------------------------------------------------
NAME : can_init(void)
ENTRY TYPE: unsigned char
RETURN TYPE:
PURPOSE :
VERSION : 1.0.0
DESCRIPTION: can initialize
CREATE DATE: ---
LOGS : 1.first create 04.05.2009
-------------------------------------------------------------------------*/
unsigned char can_init(void)
{
mcp2515_clock();
mcp2515_reset();
mcp2515_init_can_buffers();
mcp2515_config_rate();
//mcp2515_filter_intialize();
return 0;
}
/*---------------------------------------------------------------
NAME : intit_message_struct
ENTRY TYPE: void
RETURN TYPE:
PURPOSE :
VERSION : 1.0.0
DESCRIPTION: message struct initialize, clear the the CAN_MESSAGE struct.
CREATE DATE: ---
LOGS : 1.first create 04.05.2009
-------------------------------------------------------------------------*/
void init_message_struct(CAN_MESSAGE* msg)
{
memset(msg,0,sizeof(CAN_MESSAGE));
}
/*---------------------------------------------------------------
NAME : can_send_message(void)
ENTRY TYPE: unsigned char
RETURN TYPE:
PURPOSE :
VERSION : 1.0.0
DESCRIPTION: can initialize
CREATE DATE: ---
LOGS : 1.first create 04.05.2009
-------------------------------------------------------------------------*/
unsigned char can_send_message(const CAN_MESSAGE* msg)
{
unsigned char rec,free_txbuf;
mcp2515_set_register(MCP_CANINTE,0x00); // clear the INT
// rec=mcp2515_read_status();
// while(rec&0x04) ;
mcp2515_get_free_txbuf(&free_txbuf); //get the free buffer for sending the data;
mcp2515_write_can_msg(free_txbuf, msg); //buffer 31h;
mcp2515_start_transmit(); //start the transmit;
//mcp2515_rts();
return 0;
}
/*---------------------------------------------------------------
NAME : can_read_message()
ENTRY TYPE: unsigned char
RETURN TYPE:
PURPOSE :
VERSION : 1.0.0
DESCRIPTION: can read message
CREATE DATE: ---
LOGS : 1.first create 04.05.2009
-------------------------------------------------------------------------*/
unsigned char can_read_message(CAN_MESSAGE *msg)
{
unsigned char stat, res;
//char buf[10];
stat = mcp2515_read_status();
//send_string_to_uart(buf);
if ( stat & 0x01 ) {
// Msg in Buffer 0
mcp2515_read_can_msg( MCP_RXB0SIDH, msg); //
mcp2515_modify_register(MCP_CANINTF, 0x01, 0); //clear the receive interrupt identify;
res = 1;
}
else if ( stat & 0x02 ) {
// Msg in Buffer 1
mcp2515_read_can_msg( MCP_RXB1SIDH, msg);
mcp2515_modify_register(MCP_CANINTF, 0x02, 0);
res = 1;
}
else {
res = 0;
}
return res;
}
/*---------------------------------------------------------------
NAME : can debug(void)
ENTRY TYPE: unsigned char
RETURN TYPE:
PURPOSE :
VERSION : 1.0.0
DESCRIPTION: can debug
contain:...
CREATE DATE: ---
LOGS : 1.first create 04.05.2009
-------------------------------------------------------------------------*/
unsigned char can_test_transmit(const unsigned char ext)
{
CAN_MESSAGE msg;
init_message_struct(&msg);
msg.identifier = 0xff; //ID;
msg.extended_identifier = ext;
msg.dlc = 8; // the width of the data;
msg.dta[0] = 0x56; //data;
msg.dta[1] = 0xff;
msg.dta[2] = 0x78;
msg.dta[3]=0x55;
msg.dta[4]=0x89;
msg.dta[5]=0xab;
msg.dta[6]=0X00;
msg.dta[7]=0xbc;
can_send_message(&msg);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -