?? sja1000.h
字號:
unsigned char CAN_buf[9];
void write_can_port(unsigned char reg, unsigned char data1);
unsigned char read_can_port(unsigned char reg);
unsigned char CAN_receive_data(unsigned char *CAN_buf);
unsigned char CAN_send_data(unsigned char *CAN_buf, int length);
void primeCellCanInt();
void CAN_init(unsigned char btr0,unsigned char btr1);
#define PeliCANMode
/*定義SJA1000的基地址*/
/*volatile char *BASEADD=(volatile char*)(0x20000000); */
/*模式和控制寄存器的地址和位定義*/
#define ModeControlReg 0
#define RM_RR_Bit 0x01 /*復位模式請求位*/
#if defined (PeliCANMode)
#define LOM_Bit 0x02 /*僅聽模式位*/
#define STM_Bit 0x04 /*自我測試模式位*/
#define AFM_Bit 0x08 /*驗收濾波器模式位*/
#define SM_Bit 0x10 /*進入休眠模式位*/
#endif
/*中斷使能和控制寄存器的地址和位定義*/
#if defined (PeliCANMode)
#define InterruptEnReg 4 /* PeliCAN 模式*/
#define RIE_Bit 0x01 /*接收中斷使能位*/
#define TIE_Bit 0x02 /*發送中斷使能位*/
#define EIE_Bit 0x04 /*錯誤警告中斷使能位*/
#define DOIE_Bit 0x08 /*數據超載中斷使能位*/
#define WUIE_Bit 0x10 /*喚醒中斷使能位*/
#define EPIE_Bit 0x20 /*錯誤隱性中斷使能位*/
#define ALIE_Bit 0x40 /*仲裁丟失中斷使能位*/
#define BEIE_Bit 0x80 /*總線錯誤中斷使能位*/
#else /*BasicCAN 模式*/
#define InterruptEnReg 0 /* 控制寄存器*/
#define RIE_Bit 0x02 /*接收中斷使能位*/
#define TIE_Bit 0x04 /*發送中斷使能位*/
#define EIE_Bit 0x08 /*錯誤中斷使能位*/
#define DOIE_Bit 0x10 /*超載中斷使能位*/
#endif
/*命令寄存器的地址和位定義*/
#define CommandReg 1
#define TR_Bit 0x01 /*發送請求位*/
#define AT_Bit 0x02 /*中止發送位*/
#define RRB_Bit 0x04 /*釋放接收緩沖器位*/
#define CDO_Bit 0x08 /*清除數據超載位*/
#if defined (PeliCANMode)
#define SRR_Bit 0x10 /*自身接收請求位*/
#else /*BasicCAN 模式*/
#define GTS_Bit 0x10 /*進入睡眠模式位*/
#endif
/*狀態寄存器的地址和位定義*/
#define StatusReg 2
#define RBS_Bit 0x01 /*接收緩沖器狀態位*/
#define DOS_Bit 0x02 /*數據超載狀態位*/
#define TBS_Bit 0x04 /*發送緩沖器狀態位*/
#define TCS_Bit 0x08 /*發送完成狀態位*/
#define RS_Bit 0x10 /*接收狀態位*/
#define TS_Bit 0x20 /*發送狀態位*/
#define ES_Bit 0x40 /*錯誤狀態位*/
#define BS_Bit 0x80 /*總線狀態位*/
/*中斷寄存器的地址和位定義*/
#define InterruptReg 3
#define RI_Bit 0x01 /*接收中斷位*/
#define TI_Bit 0x02 /*發送中斷位*/
#define EI_Bit 0x04 /*錯誤警告中斷位*/
#define DOI_Bit 0x08 /*數據超載中斷位*/
#define WUI_Bit 0x10 /*喚醒中斷位*/
#if defined (PeliCANMode)
#define EPI_Bit 0x20 /*錯誤被動中斷位*/
#define ALI_Bit 0x40 /*仲裁丟失中斷位*/
#define BEI_Bit 0x80 /*總線錯誤中斷位*/
#endif
/*總線定時寄存器的地址和位定義*/
#define BusTiming0Reg 6
#define BusTiming1Reg 7
#define SAM_Bit 0x80
/*采樣模式位
1 總線被采樣三次
0 總線被采樣一次*/
/*輸出控制寄存器的地址和位定義*/
#define OutControlReg 8
/*OCMODE1 OCMODE0 */
#define BiPhaseMode 0x00 /*雙相輸出模式*/
#define NormalMode 0x02 /*正常輸出模式*/
#define ClkOutMode 0x03 /*時鐘輸出模式*/
/*TX1 的輸出管腳配置*/
#define OCPOL1_Bit 0x20 /*輸出極性控制位*/
#define Tx1Float 0x00 /*配置為懸空*/
#define Tx1PullDn 0x40 /*配置為下拉*/
#define Tx1PullUp 0x80 /*配置為上拉*/
#define Tx1PshPull 0Xc0 /*配置為推挽*/
/*TX0 的輸出管腳配置*/
#define OCPOL0_Bit 0x04 /*輸出極性控制位*/
#define Tx0Float 0x00 /*配置為懸空*/
#define Tx0PullDn 0x08 /*配置為下拉*/
#define Tx0PullUp 0x10 /*配置為上拉*/
#define Tx0PshPull 0X18 /*配置為推挽*/
/*驗收代碼和屏蔽寄存器的地址定義*/
#if defined (PeliCANMode)
#define AcceptCode0Reg 16
#define AcceptCode1Reg 17
#define AcceptCode2Reg 18
#define AcceptCode3Reg 19
#define AcceptMask0Reg 20
#define AcceptMask1Reg 21
#define AcceptMask2Reg 22
#define AcceptMask3Reg 23
#else /*BasicCAN 模式*/
#define AcceptCodeReg 4
#define AcceptMaskReg 5
#endif
/*Rx-緩沖器的地址定義*/
#if defined (PeliCANMode)
#define RxFramInFo 16
#define RxBuffer1 17
#define RxBuffer2 18
#define RxBuffer3 19
#define RxBuffer4 20
#define RxBuffer5 21
#define RxBuffer6 22
#define RxBuffer7 23
#define RxBuffer8 24
#define RxBuffer9 25
#define RxBuffer10 26
#define RxBuffer11 27
#define RxBuffer12 28
#else /*BasicCAN 模式*/
#define RxBuffer1 20
#define RxBuffer2 21
#define RxBuffer3 22
#define RxBuffer4 23
#define RxBuffer5 24
#define RxBuffer6 25
#define RxBuffer7 26
#define RxBuffer8 27
#define RxBuffer9 28
#define RxBuffer10 29
#endif
/*Tx 緩沖器的地址定義*/
#if defined (PeliCANMode)
/*僅寫地址*/
#define TxFramInFo 16
#define TxBuffer1 17
#define TxBuffer2 18
#define TxBuffer3 19
#define TxBuffer4 20
#define TxBuffer5 21
#define TxBuffer6 22
#define TxBuffer7 23
#define TxBuffer8 24
#define TxBuffer9 25
#define TxBuffer10 26
#define TxBuffer11 27
#define TxBuffer12 28
/*僅讀地址*/
#define TxFramInFoRd 96
#define TxBufferRd1 97
#define TxBufferRd2 98
#define TxBufferRd3 99
#define TxBufferRd4 100
#define TxBufferRd5 101
#define TxBufferRd6 102
#define TxBufferRd7 103
#define TxBufferRd8 104
#define TxBufferRd9 105
#define TxBufferRd10 106
#define TxBufferRd11 107
#define TxBufferRd12 108
#else /*BasicCAN 模式*/
#define TxBuffer1 10
#define TxBuffer2 11
#define TxBuffer3 12
#define TxBuffer4 13
#define TxBuffer5 14
#define TxBuffer6 15
#define TxBuffer7 16
#define TxBuffer8 17
#define TxBuffer9 18
#define TxBuffer10 19
#endif
/*其他寄存器的地址定義*/
#if defined (PeliCANMode)
#define ArbLostCapReg 11
#define ErrCodeCapReg 12
#define ErrWarnLimitReg 13
#define RxErrCountReg 14
#define TxErrCountReg 15
#define RxMsgCountReg 29
#define RxBufstartAdr 30
#endif
/*時鐘分頻寄存器的地址和位定義*/
#define ClockDivideReg 31
#define DivBy1 0x07 /*CLKOUT=振蕩器頻率*/
#define DivBy2 0x00 /*CLKOUT=1/2 振蕩器頻率*/
#define CLKOff_Bit 0x08 /*時鐘關閉位時鐘輸出管腳控制位*/
#define RXINTEN_Bit 0x20 /*用于接收中斷的管腳TX1 */
#define CBP_Bit 0x40 /*CAN 比較器旁路控制位*/
#define CANMode_Bit 0x80 /*CAN 模式控制位*/
/* 使用的常量定義------------------------------------------------------------
------------------------------------- */
#define YES 1
#define NO 0
#define ENABLE 1
#define DISABLE 0
#define ENABLE_N 0
#define DISABLE_N 1
#define INTLEVELACT 0
#define INTEDGEACT 1
#define PRIORITY_LOW 0
#define PRIORITY_HIGH 1
/*寄存器內容默認復位值清除寄存器*/
#define ClrByte 0x00
/*常量清除中斷使能寄存器*/
#if defined (PeliCANMode)
#define ClrIntEnSJA ClrByte
#else
#define ClrIntEnSJA ClrByte RM_RR_Bit /*保留復位請求*/
#endif
/*驗收代碼和屏蔽寄存器的定義*/
#define DontCare 0xFF
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -