📄 can.h
字号:
#ifndef _CAN_H
#define _CAN_H
//Basic_mode寄存器定义
#define SJA_BaseAdr 0x7f00 //SJA1000基址
//sja内部寄存器
#define CONTROL_REG XBYTE[SJA_BaseAdr + 0x00] //控制寄存器
#define COMMAND_REG XBYTE[SJA_BaseAdr + 0x01] //命令寄存器
#define STATUS_REG XBYTE[SJA_BaseAdr + 0x02] //状态寄存器
#define INTERRUPT_REG XBYTE[SJA_BaseAdr + 0x03] //中断寄存器
#define ACR_REG XBYTE[SJA_BaseAdr + 0x04] //验收代码寄存器
#define AMR_REG XBYTE[SJA_BaseAdr + 0x05] //验收屏蔽寄存器
#define BTR0_REG XBYTE[SJA_BaseAdr + 0x06] //总线定时寄存器0
#define BTR1_REG XBYTE[SJA_BaseAdr + 0x07] //总线定时寄存器1
#define OCR_REG XBYTE[SJA_BaseAdr + 0x08] //输出控制寄存器
#define TEST_REG XBYTE[SJA_BaseAdr + 0x09] //测试寄存器
//发送缓冲区
#define Tx_ID_0_REG XBYTE[SJA_BaseAdr + 0x0a]
#define Tx_ID_1_REG XBYTE[SJA_BaseAdr + 0x0b]
#define Tx_Data_1_REG XBYTE[SJA_BaseAdr + 0x0c]
#define Tx_Data_2_REG XBYTE[SJA_BaseAdr + 0x0d]
#define Tx_Data_3_REG XBYTE[SJA_BaseAdr + 0x0e]
#define Tx_Data_4_REG XBYTE[SJA_BaseAdr + 0x0f]
#define Tx_Data_5_REG XBYTE[SJA_BaseAdr + 0x10]
#define Tx_Data_6_REG XBYTE[SJA_BaseAdr + 0x11]
#define Tx_Data_7_REG XBYTE[SJA_BaseAdr + 0x12]
#define Tx_Data_8_REG XBYTE[SJA_BaseAdr + 0x13]
//接收缓冲区
#define Rx_ID_0_REG XBYTE[SJA_BaseAdr + 0x14]
#define Rx_ID_1_REG XBYTE[SJA_BaseAdr + 0x15]
#define Rx_Data_1_REG XBYTE[SJA_BaseAdr + 0x16]
#define Rx_Data_2_REG XBYTE[SJA_BaseAdr + 0x17]
#define Rx_Data_3_REG XBYTE[SJA_BaseAdr + 0x18]
#define Rx_Data_4_REG XBYTE[SJA_BaseAdr + 0x19]
#define Rx_Data_5_REG XBYTE[SJA_BaseAdr + 0x1a]
#define Rx_Data_6_REG XBYTE[SJA_BaseAdr + 0x1b]
#define Rx_Data_7_REG XBYTE[SJA_BaseAdr + 0x1c]
#define Rx_Data_8_REG XBYTE[SJA_BaseAdr + 0x1d]
//时钟分频寄存器
#define CDR_REG XBYTE[SJA_BaseAdr + 0x1f]
//命令字定义
#define Release_Rx_buf 0x04
#define Tx_Request 0x01
#define Tx_ID_0 0x91
#define Tx_ID_1 0x08 //DLC = 3,NOT RTR
#endif
第31章 基于51单片机的CAN总线通信实例
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -