?? lpc2400can.h
字號:
/****************************************Copyright (c)**************************************************
** 廣州致遠電子有限公司
** 工業通信網絡事業部
** http://www.embedcontrol.com
**-------------------------------------文件信息--------------------------------------------------------
** 文 件 名: LPC2400CAN.h
** 當 前 版 本: v1.0
** 日 期: 2007年5月06日
** 描 述:
**-------------------------------------歷史創建--------------------------------------------------------
** 文 件 名: LPC2400CAN.h
** 版 本: v1.0
** 日 期: 2008年4月26日
** 創 建 人: 劉彥龍
** 描 述: LPC2400開發板實驗教程實例代碼
**-------------------------------------歷史修改--------------------------------------------------------
** 文 件 名:
** 版 本:
** 日 期:
** 修 改 人:
** 描 述:
*********************************************************************************************************/
#ifndef _LPC2400CAN_H_
#define _LPC2400CAN_H_
/*********************************************************************************************************
* 頭文件包含
*********************************************************************************************************/
#include "config.h"
/*********************************************************************************************************
* C++代碼兼容
**********************************************************************************************************/
#ifdef __cplusplus
{
#endif
/*********************************************************************************************************
* Fpclk=24MHz CAN標準波特率值
**********************************************************************************************************/
#define BPS_1000K 0x140002
#define BPS_1000K 0x140002
#define BPS_800K 0x160002
#define BPS_500K 0x1C0002
#define BPS_250K 0x1C0005
#define BPS_125K 0x1C000B
#define BPS_100K 0x1C000E
#define BPS_50K 0x1C001D
#define BPS_20K 0x1C004A
#define BPS_10K 0x1C0095
#define CANOFFSET 0x4000
#define RGE(ADDR) (*((volatile unsigned long*)ADDR))
/*********************************************************************************************************
** 定義 CAN 報文收發項 結構體:
*********************************************************************************************************/
typedef struct _MessageDetail
{
unsigned char LEN;
unsigned char FF; // 是否標準幀
unsigned int CANID; // 長度與FF有關
unsigned int DATAA;
unsigned int DATAB;
}MessageDetail;
/*********************************************************************************************************
** 定義 CANMOD 寄存器:
1.This register controls the basic operating mode of the CAN Controller.
2.Bits not listed read as 0 and should be written as 0.
*********************************************************************************************************/
typedef union _canmod_
{
unsigned long DWord;
struct {
unsigned int RM :1; //定義RM位(復位位)
unsigned int LOM :1; //定義LOM位(只聽模式位)
unsigned int STM :1; //定義STM位 "0"發送的信息必須被應答才被認可
//"1"自測試模式,CANCMR的SRR位一起使用,可以達到自發自收的效果
unsigned int TPM :1; //定義TPM位 "0"3個發送緩沖區的優先級由各自的CAN ID決定
//"1"3個發送緩沖區的優先級由各自的Tx優先級域決定
unsigned int SM :1; //定義SM位(睡眠模式位)
unsigned int RPM :1; //定義RPM位 "0"如果傳輸的是顯性位,Rx和Tx腳為低電平
//"1"翻轉極性模式--如果傳輸的是顯性位,Rx腳為高電平
unsigned int RSV1 :1; //保留位
unsigned int TM :1; //定義TM位(測試模式)
unsigned int RSV24 :24; //保留位
}Bits;
}REG_CANMOD;
/*
********************************************************************************************************
** 定義 CAN 幀結構體:
********************************************************************************************************
*/
typedef struct _CANFRMAE
{
unsigned long ID; //幀ID
unsigned char LEN; //數據長度
unsigned char RTR; //遠程幀標志
unsigned char FF; //擴展幀標志
unsigned char DATA[8]; //幀數據
}CANFRAME;
/*
*********************************************************************************************************
**函數原型 : unsigned char Enter_SWRst(unsigned char Ch);
**參數說明 : Ch:CAN控制器號,0表示第一路CAN
**返回值 : 0:失敗
** : 1: 成功
**說 明 : CAN控制器進入軟件復位模式
*********************************************************************************************************/
unsigned char Enter_SWRst(unsigned char Ch);
/*
*********************************************************************************************************
**函數原型 : unsigned char Quit_SWRst(unsigned char Ch);
**參數說明 : Ch:CAN控制器號,0表示第一路CAN
**返回值 : 0:失敗
** : 1: 成功
**說 明 : CAN控制器退出軟件復位模式
*********************************************************************************************************/
unsigned char Quit_SWRst(unsigned char Ch);
/*
*********************************************************************************************************
**函數原型 : unsigned char CAN_Init(unsigned char Ch, unsigned long Baud);
**參數說明 : Ch:CAN控制器號,0表示第一路CAN
** : Baud:CAN波特率值
**返回值 : 無
**說 明 : CAN控制器退出軟件復位模式
*********************************************************************************************************/
void CAN_Init(unsigned char Ch, unsigned long Baud);
/*
*********************************************************************************************************
**函數原型 : unsigned char writedetail(unsigned char LEN,unsigned char FF, unsigned int ID,unsigned char *data);
**參數說明 : LEN:數據長度
** : *data 發送數據所在的數組
:
**返回值 : 操作成功返回 1 失敗返回 0
**說 明 : 用戶填寫發送 幀信息
*********************************************************************************************************/
unsigned char writedetail(unsigned char LEN,unsigned char FF, unsigned int ID,unsigned char *data);
/*
*********************************************************************************************************
**函數原型 : unsigned char CANSend(unsigned char Ch, unsigned char BUFNum);
**參數說明 : Ch:CAN控制器號,0表示第一路CAN
** : BUFNum 選擇緩沖區
: MessageDetailT 報文的特征信息及數據
**返回值 : 無
**說 明 : CAN控制器退出軟件復位模式
*********************************************************************************************************/
unsigned char CANSend(unsigned char Ch, unsigned char BUFNum);
/*
*********************************************************************************************************
**函數原型 : unsigned char CANRCVANDSEND(unsigned char Ch, unsigned char BUFNum);
**參數說明 : Ch:CAN控制器號,0表示第一路CAN
** : BUFNum 選擇緩沖區
**返回值 : 無
**說 明 : CAN將收到的信息再發送出去
*********************************************************************************************************/
unsigned char CANRCVANDSEND(unsigned char Ch, unsigned char BUFNum);
/************************************************************************/
/* 文家結束 */
/************************************************************************/
#ifdef __cplusplus
#endif
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -