📄 canreg.h
字号:
interrupt.
2.Bits 7:0 in this register correspond 1-to-1 with bits 7:0 in the CANICR register.
*********************************************************************************************************/
typedef union _canier_
{
INT32U DWord; /* 字操作定义 */
struct
{
INT32U RIE :1; /* 接收中断使能位 */
INT32U TIE1 :1; /* TxBUF1发送完成中断使能位 */
INT32U EIE :1; /* 错误报警中断使能位 */
INT32U DOIE :1; /* 数据溢出中断使能位 */
INT32U WUIE :1; /* 睡眠模式唤醒中断使能位 */
INT32U EPIE :1; /* 错误认可中断使能位 */
INT32U ALIE :1; /* 仲裁丢失中断使能位 */
INT32U BEIE :1; /* 总线错误中断使能位 */
INT32U IDIE :1; /* 接收到CAN标识符中断使能位 */
INT32U TIE2 :1; /* TxBUF2发送完成中断使能位 */
INT32U TIE3 :1; /* TxBUF3发送完成中断使能位 */
INT32U RSV21 :21; /* 保留位 */
}Bits;
}uCANIER,*P_uCANIER;
#define CANIER(CanNum) (*((volatile P_uCANIER)( CANIER_BADR+CanNum* CAN_OFFSET_ADR )))
/*********************************************************************************************************
定义 CANBTR 寄存器:
1.This register controls how various CAN timings are derived from the VPB clock.
2.It can be read at any time, but can only be written if the RM bit in CANmod is 1.
*********************************************************************************************************/
typedef union _canbtr_
{
INT32U DWord; /* 字操作定义 */
struct
{
INT32U BRP :10; /* 预分频位组合定义 */
INT32U RSV4 :4; /* 保留位 */
INT32U SJW :2; /* 同步跳转宽度 */
INT32U TSEG1 :4; /* 时间段1 */
INT32U TSEG2 :3; /* 时间段2 */
INT32U SAM :1; /* 采样模式位 */
INT32U RSV8 :8; /* 保留 */
}Bits;
}uCANBTR,*P_uCANBTR;
#define CANBTR(CanNum) (*((volatile P_uCANBTR)( CANBTR_BADR+CanNum* CAN_OFFSET_ADR )))
/*********************************************************************************************************
定义 CANEWL 寄存器:
1.This register sets a limit on Tx or Rx errors at which an interrupt can occur.
2.It can be read at any time, but can only be written if the RM bit in CANmod is 1.
*********************************************************************************************************/
typedef union _canewl_
{
INT32U DWord; /* 字操作定义 */
struct
{
INT32U EWL :8; /* 出错警告界限值 */
INT32U RSV24 :24; /* 保留位 */
}Bits;
}uCANEWL,*P_uCANEWL;
#define CANEWL(CanNum) (*((volatile P_uCANEWL)( CANEWL_BADR+CanNum* CAN_OFFSET_ADR )))
/*********************************************************************************************************
定义 CANSR 寄存器:
1.This register contains three status bytes, in which the bits not related to tranmission are identical
to the corresponding bits in the Global Status Register, while those relating to transmission
reflect the status of each of the 3 Tx Buffers.
*********************************************************************************************************/
typedef union _cansr_
{
INT32U DWord; /* 字操作定义 */
struct
{
INT32U RBS1 :1; /* 接收缓冲区有效 */
INT32U DOS1 :1; /* 数据溢出 */
INT32U TBS1 :1; /* TxBUF1锁定位 "0":锁定 */
INT32U TCS1 :1; /* TxBUF1的数据发送完成 */
INT32U RS1 :1; /* 正在接收 */
INT32U TS1 :1; /* TxBUF1的数据正在发送 */
INT32U ES1 :1; /* 错误认可 */
INT32U BS1 :1; /* 总线错误 */
INT32U RBS2 :1;
INT32U DOS2 :1;
INT32U TBS2 :1; /* TxBUF2锁定 */
INT32U TCS2 :1; /* TxBUF2的数据发送完成 */
INT32U RS2 :1;
INT32U TS2 :1; /* TxBUF2的数据正在发送 */
INT32U ES2 :1;
INT32U BS2 :1;
INT32U RBS3 :1;
INT32U DOS3 :1;
INT32U TBS3 :1; /* TxBUF3锁定 */
INT32U TCS3 :1; /* TxBUF3的数据发送完成 */
INT32U RS3 :1;
INT32U TS3 :1; /* TxBUF3的数据正在发送 */
INT32U ES3 :1;
INT32U BS3 :1;
INT32U RSV8 :8;
}Bits;
}uCANSR,*P_uCANSR;
#define CANSR(CanNum) (*((volatile P_uCANSR)( CANSR_BADR+CanNum* CAN_OFFSET_ADR )))
/*********************************************************************************************************
定义 CANRFS 寄存器:
1.This register defines the characteristics of the current received message.
2.It is read-only in normal operation, but can be written for testing purposes if the RM bit in
CANMOD is 1.
*********************************************************************************************************/
typedef union _canrfs_
{
INT32U DWord; /* 字操作定义 */
struct
{
INT32U IDIN :10; /* ID索引值 */
INT32U BP :1; /* BP */
INT32U RSV5 :5; /* 保留 */
INT32U DLC :4; /* 数据长度 */
INT32U RSV10 :10; /* 保留 */
INT32U RTR :1; /* 远程帧、数据帧识别位 */
INT32U FF :1; /* 扩展帧、标准帧识别位 */
}Bits;
}uCANRFS,*P_uCANRFS;
#define CANRFS(CanNum) (*((volatile P_uCANRFS)( CANRFS_BADR+CanNum* CAN_OFFSET_ADR )))
/*********************************************************************************************************
定义 CANRID 寄存器:
1.This register contains the Identifier field of the current received message.
2.It is read-only in normal operation, but can be written for testing purposes if the RM bit in
CANmod is 1.
3.It has two different formats depending on the FF bit in CANRFS. FF=0 (11 Bits 10:0)
FF=1 (29 Bits 28:0)
*********************************************************************************************************/
typedef union _canrid_
{
INT32U DWord; /* 字操作定义 */
struct
{
INT32U ID :29;
INT32U RSV3 :3;
}Bits;
}uCANRID,*P_uCANRID;
#define CANRID(CanNum) (*((volatile P_uCANRID)(CANRID_BADR+CanNum* CAN_OFFSET_ADR)))
#define CANTID1(CanNum) (*((volatile P_uCANRID)(CANTID1_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTID2(CanNum) (*((volatile P_uCANRID)(CANTID2_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTID3(CanNum) (*((volatile P_uCANRID)(CANTID3_BADR+CanNum*CAN_OFFSET_ADR)))
/*********************************************************************************************************
定义 CANRDx 寄存器:
1.This register contains the Data bytes of the current received message.
2.It is read-only in normal operation, but can be written for testing purposes if the RM bit
in CANMOD is 1.
*********************************************************************************************************/
typedef union _canrdx_
{
INT32U DWord; /* 字操作定义 */
struct
{
INT32U Data1 :8; /* 数据字节 */
INT32U Data2 :8;
INT32U Data3 :8;
INT32U Data4 :8;
}Bits;
}uCANRDx,*P_uCANRDx;
#define CANRDA(CanNum) (*((volatile P_uCANRDx)(CANRDA_BADR+CanNum* CAN_OFFSET_ADR)))
#define CANRDB(CanNum) (*((volatile P_uCANRDx)(CANRDB_BADR+CanNum* CAN_OFFSET_ADR)))
#define CANTDA1(CanNum) (*((volatile P_uCANRDx)(CANTDA1_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTDB1(CanNum) (*((volatile P_uCANRDx)(CANTDB1_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTDA2(CanNum) (*((volatile P_uCANRDx)(CANTDA2_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTDB2(CanNum) (*((volatile P_uCANRDx)(CANTDB2_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTDA3(CanNum) (*((volatile P_uCANRDx)(CANTDA3_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTDB3(CanNum) (*((volatile P_uCANRDx)(CANTDB3_BADR+CanNum*CAN_OFFSET_ADR)))
/*********************************************************************************************************
定义 CANTFIx 寄存器:
1.When the corresponding TBS bit in CANSR is 1, software can write to one of these registers to
define the format of the next transmit message for that Tx buffer.
2.Bits not listed read as 0 and should be written as 0.
*********************************************************************************************************/
typedef union _cantfix_
{
INT32U DWord; /* 字节操作定义 */
struct
{
INT32U PRIO :8; /* 缓冲区数据发送优先级的值 */
INT32U RSV8 :8;
INT32U DLC :4; /* 发送数据长度 */
INT32U RSV10 :10;
INT32U RTR :1; /* 远程帧、数据帧辨别位 */
INT32U FF :1; /* 扩展帧、标准帧辨别位 */
}Bits;
}uCANTFIx,*P_uCANTFIx;
#define CANTFI1(CanNum) (*((volatile P_uCANTFIx)(CANTFI1_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTFI2(CanNum) (*((volatile P_uCANTFIx)(CANTFI2_BADR+CanNum*CAN_OFFSET_ADR)))
#define CANTFI3(CanNum) (*((volatile P_uCANTFIx)(CANTFI3_BADR+CanNum*CAN_OFFSET_ADR)))
/*********************************************************************************************************
定义发送帧的结构
*********************************************************************************************************/
typedef struct _stcTXBUF_
{
uCANTFIx TxFrameInfo; /* 发送帧信息结构 */
uCANRID TxCANID; /* 发送帧信息ID */
uCANRDx TDA; /* 发送数据1~4字节 */
uCANRDx TDB; /* 发送数据5~8字节 */
}*P_stcTxBUF,stcTxBUF;
#define TxBUF1(CanNum) (*((volatile P_stcTxBUF)( TxBUF1_BADR+CanNum*CAN_OFFSET_ADR)))
#define TxBUF2(CanNum) (*((volatile P_stcTxBUF)( TxBUF2_BADR+CanNum*CAN_OFFSET_ADR)))
#define TxBUF3(CanNum) (*((volatile P_stcTxBUF)( TxBUF3_BADR+CanNum*CAN_OFFSET_ADR)))
/*********************************************************************************************************
定义 CANTxSR 寄存器:
*********************************************************************************************************/
typedef union _uCANTxSR_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -