?? can.h
字號(hào):
/*****************************************************************************
;Institue of Automation, Chinese Academy of Sciences
;Beijing Hengyi Embedded System Co.,Ltd (www.hyesco.com)
;File Name:
;Description: header file for can sja1000
;Date: 2006-03-15
;Author: Wujh origin from jzm
;E_mail: wujh@hyesco.com
*****************************************************************************/
#ifndef __CAN_H__
#define __CAN_H__
//cs
#define CAN_DATA_CS 0x70000000 //數(shù)據(jù)鎖存
#define CAN_ADDR_CS 0x70000010 //地址鎖存
#define SJA_INT_ID AT91C_ID_PIOB
#define SJA_INT_PIOA (0x1<<0) //PA0
//寄存器地址
#define CAN_REG_MOD 0 //內(nèi)部模式寄存器地址
#define CAN_REG_CMR 1 //控制寄存器
#define CAN_REG_SR 2 //狀態(tài)寄存器
#define CAN_REG_IR 3 //中斷狀態(tài)寄存器
#define CAN_REG_IER 4 //中斷使能寄存器
#define CAN_REG_BTR0 6 //總線(xiàn)定時(shí)寄存器0、1的設(shè)
#define CAN_REG_BTR1 7
#define CAN_REG_OCR 8 //輸出控制寄存器
#define CAN_REG_TEST 9 //測(cè)試寄存器
#define CAN_REG_ALC 11 //仲裁丟失捕足
#define CAN_REG_ECC 12 //錯(cuò)誤代碼捕足
#define CAN_REG_EWLR 13 //錯(cuò)誤報(bào)警限制寄存器
#define CAN_REG_RXERR 14 //接受錯(cuò)誤計(jì)數(shù)器
#define CAN_REG_TXERR 15 //發(fā)送錯(cuò)誤計(jì)數(shù)器
#define CAN_REG_ACR0 16 //驗(yàn)收瑪
#define CAN_REG_ACR1 17
#define CAN_REG_ACR2 18
#define CAN_REG_ACR3 19
#define CAN_REG_AMR0 20 //屏蔽碼
#define CAN_REG_AMR1 21
#define CAN_REG_AMR2 22
#define CAN_REG_AMR3 23
#define CAN_REG_RMC 29
#define CAN_REG_RBSA 30 //FIFO淇實(shí)地質(zhì)
#define CAN_REG_CDR 31 //時(shí)鐘寄存器
#define CAN_REG_START_FIFO 32 //內(nèi)部fifo起始地址
#define CAN_REG_TX_SFF 16 //楨信息
#define CAN_REG_TX_ID0 17 //楨信息
#define CAN_REG_TX_ID1 18 //楨信息
#define CAN_REG_TX_ID2 19 //楨信息
#define CAN_REG_TX_ID3 20 //楨信息
#define CAN_REG_RX_SFF 16 //楨信息
#define CAN_REG_RX_ID0 17 //楨信息
#define CAN_REG_RX_ID1 18 //楨信息
#define CAN_REG_RX_ID2 19 //楨信息
#define CAN_REG_RX_ID3 20 //楨信息
#define CAN_REG_TX_SFF_BUFFER 19 //SFF格式BUFFER
#define CAN_REG_TX_EFF_BUFFER 21//EFF格式楨BUFFER
#define CAN_REG_RX_SFF_BUFFER 19 //SFF格式BUFFER
#define CAN_REG_RX_EFF_BUFFER 21//EFF格式楨BUFFER
#define CAN_SFF
#define CAN_ID1 //標(biāo)識(shí)符
#define CAN_ID2
//錯(cuò)誤信息
#define ERROR_NO_CAN 1 //沒(méi)有檢測(cè)到can接口芯片
#define ERROR_RESET 2 //復(fù)位錯(cuò)誤
#define ERROR_BTR 3 //波特率設(shè)置錯(cuò)誤
#define ERROR_OCR 4 //輸出控制其設(shè)置錯(cuò)誤
#define ERROR_CDR 5 //時(shí)鐘分頻器設(shè)置錯(cuò)誤
#define ERROR_RXERR 6 //
#define ERROR_ACR 7
#define ERROR_AMR 8
#define ERROR_IER 9
#define ERROR_RBSA 10
#define ERROR_TXERR 11
#define ERROR_MOD 12 //沒(méi)有正確返回工作模式
#define ERROR_TX_SFF 13 //寫(xiě)包頭錯(cuò)誤
#define ERROR_TX_ID 14 //寫(xiě)包頭錯(cuò)誤
#define ERROR_TX_BUFFER 15//填寫(xiě)發(fā)送數(shù)據(jù)緩存錯(cuò)誤
//狀態(tài)寄存器
#define STATUS_TBS 30 //發(fā)送緩存器鎖定
#define STATUS_TCS 31 //數(shù)據(jù)還沒(méi)有被發(fā)送完
#define STATUS_RS 32 //正在接收數(shù)據(jù)
#define STATUS_TS 33 //發(fā)送緩存器鎖定
#define STATUS_ES 34 //出錯(cuò)
#define STATUS_BS 35 //總線(xiàn)關(guān)閉
#define STATUS_DOS 36 //數(shù)據(jù)溢出
#define STATUS_RBS 35 //FIFO中有可用信息等待讀出
//重復(fù)寫(xiě)讀寫(xiě)操作次數(shù)
#define REPEART_TIMES 5
//擴(kuò)展楨
#define SEND_EFF_DATA 1
//參數(shù)設(shè)置
#define PARAM_OCR 0xda //輸出控制寄存器,正常輸出模式
#define PARAM_CDR 0xc8 //攝制成pelican模式,cbp=1,rxd1接地,關(guān)閉時(shí)鐘愉出
#define PARAM_ACR0 0x00 //0x00
#define PARAM_ACR1 0x00 //
#define PARAM_ACR2 0x00
#define PARAM_ACR3 0x00
#define PARAM_AMR0 0xff
#define PARAM_AMR1 0xff
#define PARAM_AMR2 0xff
#define PARAM_AMR3 0xff
#define PARAM_IER 0x01 //打開(kāi)接受中斷
#define PARAM_ENTER_MOD 0x01
#define PARAM_RET_MOD 0x08 //進(jìn)入單濾波模式,返回工作模式
#define PARAM_RBSA 0x00 //fifo首地址,從can的32開(kāi)始
#define PARAM_TX_ID0 0x10 //數(shù)據(jù)ID
#define PARAM_TX_ID1 0xe1
#define PARAM_TX_ID2 0x10 //EFF格式
#define PARAM_TX_ID3 0xe1
#define PARAM_TX_FF_SFF 0x00 //sff格式
#define PARAM_TX_FF_EFF 0x80 //eff
#define PARAM_TX_RTR_DATA 0x00 //數(shù)據(jù)
#define PARAM_TX_PTR_RF 0x40 //遠(yuǎn)程楨
#define PARAM_DATA_LENGTH 0x08
//地址,數(shù)據(jù)讀寫(xiě)宏
//寫(xiě)CAN 寄存器
//讀寫(xiě)命令
#define WRITE_CAN_DATA(data) (*(volatile unsigned char *)(CAN_DATA_CS))=data
#define WRITE_CAN_ADDR(addr) (*(volatile unsigned char *)(CAN_ADDR_CS))=addr
#define READ_CAN_REG() (*(volatile unsigned char *)(CAN_DATA_CS))
//函數(shù)定義聲明
void Init_CAN_Board(void);//初始化cpu總線(xiàn)
unsigned char Init_CAN(void);//初始化can
void Write_CAN_REG(unsigned char can_reg_addr, unsigned char data);//寫(xiě)CAN 寄存器
unsigned char Read_CAN_REG(unsigned char can_reg_addr);//讀CAN寄存器
int CAN_TRANSMIT(void);//發(fā)送數(shù)據(jù)操作函數(shù)
void Eint2CanInt(void);//中斷分發(fā)函數(shù)
void CanIntReceiveData(void);////響應(yīng)中斷接受數(shù)據(jù)
void CanReceiveData(void); //數(shù)據(jù)接受函數(shù)
void CanSendData(void); //發(fā)送接受函數(shù)
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -