⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 canapp.h

📁 以LPC2194为平台开发的整车ECU控制器程序
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        产品一部 
**                                 http://www.zlgmcu.com
**-----------------------------------------------------------文件信息--------------------------------------------------------------------------------
**	文   件  	名:	CANAPP.H
** 	版  		本:	v1.0
** 	日		期:	2004年2月23日
**	描		述:	CAN模块应用接口函数定义头文件。
********************************************************************************************************/
#ifndef		_CANAPP_H_
#define		_CANAPP_H_
#ifndef		_CANAPP_GLOBAL_
#define		CANAPP_GLOBAL		extern
#else
#define		CANAPP_GLOBAL	
#endif

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include	"canfunc.h"
//数据类型定义
/**********************************************************************************************************
**	在本驱动里应用一个接收环形缓冲区,来存放接收到的邋錍AN数据数据,环形缓冲区的大小在CUSTOM.H中定义,下
**	面是环形缓冲区的数据结构
************************************************************************************************************/
typedef	struct	_RcvCANDataCycleBuf_
 {
	UINT32		WritePoint1	:8;			//CAN1的写指针
	UINT32		WritePoint2	:8;
	UINT32		WritePoint3	:8;
	UINT32		WritePoint4	:8;

	UINT32		ReadPoint1	:8;			//CAN1的读指针
	UINT32		ReadPoint2	:8;
	UINT32		ReadPoint3	:8;
	UINT32		ReadPoint4	:8;

	UINT32		FullFlag1	:8;			//CAN1缓冲区满标志
	UINT32		FullFlag2	:8;
	UINT32		FullFlag3	:8;
	UINT32		FullFlag4	:8;

	stcRxBUF	RcvBuf[CAN_MAX_NUM][USE_CAN_RCV_BUF_SIZE];
 }stcRcvCANCyBuf,*P_stcRcvCANCyBuf;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<更改的地方<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//告警数据的信号结构
//告警数据结构的第一个字节
typedef union  _infoalarm_1_
{
   UINT8  Word;
   struct
   {
      UINT8  lim_current     :2;    //限流状态
      UINT8  close           :2;    //关闭状态
      UINT8  water_press     :2;    //冷却状态
      UINT8  reserve         :2;    //保留      
   }Bits;
}infotAlarm_1, *P_infotAlarm_1;
//告警数据结构的第二个字节
typedef union  _infoalarm_2_
{
   UINT8  Word;
   struct
   {
      UINT8  pengzhuang      :2;    //碰撞状态
      UINT8  shidu           :2;    //湿度过高状态
      UINT8  loudian         :2;    //车身漏电状态
      UINT8  shuiwen         :2;    //保留
   }Bits;
}infotAlarm_2, *P_infotAlarm_2;
//告警数据结构的第二个字节
typedef union  _infoalarm_3_
{
   UINT8  Word;
   struct
   {
      UINT8  vacuum_sta      :2;    //真空压力状态
      UINT8  reserve1        :6;    //保留
   }Bits;
}infotAlarm_3, *P_infotAlarm_3;
//状态和命令信号结构1:
typedef union  _coMMand_1_
{
   UINT8  Word;
   struct 
   {
      UINT8  zhujiechuqi      :2;
      UINT8  fengjidi         :2;
      UINT8  fengjigao        :2;
      UINT8  zhenkongbeng     :2;
      
   }Bits;
}Comstate_1, *P_Comstate_1;
//状态报文结构2:
typedef union  _coMMand_2_
{
   UINT8  Word;
   struct 
   {
      UINT8  airjidianqi      :2;
      UINT8  rsv1			  :2;
      UINT8  shuibeng         :2;      
      UINT8  lengning         :2;
      
   }Bits;
}Comstate_2, *P_Comstate_2;

//=====================对接受到的数据进行2位处理=============
typedef union _rcv_data_
{
  char Word;
  struct 
  {
    char bit_1      :2;
    char bit_2      :2;
    char bit_3      :2; 
    char bit_4      :2;
  }RCV_bit;
}RCV_candata,*pRCV_candata; 
CANAPP_GLOBAL pRCV_candata pcanData;
//===========================================================================
//应用环形缓冲区定义
CANAPP_GLOBAL	stcRcvCANCyBuf	CANRcvBufApp;
//<<<<<<<<<<<<<<<<<<<<<<<add struct data in here<<<<<<<<<<<<<<<<<<<<<<<<<<<<
CANAPP_GLOBAL   infotAlarm_1      infoalarm_1;
CANAPP_GLOBAL   infotAlarm_2      infoalarm_2;
CANAPP_GLOBAL   infotAlarm_3      infoalarm_3;
CANAPP_GLOBAL   Comstate_1         comstate_1;
CANAPP_GLOBAL   Comstate_2         comstate_2;
CANAPP_GLOBAL uint8 vacuum_pressure;//真空度值
CANAPP_GLOBAL uint8 water_temp;//水温值
CANAPP_GLOBAL uint8 module_num;//DA值
CANAPP_GLOBAL uint32 rec_canPGN;
CANAPP_GLOBAL uint8 banben_flag;
CANAPP_GLOBAL uint8 MOTO_sta;
CANAPP_GLOBAL uint8 MOTO_temp;		
CANAPP_GLOBAL uint8 flag_airqingqiu;
CANAPP_GLOBAL uint8 zhongya;
CANAPP_GLOBAL uint8 outtemp;	
CANAPP_GLOBAL uint8 DTC_flag;
CANAPP_GLOBAL uint8 DTC_num;
CANAPP_GLOBAL uint8 DTC_type[3];
CANAPP_GLOBAL uint8 DTC_array[3];
CANAPP_GLOBAL uint8 DTC_module;
CANAPP_GLOBAL uint8 vin_flag;
CANAPP_GLOBAL uint32 rec_dlc ;
CANAPP_GLOBAL uint8 rec_flag;

//应用常量定义
CANAPP_GLOBAL	const 	UINT32	USE_MOD_CAN[CAN_MAX_NUM];
CANAPP_GLOBAL	const	UINT32	USE_EWL_CAN[CAN_MAX_NUM];
CANAPP_GLOBAL	const 	UINT32	USE_INT_CAN[CAN_MAX_NUM];
CANAPP_GLOBAL	const 	UINT32	USE_TPM_CAN[CAN_MAX_NUM]; 
CANAPP_GLOBAL	const 	UINT32	USE_BTR_CAN[CAN_MAX_NUM]; 
CANAPP_GLOBAL	const 	UINT32	USE_SLP_MOD_CAN[CAN_MAX_NUM]; 
/*<<<<<<<<<<<<<<<<<<<<<更改的地方>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/

/*********************************************************************************************************

**函数原型		:  	void	InitCAN_byd(eCANNUM CanNum,unsigned int boud)
**参数说明		:  	CanNum	-->>	CAN控制器,值不能大于CAN_MAX_NUM 规定的值
*					unsigned int boud_k	-->> CAN的初始化波特率值.unit:kbps
**返回值		:	无	
**说	明		;	在初始化CAN函数的基础上增加设定波特率的功能
*               :  对于波特率的使用只需要在主函数中修改就行,此出无须改动
*               :  给定特定的波特率的值就行了          
***********************************************************************************************************/
CANAPP_GLOBAL	void	InitCAN_byd(eCANNUM CanNum,unsigned int boud_kbps_1) ;
/*
***********************************************************************************************************
**函数原型	:  	UINT32	CANSendData(eCANNUM CanNum,UINT32 Cmd,P_stcTxBUF Buf)
**参数说明	:  	CanNum	-->>	CAN控制器,值不能大于CAN_MAX_NUM 规定的值
				Cmd		à>	发送命令字
				Buf		à>	要发送的数据
**返回值		:	无	
**说	明		:	本函数用于将数据发送到CAN总线
************************************************************************************************************/
CANAPP_GLOBAL	UINT32	CANSendData(eCANNUM CanNum,UINT32 Cmd,P_stcTxBUF Buf);
/*
***********************************************************************************************************
**函数原型	:  	void	CANIntPrg(void)
**参数说明	:  	无
**返回值		:	无	
**说	明		:	CAN控制器中断处理函数
************************************************************************************************************/
CANAPP_GLOBAL	__irq 	void	CANIntPrg(void);
/*
***********************************************************************************************************
**函数原型	:  	UINT32	ReadCANRcvCyBuf(eCANNUM CanNum,stcRxBUF *Buf)
**参数说明	:  	CanNum	-->>	CAN控制器,值不能大于CAN_MAX_NUM 规定的值
				Buf		à>	使用驱动接收到的缓冲区数据
**返回值		:	=0,驱动接收到数据。
				!=0,驱动没接收到数据。	
**说	明		:	本函数用于用户调用使用CAN驱动接收到的数据。
************************************************************************************************************/
CANAPP_GLOBAL	UINT32	ReadCANRcvCyBuf(eCANNUM CanNum,stcRxBUF *Buf);
/*
***********************************************************************************************************
**函数原型	:  	void	WriteCANRcvCyBuf(eCANNUM CanNum)
**参数说明	:  	CanNum	-->>	CAN控制器,值不能大于CAN_MAX_NUM 规定的值
**返回值		:		
**说	明		:	本函数用于驱动将收到的CAN数据写入环形缓冲区
************************************************************************************************************/
CANAPP_GLOBAL	 void	WriteCANRcvCyBuf(eCANNUM CanNum);

/*<<<<<<<<<<<<<<<<<<<<<更改的地方>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
/****************************************************************************************
*
*old_Filename	:V1
*date		:20050114
*author		:fufengwei
*UINT32 CANSendData_byd(eCANNUM CanNum, int InfoType, UINT32L data)
*
*new_Filename   :V1.1
*data       :20050406
*author     :luolin && zhangjia
*UINT32 CANSendData_byd(eCANNUM CanNum, UINT32 InfoType,UINT32L sendId, UINT32L data)
*description	:主控ECU CAN 发送专用函数。
*			 基于byd CAN协议---EF3 CAN总线协议(草案).doc
*			 发送时,默认使用mode 0。
*			 帧格式为标准帧
*			 帧类型为数据帧
*input		:eCANNUM CanNum----:要发送的CAN 端口
*			 int InfoType----------:要发送的CAN数据类型.具体如下:
*									==0, 电池电压
*									==1, 车速
*									==2, 里程
*			 UINT32L data---------:实际数据值。根据InfoType值的不同,
*								  可以是电池电压、车速、里程etc....
*								  data中接受的数据为扩展比例之后的
*								  eg.电池电压为312.2V, 则传递给data的数据
*								       应该时312.2 * 100, 也就是31220.
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*increase  : UINT32L sendID-------:  
*            
*
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*return		:UINT32--即调用CANSendData函数的返回值
****************************************************************************************/
UINT32 CANSendData_bydold(eCANNUM CanNum, UINT32 InfoType,UINT32L sendId, UINT32L data);
UINT32 CANSendData_byd(eCANNUM CanNum, UINT32 InfoType,UINT32L sendId, UINT32L data,UINT32L data1);
/*<<<<<<<<<<<<<<<<<<<<<更改的地方>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
/****************************************************************************************
*
*Filename	:
*date		:20050115
*author		:fufengwei
*
*UINT32 CANReadData_byd(eCANNUM CanNum, unsigned long int* pIdCAN, 
*						unsigned int* pLengthOfData, char* pData)
*description	:主控ECU CAN 接收专用function.
*			 基于byd CAN协议---EF3 CAN总线协议(草案).doc
*input		:eCANNUM CanNum--------:要接收的CAN 端口
*			 unsigned long int* pIdCAN--:存放接收到的CAN数据的ID。默认为11位。
*			 cunsigned intr* pLengthOfData-------:存放接收的CAN数据长度-DLC
*			 char* pData--------------:存放接收到的CAN数据。调用者应该使
*									  此指针指向一个8 Bytes的char数组
*return		:UINT32--即调用ReadCANRcvCyBuf函数的返回值
*					==0,驱动接收到数据。
*					!=0,驱动没接收到数据.
****************************************************************************************/
UINT32 CANReadData_byd(eCANNUM CanNum, unsigned long int* pIdCAN, 
							 unsigned int* pLengthOfData, char* pData);
/****************************************************************************************
**函数名:UINT32 CANSendData_29bit(eCANNUM CanNum,UINT32L Pgn ,UINT32L data,UINT32L data1)
**时间:2006-4-25
**输入:CANSendData(CanNum, 0, &SendData)函数
**返回:
**说明:用于29位ID的数据的发送
******************************************************************************************/
UINT32 CANSendData_29bit(eCANNUM CanNum,UINT32L Pgn ,UINT32L data,UINT32L data1);
/*<<<<<<<<<<<<<<<<<<<<<更改的地方>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
/****************************************************************************************
*
*UINT32 CANReadData_29bit(eCANNUM CanNum, unsigned long int* pIdCAN, 
*						unsigned int* pLengthOfData, char* pData)
*description	:主控ECU CAN 接收专用function.
****************************************************************************************/
UINT32 CANReadData_29bit(eCANNUM CanNum, uint32* CANPGN, 
					    uint32* pLengthOfData, pRCV_candata pData);
#endif
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -