📄 lin_driver08.h
字号:
//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 + -