📄 ecan.h
字号:
/********************************************************************/
/* Header for ECAN module library functions */
/********************************************************************/
#if defined(__dsPIC33F__)
#include <p33Fxxxx.h>
#elif defined(__PIC24H__)
#include <p24Hxxxx.h>
#else
#error "Does not build on this target"
#endif
#ifndef __CAN_H
#define __CAN_H
#ifdef _C1TXIF
/* List of SFRs for ECAN */
/* This list contains the SFRs with default (POR) values to be used for configuring ECAN */
/* The user can modify this based on the requirement */
#define CiCTRL1_VALUE 0x0000
#define CiCTRL2_VALUE 0x0000
#define CiVEC_VALUE 0x0000
#define CiFCTRL_VALUE 0x0000
#define CiFIFO_VALUE 0x0000
#define CiINTF_VALUE 0x0000
#define CiINTE_VALUE 0x0000
#define CiEC_VALUE 0x0000
#define CiFG1_VALUE 0x0000
#define CiFG2_VALUE 0x0000
#define CiFEN1_VALUE 0x0000
#define CiBUFPNT1_VALUE 0x0001
#define CiBUFPNT2_VALUE 0x0000
#define CiBUFPNT3_VALUE 0x0000
#define CiBUFPNT4_VALUE 0x0000
#define CiRXF0SID_VALUE 0x0000
#define CiRXF1SID_VALUE 0x0000
#define CiRXF2SID_VALUE 0x0000
#define CiRXF3SID_VALUE 0x0000
#define CiRXF4SID_VALUE 0x0000
#define CiRXF5SID_VALUE 0x0000
#define CiRXF6SID_VALUE 0x0000
#define CiRXF7SID_VALUE 0x0000
#define CiRXF8SID_VALUE 0x0000
#define CiRXF9SID_VALUE 0x0000
#define CiRXF10SID_VALUE 0x0000
#define CiRXF11SID_VALUE 0x0000
#define CiRXF12SID_VALUE 0x0000
#define CiRXF13SID_VALUE 0x0000
#define CiRXF14SID_VALUE 0x0000
#define CiRXF15SID_VALUE 0x0000
#define CiRXF0EID_VALUE 0x0000
#define CiRXF1EID_VALUE 0x0000
#define CiRXF2EID_VALUE 0x0000
#define CiRXF3EID_VALUE 0x0000
#define CiRXF4EID_VALUE 0x0000
#define CiRXF5EID_VALUE 0x0000
#define CiRXF6EID_VALUE 0x0000
#define CiRXF7EID_VALUE 0x0000
#define CiRXF8EID_VALUE 0x0000
#define CiRXF9EID_VALUE 0x0000
#define CiRXF10EID_VALUE 0x0000
#define CiRXF11EID_VALUE 0x0000
#define CiRXF12EID_VALUE 0x0000
#define CiRXF13EID_VALUE 0x0000
#define CiRXF14EID_VALUE 0x0000
#define CiRXF15EID_VALUE 0x0000
#define CiFMSKSEL1_VALUE 0x0000
#define CiRXM0SID_VALUE 0x0000
#define CiRXM1SID_VALUE 0x0000
#define CiRXM2SID_VALUE 0x0000
#define CiRXM3SID_VALUE 0x0000
#define CiRXM4SID_VALUE 0x0000
#define CiRXM5SID_VALUE 0x0000
#define CiRXM6SID_VALUE 0x0000
#define CiRXM7SID_VALUE 0x0000
#define CiRXM8SID_VALUE 0x0000
#define CiRXM9SID_VALUE 0x0000
#define CiRXM10SID_VALUE 0x0000
#define CiRXM11SID_VALUE 0x0000
#define CiRXM12SID_VALUE 0x0000
#define CiRXM13SID_VALUE 0x0000
#define CiRXM14SID_VALUE 0x0000
#define CiRXM15SID_VALUE 0x0000
#define CiRXM0EID_VALUE 0x0000
#define CiRXM1EID_VALUE 0x0000
#define CiRXM2EID_VALUE 0x0000
#define CiRXM3EID_VALUE 0x0000
#define CiRXM4EID_VALUE 0x0000
#define CiRXM5EID_VALUE 0x0000
#define CiRXM6EID_VALUE 0x0000
#define CiRXM7EID_VALUE 0x0000
#define CiRXM8EID_VALUE 0x0000
#define CiRXM9EID_VALUE 0x0000
#define CiRXM10EID_VALUE 0x0000
#define CiRXM11EID_VALUE 0x0000
#define CiRXM12EID_VALUE 0x0000
#define CiRXM13EID_VALUE 0x0000
#define CiRXM14EID_VALUE 0x0000
#define CiRXM15EID_VALUE 0x0000
#define CiRXFUL1_VALUE 0x0000
#define CiRXFUL2_VALUE 0x0000
#define CiRXOVF1_VALUE 0x0000
#define CiRXOVF2_VALUE 0x0000
#define CiTR01CON_VALUE 0x0383
#define CiTR23CON_VALUE 0x0000
#define CiTR45CON_VALUE 0x0000
#define CiTR67CON_VALUE 0x0000
/* ECAN Transmit/Receive Buffer Control Register (CiTRmnCON) */
#define CAN_BUFFER0_IS_TX 0xFFFF
#define CAN_BUFFER0_IS_RX 0xFF7F
#define CAN_BUFFER1_IS_TX 0xFFFF
#define CAN_BUFFER1_IS_RX 0x7FFF
#define CAN_BUFFER2_IS_TX 0xFFFF
#define CAN_BUFFER2_IS_RX 0xFF7F
#define CAN_BUFFER3_IS_TX 0xFFFF
#define CAN_BUFFER3_IS_RX 0x7FFF
#define CAN_BUFFER4_IS_TX 0xFFFF
#define CAN_BUFFER4_IS_RX 0xFF7F
#define CAN_BUFFER5_IS_TX 0xFFFF
#define CAN_BUFFER5_IS_RX 0x7FFF
#define CAN_BUFFER6_IS_TX 0xFFFF
#define CAN_BUFFER6_IS_RX 0xFF7F
#define CAN_BUFFER7_IS_TX 0xFFFF
#define CAN_BUFFER7_IS_RX 0x7FFF
#define CAN_SEND_REQUEST_BUFFER0 0xFFFF
#define CAN_ABORT_REQUEST_BUFFER0 0xFFF7
#define CAN_SEND_REQUEST_BUFFER1 0xFFFF
#define CAN_ABORT_REQUEST_BUFFER1 0xF7FF
#define CAN_SEND_REQUEST_BUFFER2 0xFFFF
#define CAN_ABORT_REQUEST_BUFFER2 0xFFF7
#define CAN_SEND_REQUEST_BUFFER3 0xFFFF
#define CAN_ABORT_REQUEST_BUFFER3 0xF7FF
#define CAN_SEND_REQUEST_BUFFER4 0xFFFF
#define CAN_ABORT_REQUEST_BUFFER4 0xFFF7
#define CAN_SEND_REQUEST_BUFFER5 0xFFFF
#define CAN_ABORT_REQUEST_BUFFER5 0xF7FF
#define CAN_SEND_REQUEST_BUFFER6 0xFFFF
#define CAN_ABORT_REQUEST_BUFFER6 0xFFF7
#define CAN_SEND_REQUEST_BUFFER7 0xFFFF
#define CAN_ABORT_REQUEST_BUFFER7 0xF7FF
#define CAN_AUTOREMOTE_ENABLE_BUFFER0 0xFFFF
#define CAN_AUTOREMOTE_DISABLE_BUFFER0 0xFFFB
#define CAN_AUTOREMOTE_ENABLE_BUFFER1 0xFFFF
#define CAN_AUTOREMOTE_DISABLE_BUFFER1 0xFBFF
#define CAN_AUTOREMOTE_ENABLE_BUFFER2 0xFFFF
#define CAN_AUTOREMOTE_DISABLE_BUFFER2 0xFFFB
#define CAN_AUTOREMOTE_ENABLE_BUFFER3 0xFFFF
#define CAN_AUTOREMOTE_DISABLE_BUFFER3 0xFBFF
#define CAN_AUTOREMOTE_ENABLE_BUFFER4 0xFFFF
#define CAN_AUTOREMOTE_DISABLE_BUFFER4 0xFFFB
#define CAN_AUTOREMOTE_ENABLE_BUFFER5 0xFFFF
#define CAN_AUTOREMOTE_DISABLE_BUFFER5 0xFBFF
#define CAN_AUTOREMOTE_ENABLE_BUFFER6 0xFFFF
#define CAN_AUTOREMOTE_DISABLE_BUFFER6 0xFFFB
#define CAN_AUTOREMOTE_ENABLE_BUFFER7 0xFFFF
#define CAN_AUTOREMOTE_DISABLE_BUFFER7 0xFBFF
#define CAN_TX_HIGH_PRI_BUFFER0 0xFFFF
#define CAN_TX_HIGHINTM_PRI_BUFFER0 0xFFFE
#define CAN_TX_LOWINTM_PRI_BUFFER0 0xFFFD
#define CAN_TX_LOW_PRI_BUFFER0 0xFFFC
#define CAN_TX_HIGH_PRI_BUFFER1 0xFFFF
#define CAN_TX_HIGHINTM_PRI_BUFFER1 0xFEFF
#define CAN_TX_LOWINTM_PRI_BUFFER1 0xFDFF
#define CAN_TX_LOW_PRI_BUFFER1 0xFCFF
#define CAN_TX_HIGH_PRI_BUFFER2 0xFFFF
#define CAN_TX_HIGHINTM_PRI_BUFFER2 0xFFFE
#define CAN_TX_LOWINTM_PRI_BUFFER2 0xFFFD
#define CAN_TX_LOW_PRI_BUFFER2 0xFFFC
#define CAN_TX_HIGH_PRI_BUFFER3 0xFFFF
#define CAN_TX_HIGHINTM_PRI_BUFFER3 0xFEFF
#define CAN_TX_LOWINTM_PRI_BUFFER3 0xFDFF
#define CAN_TX_LOW_PRI_BUFFER3 0xFCFF
#define CAN_TX_HIGH_PRI_BUFFER4 0xFFFF
#define CAN_TX_HIGHINTM_PRI_BUFFER4 0xFFFE
#define CAN_TX_LOWINTM_PRI_BUFFER4 0xFFFD
#define CAN_TX_LOW_PRI_BUFFER4 0xFFFC
#define CAN_TX_HIGH_PRI_BUFFER5 0xFFFF
#define CAN_TX_HIGHINTM_PRI_BUFFER5 0xFEFF
#define CAN_TX_LOWINTM_PRI_BUFFER5 0xFDFF
#define CAN_TX_LOW_PRI_BUFFER5 0xFCFF
#define CAN_TX_HIGH_PRI_BUFFER6 0xFFFF
#define CAN_TX_HIGHINTM_PRI_BUFFER6 0xFFFE
#define CAN_TX_LOWINTM_PRI_BUFFER6 0xFFFD
#define CAN_TX_LOW_PRI_BUFFER6 0xFFFC
#define CAN_TX_HIGH_PRI_BUFFER7 0xFFFF
#define CAN_TX_HIGHINTM_PRI_BUFFER7 0xFEFF
#define CAN_TX_LOWINTM_PRI_BUFFER7 0xFDFF
#define CAN_TX_LOW_PRI_BUFFER7 0xFCFF
/* ECAN Buffer Control Register (CiBUFPNT1) */
#define CAN_FILTER0_RX_BUFFER0 0xFFF0
#define CAN_FILTER0_RX_BUFFER1 0xFFF1
#define CAN_FILTER0_RX_BUFFER2 0xFFF2
#define CAN_FILTER0_RX_BUFFER3 0xFFF3
#define CAN_FILTER0_RX_BUFFER4 0xFFF4
#define CAN_FILTER0_RX_BUFFER5 0xFFF5
#define CAN_FILTER0_RX_BUFFER6 0xFFF6
#define CAN_FILTER0_RX_BUFFER7 0xFFF7
#define CAN_FILTER0_RX_BUFFER8 0xFFF8
#define CAN_FILTER0_RX_BUFFER9 0xFFF9
#define CAN_FILTER0_RX_BUFFER10 0xFFFA
#define CAN_FILTER0_RX_BUFFER11 0xFFFB
#define CAN_FILTER0_RX_BUFFER12 0xFFFC
#define CAN_FILTER0_RX_BUFFER13 0xFFFD
#define CAN_FILTER0_RX_BUFFER14 0xFFFE
#define CAN_FILTER0_RX_BUFFER_FIFO 0xFFFF
#define CAN_FILTER1_RX_BUFFER0 0xFF0F
#define CAN_FILTER1_RX_BUFFER1 0xFF1F
#define CAN_FILTER1_RX_BUFFER2 0xFF2F
#define CAN_FILTER1_RX_BUFFER3 0xFF3F
#define CAN_FILTER1_RX_BUFFER4 0xFF4F
#define CAN_FILTER1_RX_BUFFER5 0xFF5F
#define CAN_FILTER1_RX_BUFFER6 0xFF6F
#define CAN_FILTER1_RX_BUFFER7 0xFF7F
#define CAN_FILTER1_RX_BUFFER8 0xFF8F
#define CAN_FILTER1_RX_BUFFER9 0xFF9F
#define CAN_FILTER1_RX_BUFFER10 0xFFAF
#define CAN_FILTER1_RX_BUFFER11 0xFFBF
#define CAN_FILTER1_RX_BUFFER12 0xFFCF
#define CAN_FILTER1_RX_BUFFER13 0xFFDF
#define CAN_FILTER1_RX_BUFFER14 0xFFEF
#define CAN_FILTER1_RX_BUFFER_FIFO 0xFFFF
#define CAN_FILTER2_RX_BUFFER0 0xF0FF
#define CAN_FILTER2_RX_BUFFER1 0xF1FF
#define CAN_FILTER2_RX_BUFFER2 0xF2FF
#define CAN_FILTER2_RX_BUFFER3 0xF3FF
#define CAN_FILTER2_RX_BUFFER4 0xF4FF
#define CAN_FILTER2_RX_BUFFER5 0xF5FF
#define CAN_FILTER2_RX_BUFFER6 0xF6FF
#define CAN_FILTER2_RX_BUFFER7 0xF7FF
#define CAN_FILTER2_RX_BUFFER8 0xF8FF
#define CAN_FILTER2_RX_BUFFER9 0xF9FF
#define CAN_FILTER2_RX_BUFFER10 0xFAFF
#define CAN_FILTER2_RX_BUFFER11 0xFBFF
#define CAN_FILTER2_RX_BUFFER12 0xFCFF
#define CAN_FILTER2_RX_BUFFER13 0xFDFF
#define CAN_FILTER2_RX_BUFFER14 0xFEFF
#define CAN_FILTER2_RX_BUFFER_FIFO 0xFFFF
#define CAN_FILTER3_RX_BUFFER0 0x0FFF
#define CAN_FILTER3_RX_BUFFER1 0x1FFF
#define CAN_FILTER3_RX_BUFFER2 0x2FFF
#define CAN_FILTER3_RX_BUFFER3 0x3FFF
#define CAN_FILTER3_RX_BUFFER4 0x4FFF
#define CAN_FILTER3_RX_BUFFER5 0x5FFF
#define CAN_FILTER3_RX_BUFFER6 0x6FFF
#define CAN_FILTER3_RX_BUFFER7 0x7FFF
#define CAN_FILTER3_RX_BUFFER8 0x8FFF
#define CAN_FILTER3_RX_BUFFER9 0x9FFF
#define CAN_FILTER3_RX_BUFFER10 0xAFFF
#define CAN_FILTER3_RX_BUFFER11 0xBFFF
#define CAN_FILTER3_RX_BUFFER12 0xCFFF
#define CAN_FILTER3_RX_BUFFER13 0xDFFF
#define CAN_FILTER3_RX_BUFFER14 0xEFFF
#define CAN_FILTER3_RX_BUFFER_FIFO 0xFFFF
/* ECAN Buffer Control Register (CiBUFPNT2) */
#define CAN_FILTER4_RX_BUFFER0 0xFFF0
#define CAN_FILTER4_RX_BUFFER1 0xFFF1
#define CAN_FILTER4_RX_BUFFER2 0xFFF2
#define CAN_FILTER4_RX_BUFFER3 0xFFF3
#define CAN_FILTER4_RX_BUFFER4 0xFFF4
#define CAN_FILTER4_RX_BUFFER5 0xFFF5
#define CAN_FILTER4_RX_BUFFER6 0xFFF6
#define CAN_FILTER4_RX_BUFFER7 0xFFF7
#define CAN_FILTER4_RX_BUFFER8 0xFFF8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -