bsp_CAN.h 2.54 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
#ifndef __API_CAN_H
#define __API_CAN_H

//#define ID65520 65520//NM-OSEK

#define ID61444 61444
#define ID65266 65266
#define ID65269 65269
#define ID65279 65279
#define ID65252 65252
#define ID64892 64892
#define ID64775 64775
#define ID61440 61440
#define ID65249 65249
#define ID65248 65248
#define ID65110 65110
#define ID61442 61442
#define ID61445 61445
#define ID64923 64923
#define ID61454 61454
#define ID65215 65215
#define ID61441 61441
#define ID60439 60439
#define ID65262 65262
#define ID04119 4096
#define ID65265 65265
#define ID65088 65088
#define ID65226 65226
#define ID65254 65254
#define ID65263 65263
#define ID64972 64972
#define ID65291 65291
#define ID60416 60416
#define ID60160 60160
#define ID65310 65310
#define ID65042 65042
#define ID64964 64964
#define ID65103 65103
#define ID65115 65115
#define ID61447 61447
#define ID65268 65268
//#define ID65266 65266
#define ID65442 65442
#define ID65271 65271

//
#define SJW_1Tq 0
#define SJW_2Tq 1
#define SJW_3Tq 2
#define SAMP_1 0
#define Seg1_10Tq 9
#define Seg1_11Tq 10
#define Seg1_12Tq 11
#define Seg1_13Tq 12
#define Seg1_14Tq 13
#define Seg1_8Tq 7
#define Seg2_7Tq 6
#define Seg2_8Tq 7
#define Seg1_3Tq 2
#define Seg1_4Tq 3
#define Seg1_5Tq 4
#define Seg1_6Tq 5
#define Seg2_1Tq 0
#define Seg2_2Tq 1
#define Seg2_3Tq 2
#define Seg2_4Tq 3
#define Seg2_5Tq 4
#define IDAM_2_32Bit 0
#define IDAM_4_16Bit 1
#define IDHIT0 0
#define CanWakeUpEn 1
#define CanWakeUpDis 0

void bsp_CAN_Init(void);

typedef struct
{
	volatile INT8U REVF;
	INT8U BUSY;
	INT8U BUFF[8];
	INT8U LOST;
	INT8U TT;
} CAN_REV_TYPE;

typedef struct
{
	INT32U sendID;	//发送/接收ID
	INT8U IDE;		//是否为扩展ID格式 (=0为标准11位ID,=1为扩展29位ID)
	INT8U RTR;		//是否为远程帧  (=0发送数据帧,=1远程发送请求)
	INT8U data[8];	//帧数据
	INT8U dataLen;	//帧数据长度
	INT8U priority; //发送优先极 (数据越小优先级越高,可以选择0,1,2)

} CANMsg;
typedef struct
{
	INT8U msg[8];
	INT8U dlc;
	INT8U prio;
	INT32U Identifier;
} SendCanMsg;

extern volatile CAN_REV_TYPE CanFrame;

#define success 1
#define failt 0
#define EN_STB 1
#define DIS_STB 0
#define WaitOverTime 6000

#define EMPOTY 0
#define MSG_FULL 1
#define GET_EXTPGN(id) (((((((INT32U)id & 0xFF0000) >> 16) >= 0xF0) ? ((INT32U)id & 0x00FF00) : 0) | ((INT32U)id & 0x2FF0000)) >> 8)

void MSCAN_SendFrame(INT32U id, INT8U *sendMsgBuf, INT8U len);
void bsp_CAN_BusOff(void);
void bsp_CAN_SleepRelease(void);
void bsp_CAN_Sleep(void);
void bsp_tx_msgbuf_abort(void);
extern INT32U bsp_GET_EXTEND_ID(INT8U *IDR0_Add);
INT8U bsp_CANSendExtFrame(INT32U id, INT8U priority, INT8U *txdata, INT8U length);

#endif