?? sja1000.h
字號:
/*
****************************************Copyright (c)**************************************************
** 廣州致遠電子有限公司
** CAN開發組
** http://www.zyinside.com
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: SJA1000.h
**創 建 人: 滕欣欣
**創 建 日 期: 2005-04-13
**描 述: SJA1000 CAN控制器操作函數聲明
**最后修改日期:2006-03-03
**原 始 版 本:v1.0
**最 后 版 本:v1.2
**--------------歷史修改--------------------------------------------------------------------------------
**修 改 人:
**修 改 日 期:
**修 改 原 因:
**修 改 版 本:
********************************************************************************************************
*/
#ifndef SJA1000_H
#define SJA1000_H
#include "Typedef.h"
#include "SJA1000Rsg.h"
#include <linux/ioctl.h>
extern void *sja1000_ale;
extern void *sja1000_dat;
/*
***********************************
該行命令碼為linux ioctl函數定義
***********************************
*/
#define CAN_BUS_TYPE 0x40
#define BAUD_SIZE INT16U
#define ARC_SIZE INT32U
#define AMR_SIZE INT32U
#define IOCTL_BAUD _IOWR(CAN_BUS_TYPE,0x01,sizeof(BAUD_SIZE))
#define IOCTL_ACR _IOWR(CAN_BUS_TYPE,0x02,sizeof(ARC_SIZE))
#define IOCTL_AMR _IOWR(CAN_BUS_TYPE,0x03,sizeof(AMR_SIZE))
/*
********************************************************************************************************************
**宏 名 : Write_SJA1000(Val, OffSet)
**參數說明 : Val -> 欲寫入的數據
** : OffSet -> SJA1000片內寄存器偏移地址
**說 明 : 該宏用于寫SJA1000內部寄存器
********************************************************************************************************************
*/
void Write_SJA1000(INT8U Val, INT8U OffSet);
/*
********************************************************************************************************************
**宏 名 : Read_SJA1000(OffSet)
**參數說明 : OffSet -> SJA1000片內寄存器偏移地址
**說 明 : 該宏用于寫SJA1000內部寄存器
********************************************************************************************************************
*/
INT8U Read_SJA1000(INT8U OffSet);
/*
*****************************
模式寄存器設定值定義
*****************************
*/
#define MOD_LOM 0x01
#define MOD_STM 0x02
#define MOD_AFM_SIG 0x04
#define MOD_AFM_DOB 0x08
/*
*****************************
命令寄存器命令值定義
*****************************
*/
#define CMR_NOM_SD 0x01
#define CMR_SLF_SD 0x02
#define CMR_SIG_SD 0x03
#define CMR_CL_BUF 0x05
#define CMR_CL_DATA 0x06
/*
*****************************
狀態寄存器狀態掩碼值定義
*****************************
*/
#define SR_RCV_VALI 0x01
#define SR_DAT_OVER 0x02
#define SR_TBF_VALI 0x04
#define SR_TRM_COMP 0x08
#define SR_RCV_PROC 0x10
#define SR_TRM_PROC 0x20
#define SR_ERR_OCCR 0x40
#define SR_BUS_ERR 0x80
/*
*****************************
中斷寄存器狀態掩碼值定義
*****************************
*/
#define IR_RC 0x01
#define IR_TR 0x02
#define IR_ER 0x04
#define IR_DO 0x08
#define IR_WU 0x10
#define IR_EP 0x20
#define IR_AL 0x40
#define IR_BE 0x80
/*
*****************************
中斷使能寄存器輸入值定義
*****************************
*/
#define IER_RC 0x01
#define IER_TR 0x02
#define IER_ER 0x04
#define IER_DO 0x08
#define IER_WU 0x10
#define IER_EP 0x20
#define IER_AL 0x40
#define IER_BE 0x80
#define IER_ALL 0xFF
/*
*****************************
標準波特率值(16MHz)
*****************************
*/
#define BTR_1000K 0x0014U
#define BTR_800K 0x0016U
#define BTR_500K 0x001CU
#define BTR_250K 0x011CU
#define BTR_125K 0x031CU
#define BTR_100K 0x041CU
#define BTR_50K 0x091CU
#define BTR_20K 0x181CU
#define BTR_10K 0x311CU
/*
*****************************
時鐘分頻寄存器CAN模式定義
*****************************
*/
#define BAIS_CAN 0x00
#define PELI_CAN 0x01
/*
*****************************
各寄存器偏移地址定義
*****************************
*/
#define MOD 0
#define CMR 1
#define SR 2
#define IR 3
#define IER 4
#define BTR0 6
#define BTR1 7
#define OCR 8
#define TEST 9
#define ALC 11
#define ECC 12
#define EWL 13
#define RXERR 14
#define TXERR 15
#define TXBUF 16
#define RXBUF 16
#define ACR0 16
#define AMR0 20
#define CDR 31
/*
*****************************
發送結構定義
*****************************
*/
typedef union tagFramInfo
{
INT32U Byte;
struct
{
INT32U DLC :4;
INT32U Resv1 :2;
INT32U RTR :1;
INT32U FF :1;
INT32U Resv2 :24;
}Bits;
}FramInfo;
typedef struct tagSJA1000_BufInfo
{
INT32U FrID;
FramInfo FrIf;
INT8U DA[8];
}stcSJA1000_BufInfo;
/*
********************************************************************************************************************
**函數原型 : BOOL SJA_SoftRst(BOOL bIsRst)
**參數說明 : bIsRst -> TURE SJA1000進入軟件復位模式
** : FALSE SJA1000退出軟件復位模式
**返回值 : TURE -> 成功完成相應設置
** : FALSE -> 設置失敗
**說 明 :
********************************************************************************************************************
*/
BOOL SJA_SoftRst(BOOL bIsRst);
/*
********************************************************************************************************************
**函數原型 : BOOL SetModeReg(INT8U Val, BOOL bIsEn)
**參數說明 : Val -> 設置模式值 MOD_LOM 只聽模式
** : MOD_STM 自測試模式
** : MOD_AFM_SIG 單濾波方式
** : MOD_AFM_DOB 雙濾波方式
** : bIsEn -> 設定方式 TRUE 使能設定
** ; FALSE 禁能設定
**返回值 : TURE -> 成功完成相應設置
** : FALSE -> 設置失敗
**說 明 : 該函數設定SJA1000模式,必須在軟件復位模式中調用,否則失敗,模式值可并聯使用
********************************************************************************************************************
*/
BOOL SetModeReg(INT8U Val, BOOL bIsEn);
/*
********************************************************************************************************************
**函數原型 : BOOL EnterSleepMod(BOOL IsEn)
**參數說明 : IsEn -> SJA1000請求進入復位模式
**返回值 : TURE -> 成功完成相應設置
** : FALSE -> 設置失敗
**說 明 : 該函數必須在工作模式下調用,否則失敗
********************************************************************************************************************
*/
BOOL EnterSleepMod(BOOL IsEn);
/*
********************************************************************************************************************
**函數原型 : BOOL SetCommand(INT8U Cmd)
**參數說明 : Cmd -> 命令字 CMR_NOM_SD 正常發送
** : CMR_SIG_SD 單次發送
** : CMR_SLF_SD 自發自收
** : CMR_CL_BUF 釋放接收緩緩沖區
** : CMR_CL_DATA 清除數據溢出狀態
**返回值 : 無
**說 明 : 每次調用該函數只能發送一條命令值
********************************************************************************************************************
*/
void SetCommand(INT8U Cmd);
/*
********************************************************************************************************************
**函數原型 : BOOL SetInterrupt(INT8U Val, BOOL IsEn)
**參數說明 : Val -> 中斷值 IER_RC--IER_BE
** : IsEn -> 是否使能該中斷
**返回值 :
**說 明 : 中斷值可并聯使用,全部使能,禁能中斷時可使用 IER_ALL
********************************************************************************************************************
*/
BOOL SetInterrupt(INT8U Val, BOOL IsEn);
/*
********************************************************************************************************************
**函數原型 : BOOL SetBaudRate(INT16U BaudVal)
**參數說明 : BaudVal -> 波特率值,由 定時器0<<8|定時器1 組成
**返回值 :
**說 明 : 該函必須在軟件復位模式下調用
********************************************************************************************************************
*/
BOOL SetBaudRate(INT16U BaudVal);
/*
********************************************************************************************************************
**函數原型 : BOOL SetOutPutMod(INT8U Val)
**參數說明 : Val -> 輸出模式值
**返回值 :
**說 明 : 通常設為0x1A
********************************************************************************************************************
*/
BOOL SetOutPutMod(INT8U Val);
/*
********************************************************************************************************************
**函數原型 : BOOL SetClkDiv(INT8U CAN_Mod,BOOL bRxINTEn,BOOL bClkOFF,INT8U Div)
**參數說明 : CAN_Mod -> CAN模式值 BAIS_CAN
** : PELI_CAN
** : bRxINTEn -> 是否使用Tx1引腳作為接收中斷指示
** : bClkOFF -> 是否使用頻率輸出引腳
** : Div -> 0-7,表示(Val+1)*2分頻
**返回值 :
**說 明 : 該函數必須在軟件復位模式下調用
********************************************************************************************************************
*/
BOOL SetClkDiv(INT8U CAN_Mod,BOOL bRxINTEn,BOOL bClkOFF,INT8U Div);
/*
********************************************************************************************************************
**函數原型 : BOOL SJA1000Init(INT8U CanMode, INT16U BaudRate,INT32U ACRCode, INT32U AMRCode)
**參數說明 : CanMode -> CAN模式值 BAIS_CAN
** : PELI_CAN
** : BaudRate -> 波特率值
** : ACRCode -> 驗收代碼
** : AMRCode -> 驗收屏蔽碼
**返回值 :
**說 明 : 該函數必須在軟件復位模式下調用
********************************************************************************************************************
*/
BOOL SJA1000Init(INT8U CanMode, INT16U BaudRate,INT32U ACRCode, INT32U AMRCode);
/*
********************************************************************************************************************
**函數原型 : void SetTxBuf(stcSJA1000_TxInfo *pTxInfo)
**參數說明 : pTxInfo -> 發送數據的結構體指針
**返回值 :
**說 明 : 調用該函數寫入欲發送的數據
********************************************************************************************************************
*/
void SetTxBuf(stcSJA1000_BufInfo *pTxInfo);
/*
********************************************************************************************************************
**函數原型 : BOOL ReadRcvBuf(stcSJA1000_BufInfo *pRcvBuf)
**參數說明 : pRcvBuf -> 接收輸出數據的結構體指針
**返回值 :
**說 明 : 調用該函數接收CAN數據
********************************************************************************************************************
*/
BOOL ReadRcvBuf(stcSJA1000_BufInfo *pRcvBuf);
/*
********************************************************************************************************************
**函數原型 : BOOL SetFliter(INT32U ACRCode, INT32U AMRCode)
**參數說明 : ACRCode -> 驗收代碼值 ACR0_ACR1_ACR2_ACR3
** : AMRCode -> 驗收屏蔽碼 AMR0_AMR1_AMR2_AMR3
**返回值 :
**說 明 : 調用該函數寫入欲發送的數據
********************************************************************************************************************
*/
BOOL SetFliter(INT32U ACRCode, INT32U AMRCode);
/*
********************************************************************************************************************
**函數原型 : BOOL ACRCode(INT32U ACRCode)
**參數說明 : ACRCode -> 驗收代碼值 ACR0_ACR1_ACR2_ACR3
**返回值 :
**說 明 : 調用該函數設置驗收代碼
********************************************************************************************************************
*/
BOOL ACRCode(INT32U ACRCode);
/*
********************************************************************************************************************
**函數原型 : BOOL AMRCode(INT32U AMRCode)
**參數說明 : AMRCode -> 驗收屏蔽碼 AMR0_AMR1_AMR2_AMR3
**返回值 :
**說 明 : 調用該函數設置驗收屏蔽碼
********************************************************************************************************************
*/
BOOL AMRCode(INT32U AMRCode);
/*
********************************************************************************************************************
**函數原型 : void IntEnty(void)
**參數說明 : NULL
**返回值 : NULL
**說 明 : 中斷處理入口
********************************************************************************************************************
*/
void IntEnty(void);
#endif
/*
*********************************************************************************************************
** End Of File
*********************************************************************************************************
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -