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

📄 lin_driver08.h

📁 此程序为DP256的SPI实验程序,已经通过实验证明
💻 H
📖 第 1 页 / 共 2 页
字号:
						//3: Devide by 13;
//#define SCI_BAUD		9600//BUADRATE 9600

#define LIN_BAUD_NORMAL		0x34u
#define LIN_BAUD_SENDBREAK	0x4cu
//-----------------------------------------------------------------------

#define LIN_SCI_PTY		SCC1_PTY		/* Parity Bit */
#define LIN_SCI_PEN		SCC1_PEN		/* Parity Enable Bit */
#define LIN_SCI_ILTY	SCC1_ILTY		/* Idle Line Type Bit */
#define LIN_SCI_WAKE	SCC1_WAKE		/* Wakeup Condition Bit */
#define LIN_SCI_DL9		SCC1_M			/* Mode (Character Length) Bit */
#define LIN_SCI_TXINV	SCC1_TXINV		/* Transmit Inversion Bit */
#define LIN_SCI_EN		SCC1_ENSCI		/* Enable ESCI Bit */
#define LIN_SCI_LOOP	SCC1_LOOPS		/* Loop Mode Select Bit */
#define LIN_SCI_SCC1	SCC1

#define SCI_PTY			1
#define SCI_PEN			2
#define SCI_ILTY		4
#define SCI_WAKE		8
#define SCI_DL9			0x10
#define SCI_TXINV		0x20
#define SCI_EN			0x40
#define SCI_LOOPS		0x80

#define SCC2 _SCC2.Byte
#define SCC2_SBK _SCC2.Bits.SBK
#define SCC2_RWU _SCC2.Bits.RWU
#define SCC2_RE _SCC2.Bits.RE
#define SCC2_TE _SCC2.Bits.TE
#define SCC2_ILIE _SCC2.Bits.ILIE
#define SCC2_SCRIE _SCC2.Bits.SCRIE
#define SCC2_TCIE _SCC2.Bits.TCIE
#define SCC2_SCTIE _SCC2.Bits.SCTIE


#define LIN_SCI_SBK		SCC2_SBK		/* Send Break Bit */
#define LIN_SCI_RWU		SCC2_RWU		/* Receiver Wakeup Bit */
#define LIN_SCI_RE		SCC2_RE  		/* Receiver Enable Bit */
#define LIN_SCI_TE		SCC2_TE  		/* Transmitter Enable Bit */
#define LIN_SCI_ILIE	SCC2_ILIE		/* Idle Line Interrupt Enable Bit */
#define LIN_SCIRIE		SCC2_SCRIE 		/* ESCI Receive Interrupt Enable Bit */
#define LIN_SCI_TCIE	SCC2_TCIE 		/* Transmission Complete Interrupt Enable Bit */
#define LIN_SCI_TIE		SCC2_SCTIE 		/* ESCI Transmit Interrupt Enable Bit */
#define LIN_SCI_SCC2	SCC2

#define SCI_SBK			1
#define SCI_RWU			2
#define SCI_RE  		4
#define SCI_TE  		8
#define SCI_ILIE		0x10
#define SCI_RIE  		0x20
#define SCI_TCIE		0x40
#define SCI_TIE			0x80

#define LIN_SCI_PEIE	SCC3_PEIE		/* Receiver Parity Error Interrupt Enable Bit */
#define LIN_SCI_FEIE	SCC3_FEIE		/* Receiver Framing Error Interrupt Enable Bit */
#define LIN_SCI_NEIE	SCC3_NEIE		/* Receiver Noise Error Interrupt Enable Bit */
#define LIN_SCI_ORIE	SCC3_ORIE		/* Receiver Overrun Interrupt Enable Bit */
#define LIN_SCI_T8		SCC3_T8 		/* Transmitted Bit 8 */
#define LIN_SCI_R8		SCC3_R8			/* Received Bit 8 */
#define LIN_SCI_SCC3	SCC3

#define SCI_PEIE		1
#define SCI_FEIE		2
#define SCI_NEIE		4
#define SCI_ORIE		8
#define SCI_T8  		0x40
#define SCI_R8 			0x80

#define LIN_SCI_PE 		SCS1_PE 		/* Receiver Parity Error Bit */
#define LIN_SCI_FE 		SCS1_FE 		/* Receiver Framing Error Bit */
#define LIN_SCI_NF		SCS1_NF  		/* Receiver Noise Flag Bit */
#define LIN_SCI_OR		SCS1_OR  		/* Receiver Overrun Bit */
#define LIN_SCI_IDLE	SCS1_IDLE		/* Receiver Idle Bit */
#define LIN_SCI_RF 		SCS1_SCRF  		/* ESCI Receiver Full Bit */
#define LIN_SCI_TC  	SCS1_TC   		/* Transmission Complete Bit */
#define LIN_SCI_TBE		SCS1_SCTE 		/* ESCI Transmitter Empty Bit */
#define LIN_SCISR1		SCS1

#define SCI_PE			1
#define SCI_FE			2
#define SCI_NE  		4
#define SCI_OR  		8
#define SCI_IDLE		0x10
#define SCI_RF  		0x20
#define SCI_TC			0x40
#define SCI_TBE			0x80
#define SCI_BRKF		0x22

#define LIN_SCI_RPF		SCS2_RPF		/* Reception in Progress Flag Bit */
#define LIN_SCI_BKF		SCS2_BKF		/* Break Flag Bit */
#define LIN_SCISR2		SCS2

#define SCI_RPF			1
#define SCI_BKF			2

#define LIN_SCIDRL		SCDR

#define LIN_SCIBD 			SCBR 			/* ESCI Baud Rate Select Bit */
#define LIN_SCI_BRP 		SCBR_SCP 		/* ESCI Baud Rate Prescaler Bit */
#define LIN_SCI_BRK_R		SCBR_LINR  		/* LIN Break symbol Receiver Bit */
#define LIN_SCI_BRK_T		SCBR_LINT  		/* LIN Break symbol Transmit Bit */
#define SCI_BRK_R			0x40
#define SCI_BRK_T			0x80

#define LIN_SCPSC			SCPSC

//-----------------------------------------------------------------------

#define LIN_TIC_PRESCAL		T1SC_PS			/* Prescaler Select Bit */
#define LIN_TIC_RST			T1SC_TRST		/* TIM1 Reset Bit */
#define LIN_TIC_STOP		T1SC_TSTOP		/* TIM1 Stop Bit */
#define LIN_TIC_TOIE		T1SC_TOIE		/* TIM1 Overflow Interrupt Enable Bit */
#define LIN_TIC_TOF			T1SC_TOF		/* TIM1 Overflow Flag Bit */
#define LIN_TIC_SC			T1SC			/*** T1SC - TIM1 Status and Control Register ***/

#define TIC_TIC_DIV1		0
#define TIC_TIC_DIV2		1
#define TIC_TIC_DIV4		2
#define TIC_TIC_DIV8		3
#define TIC_TIC_DIV16		4
#define TIC_TIC_DIV32		5
#define TIC_TIC_DIV64		6

#define TIC_RST				0x10
#define TIC_STOP			0x20
#define TIC_TOIE			0x40
#define TIC_TOF				0x80

#define LIN_TIC_CNT_H		T1CNTH			/*** T1CNTH - TIM1 Counter Register High ***/
#define LIN_TIC_CNT_L		T1CNTL			/*** T1CNTL - TIM1 Counter Register Low ***/

#define LIN_TIC_MAXDTY		T1SC0_CH0MAX	/* Channel 0 Maximum Duty Cycle Bit */
#define LIN_TIC_TOV			T1SC0_TOV0		/* Toggle-On-Overflow Bit */
#define LIN_TIC_ELSL		T1SC0_ELS0A		/* Edge/Level Select Bit */
#define LIN_TIC_ELSH		T1SC0_ELS0B		/* Edge/Level Select Bit */
#define LIN_TIC_MSL			T1SC0_MS0A		/* Mode Select Bit A */
#define LIN_TIC_MSH			T1SC0_MS0B		/* Mode Select Bit B */
#define LIN_TIC_IE			T1SC0_CH0IE		/* Channel 0 Interrupt Enable Bit */
#define LIN_TIC_IF			T1SC0_CH0F		/* Channel 0 Flag Bit */
#define LIN_TIC_SC0			T1SC0

#define TIC_MAXDTY			0x01
#define TIC_TOV				0x02
#define TIC_IC_RISING		0x04
#define	TIC_IC_FALLING		0x08
#define TIC_IC_BOTH			0x0c
#define TIC_IE				0x40
#define TIC_IF				0x80

#define LIN_TIC_TMR_H		T1CH0H
#define LIN_TIC_TMR_L		T1CH0L

#define LIN_TIC_COUNTS_SYNCH		5
#define LIN_TIC_COUNTS_WAKEUP		5
#define LIN_TIC_EN_SYNCH			1
#define LIN_TIC_EN_WAKEUP			2

//-----------------------------------------------------------------------
//LIN Timer Defines
#define LIN_TICK_CNT	8000000L
#define LIN_TMR_CLK		0

#define LIN_TMR_CR		TBCR
#define LIN_TMR_ON		TBCR_TBON
#define LIN_TMR_IE		TBCR_TBIE
#define	LIN_TMR_ACK		TBCR_TACK
#define LIN_TMR_TBR		TBCR_TBR
#define LIN_TMR_IF		TBCR_TBIF

#if	LIN_TMR_CLK			== 1//TBM Clock = OSC/128
#define LIN_TMR_DIV1U		7	//32768		
#define LIN_TMR_DIV2U		6	//32768		
#define LIN_TMR_DIV4U		5	//32768		
#define LIN_TMR_DIV8U		4	//32768		
#define LIN_TMR_DIV16U		3	//32768		
#define LIN_TMR_DIV256U		2	//32768		
#define LIN_TMR_DIV1024U	1	//32768		
#define LIN_TMR_DIV4096U	0	//32768		
#else if LIN_TMR_CLK	== 0//TBM_Clock OSC CLOCK
#define LIN_TMR_DIV1U		7	//32768		
#define LIN_TMR_DIV2U		6	//32768		
#define LIN_TMR_DIV4U		5	//32768		
#define LIN_TMR_DIV8U		4	//32768		
#define LIN_TMR_DIV16U		3	//128
#define LIN_TMR_DIV256U		2	//2048
#define LIN_TMR_DIV1MS		1	//8192
#define LIN_TMR_DIV4MS		0	//32768		
#endif
//-----------------------------------------------------------------------
void	LIN_Init_Timer(void);
//void	LIN_SetTimer(L_U16 ticks);
void	LIN_SetTimer(void);
void LIN_QueryTimeoutEvents(void);

void StartTimer(void);
void StopTimer(void);
L_U16 LIN_GetCurrentTime(void);
L_BOOL LIN_CheckTimeOut(L_U16 wTimeStart, L_U16 wTimeNow, L_U16 wTimeOut);

void	LIN_TIC_Init(void);

void	LIN_TIC_Enable(L_U8 en);
	
//Functions
L_BOOL 	LIN_Sys_Init(void);
L_BOOL 	LIN_Flag_Tst(void);
void 	LIN_Flag_Clr(void);
L_U8 	LIN_SCH_Tick(void);
void	LIN_Enable(L_U8 en);
void 	LIN_SCH_Set(void);
void 	LIN_Init_SCI0(void);
L_BOOL	LIN_Connect(void);
L_BOOL	LIN_Disconnect(void);
void	LIN_Data_Received(void);

void	LIN_Wakeup(void);

void	LIN_SetBaudrate(void);
void	LIN_SendData(L_U8	data);
L_U8	LIN_Calc_Tx_Checksum(L_U8	uBytes);
L_U8	LIN_Calc_Tx_Checksum_EN(L_U8	uBytes);
L_U8	LIN_Calc_Rx_Checksum(L_U8	uBytes);
L_U8	LIN_Calc_Rx_Checksum_EN(L_U8	uBytes);
L_U8	LIN_GetID(L_U8	id);

L_U8	LIN_Read_Node_Status(void);
L_U8	LIN_Read_Error_Status(void);
L_U8	LIN_Read_Transceiver_Status(void);
L_U8	LIN_Read_Pending_Status(void);

//L_U8	LIN_GetHeaderType(void);

///*LINDRV_EXT*/	LIN_Flag_Str 	_LIN_State_Flags;
//#define 		LIN_State_Flags	_LIN_State_Flags.LIN_Flags				
///*LINDRV_EXT*/	LIN_ERR_Status	LIN_Errors;
#define	LIN_INDEX_ID		9
#define LIN_INDEX_CHECKSUM	8
#define LIN_TX_BUFLEN		10
#define LIN_RX_BUFLEN		10

LINDRV_EXT	L_U8	LIN_Node_Status;
LINDRV_EXT	L_U8	LIN_Transceiver_Status;
LINDRV_EXT	L_U8	LIN_Error_Status;
LINDRV_EXT	L_U8	LIN_Pending_Status;

LINDRV_EXT	L_U16	LIN_TIC_Period;
LINDRV_EXT	L_U8	LIN_TIC_Counter;

LINDRV_EXT	L_U16	LIN_Timer_Count;

LINDRV_EXT	L_U8	LIN_RX_Buf[LIN_RX_BUFLEN];
LINDRV_EXT	L_U8	LIN_TX_Buf[LIN_TX_BUFLEN];

LINDRV_EXT	L_U8	LIN_SCIStatus1;
LINDRV_EXT	L_U8	LIN_SCIStatus2;

LINDRV_EXT	L_U8	LIN_MSG_Length;
LINDRV_EXT	L_U8	LIN_TmpByte;
LINDRV_EXT	L_U8	LIN_LastPID;
LINDRV_EXT	L_U8	LIN_Err_RxCounter;
LINDRV_EXT	L_U8	LIN_Err_TxCounter;
LINDRV_EXT	L_U8	LIN_Rx_Counter;
LINDRV_EXT	L_U8	LIN_Tx_Counter;
LINDRV_EXT	L_U8	LIN_Wakeup_Count;
LINDRV_EXT	L_U8	LIN_Frame_Index;
/*LINDRV_EXT	LIN_State_Flags;*/
/*LINDRV_EXT	LIN_State_Flags;*/
#endif

⌨️ 快捷键说明

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