?? mcp2515.h
字號(hào):
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
//====================================================================================//
//模式寄存器
#define CAN_MODE 0x0F //模式寄存器
//狀態(tài)寄存器
#define CANSTAT 0x0E //
//比特率設(shè)置寄存器
#define CAN_CNF1 0x2a //CNF1
#define CAN_CNF2 0x29 //CNF2 位時(shí)序
#define CAN_CNF3 0x28 //CNF3
//中斷時(shí)能寄存器
#define CANINTE 0x2B
//中斷標(biāo)志寄存器
#define CANINTF 0x2C
//接收相關(guān)寄存器
#define CAN_BFPCTRL 0x0c //RXnBF接收引腳和狀態(tài)寄存器
/* Recieve Filters */
#define RXF0SIDH 0x00
#define RXF0SIDL 0x01
#define RXF0EID8 0x02
#define RXF0EID0 0x03
#define RXF1SIDH 0x04
#define RXF1SIDL 0x05
#define RXF1EID8 0x06
#define RXF1EID0 0x07
#define RXF2SIDH 0x08
#define RXF2SIDL 0x09
#define RXF2EID8 0x0A
#define RXF2EID0 0x0B
#define RXF3SIDH 0x10
#define RXF3SIDL 0x11
#define RXF3EID8 0x12
#define RXF3EID0 0x13
#define RXF4SIDH 0x14
#define RXF4SIDL 0x15
#define RXF4EID8 0x16
#define RXF4EID0 0x17
#define RXF5SIDH 0x18
#define RXF5SIDL 0x19
#define RXF5EID8 0x1A
#define RXF5EID0 0x1B
/* Receive Masks */
#define RXM0SIDH 0x20
#define RXM0SIDL 0x21
#define RXM0EID8 0x22
#define RXM0EID0 0x23
#define RXM1SIDH 0x24
#define RXM1SIDL 0x25
#define RXM1EID8 0x26
#define RXM1EID0 0x27
//接收緩存0
#define CAN_RXB0CTRL 0x60 //接收緩沖器0控制寄存器
#define CAN_RXB0SIDH 0x61 //接收緩存0標(biāo)準(zhǔn)ID10--ID3
#define CAN_RXB0SIDL 0x62 //接收緩存0標(biāo)準(zhǔn)ID2--ID0 SRR IDE 擴(kuò)展EID17-EID16
//SRR <0:標(biāo)準(zhǔn)數(shù)據(jù)幀 1:標(biāo)準(zhǔn)遠(yuǎn)程發(fā)送請(qǐng)求幀> IDE 0 標(biāo)準(zhǔn)幀 1 擴(kuò)展幀
#define CAN_RXB0EID8 0x63 //擴(kuò)展EID15-EID8
#define CAN_RXB0EID0 0x64 //擴(kuò)展EID7-EID0
#define CAN_RXB0DLC 0x65 //接收緩存0數(shù)據(jù)長(zhǎng)度 0x08
#define CAN_RXB0DM 0x66 //接收緩存0數(shù)據(jù)起始字節(jié)
//接收緩存1
#define CAN_RXB1CTRL 0x70 //接收緩沖器1控制寄存器
#define CAN_RXB1SIDH 0x71 //接收緩存1標(biāo)準(zhǔn)ID10--ID3
#define CAN_RXB1SIDL 0x72 //接收緩存標(biāo)準(zhǔn)ID2--ID0 SRR IDE 擴(kuò)展EID17-EID16
//SRR <0:標(biāo)準(zhǔn)數(shù)據(jù)幀 1:標(biāo)準(zhǔn)遠(yuǎn)程發(fā)送請(qǐng)求幀> IDE 0 標(biāo)準(zhǔn)幀 1 擴(kuò)展幀
#define CAN_RXB1EID8 0x73 //擴(kuò)展EID15-EID8
#define CAN_RXB1EID0 0x74 //擴(kuò)展EID7-EID0
#define CAN_RXB1DLC 0x75 //接收緩存1數(shù)據(jù)長(zhǎng)度 0x08
#define CAN_RXB1DM 0x76 //接收緩存1數(shù)據(jù)起始字節(jié)
//發(fā)送相關(guān)寄存器
#define CAN_TXRTSCTRL 0x0d //TXnRTS發(fā)送請(qǐng)求引腳和狀態(tài)寄存器
//發(fā)送緩沖器0
#define CAN_TXB0CTRL 0x30 //發(fā)送緩沖器0控制寄存器
#define CAN_TXB0SIDH 0x31 //發(fā)送緩存0標(biāo)準(zhǔn)ID10--ID3
#define CAN_TXB0SIDL 0x32 //發(fā)送緩存0標(biāo)準(zhǔn)ID2--ID0 SRR IDE 擴(kuò)展EID17-EID16
//SRR <0:標(biāo)準(zhǔn)數(shù)據(jù)幀 1:標(biāo)準(zhǔn)遠(yuǎn)程發(fā)送請(qǐng)求幀> IDE 0 標(biāo)準(zhǔn)幀 1 擴(kuò)展幀
#define CAN_TXB0EID8 0x33 //擴(kuò)展EID15-EID8
#define CAN_TXB0EID0 0x34 //擴(kuò)展EID7-EID0
#define CAN_TXB0DLC 0x35 //發(fā)送緩存0數(shù)據(jù)長(zhǎng)度 0x08
#define CAN_TXB0DM 0x36 //發(fā)送緩存0數(shù)據(jù)起始字節(jié)
//發(fā)送緩沖器1
#define CAN_TXB1CTRL 0x40 //發(fā)送緩沖器1控制寄存器
#define CAN_TXB1SIDH 0x41 //發(fā)送緩存1標(biāo)準(zhǔn)ID10--ID3
#define CAN_TXB1SIDL 0x42 //發(fā)送緩存1標(biāo)準(zhǔn)ID2--ID0 SRR IDE 擴(kuò)展EID17-EID16
//SRR <0:標(biāo)準(zhǔn)數(shù)據(jù)幀 1:標(biāo)準(zhǔn)遠(yuǎn)程發(fā)送請(qǐng)求幀> IDE 0 標(biāo)準(zhǔn)幀 1 擴(kuò)展幀
#define CAN_TXB1EID8 0x43 //擴(kuò)展EID15-EID8
#define CAN_TXB1EID0 0x44 //擴(kuò)展EID7-EID0
#define CAN_TXB1DLC 0x45 //發(fā)送緩存1數(shù)據(jù)長(zhǎng)度 0x08
#define CAN_TXB1DM 0x46 //發(fā)送緩存1數(shù)據(jù)起始字節(jié)
//發(fā)送緩沖器2
#define CAN_TXB2CTRL 0x50 //發(fā)送緩沖器2控制寄存器
#define CAN_TXB2SIDH 0x51 //發(fā)送緩存2標(biāo)準(zhǔn)ID10--ID3
#define CAN_TXB2SIDL 0x52 //發(fā)送緩存2標(biāo)準(zhǔn)ID2--ID0 SRR IDE 擴(kuò)展EID17-EID16
//SRR <0:標(biāo)準(zhǔn)數(shù)據(jù)幀 1:標(biāo)準(zhǔn)遠(yuǎn)程發(fā)送請(qǐng)求幀> IDE 0 標(biāo)準(zhǔn)幀 1 擴(kuò)展幀
#define CAN_TXB2EID8 0x53 //擴(kuò)展EID15-EID8
#define CAN_TXB2EID0 0x54 //擴(kuò)展EID7-EID0
#define CAN_TXB2DLC 0x55 //發(fā)送緩存2數(shù)據(jù)長(zhǎng)度 0x08
#define CAN_TXB2DM 0x56 //發(fā)送緩存2數(shù)據(jù)起始字節(jié)
//指令定義
#define RESET_COMMAND 0xC0 //復(fù)位指令
#define READ_COMMAND 0x03 //讀寄存器指令
#define READRX_COMMAND 0x90 //讀接收緩存 由1,2兩位確定哪一個(gè)緩存
#define WRITE_COMMAND 0x02 //寫(xiě)寄存器指令
#define WRITETX_COMMAND 0x40 //寫(xiě)發(fā)送緩存,由0,1,2三位確定哪一個(gè)發(fā)送緩存
#define RTS_COMMAND 0x80 //TXB發(fā)送請(qǐng)求
#define RTS0_COMMAND 0x81 //TXB0發(fā)送請(qǐng)求
#define RTS1_COMMAND 0x82 //TXB1發(fā)送請(qǐng)求
#define RTS2_COMMAND 0x84 //TXB2發(fā)送請(qǐng)求
#define RSTATE_COMMAND 0xA0 //快速查詢發(fā)送接收狀態(tài)位
#define RXSTATE_COMMAND 0xB0 //快速查詢RX狀態(tài)
#define BITM_COMMAND 0x05 //位修改指令
/* CNF1 */
#define SJW_1TQ 0x40
#define SJW_2TQ 0x80
#define SJW_3TQ 0x90
#define SJW_4TQ 0xC0
/* CNF2 */
#define BTLMODE_CNF3 0x80
#define BTLMODE_PH1_IPT 0x00
#define SMPL_3X 0x40
#define SMPL_1X 0x00
#define PHSEG1_8TQ 0x38
#define PHSEG1_7TQ 0x30
#define PHSEG1_6TQ 0x28
#define PHSEG1_5TQ 0x20
#define PHSEG1_4TQ 0x18
#define PHSEG1_3TQ 0x10
#define PHSEG1_2TQ 0x08
#define PHSEG1_1TQ 0x00
#define PRSEG_8TQ 0x07
#define PRSEG_7TQ 0x06
#define PRSEG_6TQ 0x05
#define PRSEG_5TQ 0x04
#define PRSEG_4TQ 0x03
#define PRSEG_3TQ 0x02
#define PRSEG_2TQ 0x01
#define PRSEG_1TQ 0x00
/* CNF3 */
#define PHSEG2_8TQ 0x07
#define PHSEG2_7TQ 0x06
#define PHSEG2_6TQ 0x05
#define PHSEG2_5TQ 0x04
#define PHSEG2_4TQ 0x03
#define PHSEG2_3TQ 0x02
#define PHSEG2_2TQ 0x01
#define PHSEG2_1TQ 0x00
#define CAN_500kbps 0 //BRP setting in CNF1
#define CAN_250kbps 1 //Based on 16 MHz Fosc
#define CAN_125kbps 2 //
//====================================================================================//
typedef struct
{
UINT32 flags;
UINT32 cob;
UINT32 id;
UINT16 length;
UINT8 data[8];
} CAN_MSG_t;
BOOL MCP2515_Init(UINT8 baud);
INT32 MCP2515_Read(CAN_MSG_t * pCanMsg);
INT32 MCP2515_Write(CAN_MSG_t * pCanMsg);
BOOL MCP2515_SetBaudrate(UINT8 baud);
BOOL MCP2515_Reset(VOID);
BOOL MCP2515_SetMode(UINT8 mode);
#ifdef __cplusplus
}
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -