⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcp2515.h

📁 430配合数字电位器使用
💻 H
字号:
#ifndef __MCP2510_H
#define __MCP2510_H

#include "predef.h"

/* 寄存器地址 */
#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 BFPCTRL				0x0c
#define TXRTSCTRL			0x0d

#define CANSTAT				0x0e
#define CANCTRL				0x0f

#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
#define TEC                 0x1c
#define REC                 0x1d
#define RXM0SIDH			0x20
#define RXM0SIDL			0x21
#define RXM0EID8			0x22
#define RXM0EID0			0x23
#define RXM1SIDH			0x24
#define RXM1SIDL			0x25
#define RXM1EID8			0x26
#define RXM1EID0			0x27
#define CNF3				0x28
#define CNF2				0x29
#define CNF1				0x2a
#define CANINTE				0x2b
#define CANINTF				0x2c
#define EFLG				0x2d
#define TXB0CTRL			0x30
#define TXB0SIDH			0x31
#define TXB0SIDL			0x32
#define TXB0EID8			0x33
#define TXB0EID0			0x34
#define TXB0DLC				0x35
#define TXB0D0				0x36
#define TXB0D1				0x37
#define TXB0D2				0x38
#define TXB0D3				0x39
#define TXB0D4				0x3a
#define TXB0D5				0x3b
#define TXB0D6				0x3c
#define TXB0D7				0x3d
#define TXB1CTRL			0x40
#define TXB1SIDH			0x41
#define TXB1SIDL			0x42
#define TXB1EID8			0x43
#define TXB1EID0			0x44
#define TXB1DLC				0x45
#define TXB1D0				0x46
#define TXB1D1				0x47
#define TXB1D2				0x48
#define TXB1D3				0x49
#define TXB1D4				0x4a
#define TXB1D5				0x4b
#define TXB1D6				0x4c
#define TXB1D7				0x4d
#define TXB2CTRL			0x50
#define TXB2SIDH			0x51
#define TXB2SIDL			0x52
#define TXB2EID8			0x53
#define TXB2EID0			0x54
#define TXB2DLC				0x55
#define TXB2D0				0x56
#define TXB2D1				0x57
#define TXB2D2				0x58
#define TXB2D3				0x59
#define TXB2D4				0x5a
#define TXB2D5				0x5b
#define TXB2D6				0x5c
#define TXB2D7				0x5d
#define RXB0CTRL			0x60
#define RXB0SIDH			0x61
#define RXB0SIDL			0x62
#define RXB0EID8			0x63
#define RXB0EID0			0x64
#define RXB0DLC				0x65
#define RXB0D0				0x66
#define RXB0D1				0x67
#define RXB0D2				0x68
#define RXB0D3				0x69
#define RXB0D4				0x6a
#define RXB0D5				0x6b
#define RXB0D6				0x6c
#define RXB0D7				0x6d
#define RXB1CTRL			0x70
#define RXB1SIDH			0x71
#define RXB1SIDL			0x72
#define RXB1EID8			0x73
#define RXB1EID0			0x74
#define RXB1DLC				0x75
#define RXB1D0				0x76
#define RXB1D1				0x77
#define RXB1D2				0x78
#define RXB1D3				0x79
#define RXB1D4				0x7a
#define RXB1D5				0x7b
#define RXB1D6				0x7c
#define RXB1D7				0x7d

/* 命令 */
#define CMD_RESET           0xc0
#define CMD_READ            0x03
#define CMD_RRXB0SIDH       0x90
#define CMD_RRXB0D0         0x92
#define CMD_RRXB1SIDH       0x94
#define CMD_RRXB1D0         0x96
#define CMD_WRITE           0x02
#define CMD_LTXB0SIDH       0x40
#define CMD_LTXB0D0         0x41
#define CMD_LTXB1SIDH       0x42
#define CMD_LTXB1D0         0x43
#define CMD_LTXB2SIDH       0x44
#define CMD_LTXB2D0         0x45
#define CMD_REQUEST0        0x81
#define CMD_REQUEST1        0x82
#define CMD_REQUEST2        0x84
#define CMD_READSTATUS      0xa0
#define CMD_GETRXSTATUS     0xb0
#define CMD_BITMODIFY       0x05


/* CAN 通信协议 */
#define bufn0 0
#define bufn1 1
#define bufn2 2

#define BtPri 0x80

#define btFrameType0  0x00     // 主控发命令,优先级最高
#define btFrameType1  0x10     // 主控发数据,
#define btFrameType2  0x20     // 参数帧,子模块向主模块传递参数设置
#define btFrameType3  0x30     // 数据帧,子模块向主模块传递推子位置

#define btModuleId0  0x00        // 主控
#define btModuleId1  0x01        // 子模块1#
#define btModuleId2  0x02        // 子模块1#
#define btModuleId3  0x03        // 子模块1#
#define btModuleId4  0x04        // 子模块1#
#define btModuleId5  0x05        // 子模块1#
#define btModuleId6  0x06        // 子模块1#
#define btModuleId7  0x07        // 子模块1#
#define btModuleId8  0x08        // 子模块1#
#define btModuleId9  0x09        // 子模块1#
#define btModuleId10  0x0a        // 子模块1#
#define btModuleId11  0x0b        // 子模块1#
#define btModuleId31  0x1f        // 子模块31#

#define btChnId0   0x00
#define btChnId1   0x01
#define btChnId2   0x02
#define btChnId3   0x03
#define btChnId4   0x04
#define btChnId5   0x07      // 传送4个通道的AD值

#define CAN_CMD_EQ3		0x83
#define CAN_CMD_KEY		0xb0   // 按键 
#define CAN_CMD_LAP		0xa0   // LED
#define CAN_CMD_NAME		0xc0
#define CAN_CMD_AD		0xad


/* 一个报文结构 */
typedef struct{
	//u8_t	bIsRTR: 1;
	u8_t	btChnIndex ;
	u8_t	btModuleIndex ;
	u8_t	btFrameType;
	u8_t	btPRI;	
	u8_t	btDataLen;         //(1~8)
	u8_t	btCommand;
	u8_t	btData[7];
}CAN_FRAME;

/* 函数声明 */
void MCP2515_Reset(void);                           // mcp2515复位
u8_t MCP2515_ReadReg(u8_t);                         // mcp2515读寄存器
void MCP2515_WriteReg(u8_t, u8_t);                  // mcp2515写寄存器
void MCP2515_ReadSeqReg(u8_t, u8_t *, u8_t);        // 顺序读寄存器内容
void MCP2515_WriteSeqReg(u8_t, u8_t *, u8_t);       // 顺序写寄存器内容

void MCP2515_SndRequest(u8_t);                      // mcp2515请求发送Tx中的内容
void MCP2515_BitModify(u8_t, u8_t, u8_t);           // mcp2515位修改
void MCP2515_Init(void);                            // mcp2515初始化

void sendStandardFrame(u8_t , u8_t , u8_t , u8_t , u8_t , u8_t , u8_t , u8_t *);
extern void delay(u32_t);

/* 外部全局变量 */

extern u8_t stdFrameID[2];                        // ID寄存器值
extern u8_t stdFrameDLC;                          // DLC寄存器值
extern u8_t stdRecvLength;                        // 接收的数据长度
extern u8_t stdData[8];                           // 接收到的数据

extern u8_t id[4];
extern u8_t TData[4];
extern u8_t RData[20];

extern u8_t TxFrameID[2];              //发送帧ID
extern u8_t TxFrameDLC;
extern u8_t TxFrameData[8];

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -