xWRL6432 MMWAVE-L-SDK  05.05.00.00
lin/v0/lin.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2022-23 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
48 #ifndef LIN_V0_H_
49 #define LIN_V0_H_
50 
51 /* ========================================================================== */
52 /* Include Files */
53 /* ========================================================================== */
54 
55 #include <stdint.h>
56 #include <kernel/dpl/SystemP.h>
57 #include <kernel/dpl/SemaphoreP.h>
58 #include <kernel/dpl/HwiP.h>
59 #include <drivers/hw_include/cslr.h>
60 #include <drivers/hw_include/cslr_soc.h>
61 #include <drivers/hw_include/cslr_lin.h>
62 #include <drivers/hw_include/hw_types.h>
63 
64 #ifdef __cplusplus
65 extern "C" {
66 #endif
67 
68 /* ========================================================================== */
69 /* Macros & Typedefs */
70 /* ========================================================================== */
71 
74 #define LIN_IO_DFT_KEY (0xAU)
75 
78 #define LIN_WAKEUP_KEY (0xF0U)
79 
88 #define LIN_ID0 (0x1U)
89 #define LIN_ID1 (0x2U)
90 #define LIN_ID2 (0x4U)
91 #define LIN_ID3 (0x8U)
92 #define LIN_ID4 (0x10U)
93 #define LIN_ID5 (0x20U)
94 
106 #define LIN_INT_WAKEUP (0x00000002U) /* Wakeup */
107 #define LIN_INT_TO (0x00000010U) /* Time out */
108 #define LIN_INT_TOAWUS (0x00000040U) /* Time out after wakeup signal */
109 #define LIN_INT_TOA3WUS (0x00000080U) /* Time out after 3 wakeup signals */
110 #define LIN_INT_TX (0x00000100U) /* Transmit buffer ready */
111 #define LIN_INT_RX (0x00000200U) /* Receive buffer ready */
112 #define LIN_INT_ID (0x00002000U) /* Received matching identifier */
113 #define LIN_INT_PE (0x01000000U) /* Parity error */
114 #define LIN_INT_OE (0x02000000U) /* Overrun error */
115 #define LIN_INT_FE (0x04000000U) /* Framing error */
116 #define LIN_INT_NRE (0x08000000U) /* No response error */
117 #define LIN_INT_ISFE (0x10000000U) /* Inconsistent sync field error */
118 #define LIN_INT_CE (0x20000000U) /* Checksum error */
119 #define LIN_INT_PBE (0x40000000U) /* Physical bus error */
120 #define LIN_INT_BE (0x80000000U) /* Bit error */
121 #define LIN_INT_ALL (0xFF0023D2U) /* All interrupts */
122 
132 #define LIN_FLAG_BREAK (CSL_APP_LIN_SCIFLR_BRKDT_MASK)
133 #define LIN_FLAG_WAKEUP (CSL_APP_LIN_SCIFLR_WAKEUP_MASK)
134 #define LIN_FLAG_IDLE (CSL_APP_LIN_SCIFLR_BUSY_MASK)
135 #define LIN_FLAG_TO (CSL_APP_LIN_SCIFLR_TIMEOUT_MASK)
136 #define LIN_FLAG_TOAWUS (CSL_APP_LIN_SCIFLR_TOAWUS_MASK)
137 #define LIN_FLAG_TOA3WUS (CSL_APP_LIN_SCIFLR_TOA3WUS_MASK)
138 #define LIN_FLAG_TXRDY (CSL_APP_LIN_SCIFLR_TXRDY_MASK)
139 #define LIN_FLAG_RXRDY (CSL_APP_LIN_SCIFLR_RXRDY_MASK)
140 #define LIN_FLAG_TXWAKE (CSL_APP_LIN_SCIFLR_TXWAKE_MASK)
141 #define LIN_FLAG_TXEMPTY (CSL_APP_LIN_SCIFLR_TXEMPTY_MASK)
142 #define LIN_FLAG_RXWAKE (CSL_APP_LIN_SCIFLR_RXWAKE_MASK)
143 #define LIN_FLAG_TXID (CSL_APP_LIN_SCIFLR_IDTXFLAG_MASK)
144 #define LIN_FLAG_RXID (CSL_APP_LIN_SCIFLR_IDRXFLAG_MASK)
145 #define LIN_FLAG_PE (CSL_APP_LIN_SCIFLR_PE_MASK)
146 #define LIN_FLAG_OE (CSL_APP_LIN_SCIFLR_OE_MASK)
147 #define LIN_FLAG_FE (CSL_APP_LIN_SCIFLR_FE_MASK)
148 #define LIN_FLAG_NRE (CSL_APP_LIN_SCIFLR_NRE_MASK)
149 #define LIN_FLAG_ISFE (CSL_APP_LIN_SCIFLR_ISFE_MASK)
150 #define LIN_FLAG_CE (CSL_APP_LIN_SCIFLR_CE_MASK)
151 #define LIN_FLAG_PBE (CSL_APP_LIN_SCIFLR_PBE_MASK)
152 #define LIN_FLAG_BE (CSL_APP_LIN_SCIFLR_BE_MASK)
153 
164 #define LIN_VECT_NONE (0x00)
165 #define LIN_VECT_WAKEUP (0x01)
166 #define LIN_VECT_ISFE (0x02)
167 #define LIN_VECT_PE (0x03)
168 #define LIN_VECT_ID (0x04)
169 #define LIN_VECT_PBE (0x05)
170 #define LIN_VECT_FE (0x06)
171 #define LIN_VECT_BREAK (0x07)
172 #define LIN_VECT_CE (0x08)
173 #define LIN_VECT_OE (0x09)
174 #define LIN_VECT_BE (0x0A)
175 #define LIN_VECT_RX (0x0B)
176 #define LIN_VECT_TX (0x0C)
177 #define LIN_VECT_NRE (0x0D)
178 #define LIN_VECT_TOAWUS (0x0E)
179 #define LIN_VECT_TOA3WUS (0x0F)
180 #define LIN_VECT_TO (0x10)
181 
192 #define LIN_ALL_ERRORS (0xF0000000U)
193 #define LIN_BIT_ERROR (0x80000000U)
194 #define LIN_BUS_ERROR (0x40000000U)
195 #define LIN_CHECKSUM_ERROR (0x20000000U)
196 #define LIN_ISF_ERROR (0x10000000U)
197 
208 #define LIN_SCI_ALL_ERRORS (0x7000000U)
209 #define LIN_SCI_FRAME_ERROR (0x4000000U)
210 #define LIN_SCI_PARITY_ERROR (0x2000000U)
211 #define LIN_SCI_BREAK_ERROR (0x1000000U)
212 
224 #define LIN_SCI_INT_BREAK (0x1U)
225 #define LIN_SCI_INT_WAKEUP (0x2U)
226 #define LIN_SCI_INT_TX (0x100U)
227 #define LIN_SCI_INT_RX (0x200U)
228 #define LIN_SCI_INT_TX_DMA (0x10000U)
229 #define LIN_SCI_INT_RX_DMA (0x20000U)
230 #define LIN_SCI_INT_PARITY (0x1000000U)
231 #define LIN_SCI_INT_OVERRUN (0x2000000U)
232 #define LIN_SCI_INT_FRAME (0x4000000U)
233 #define LIN_SCI_INT_ALL (0x7000303U)
234 
236 /* ========================================================================== */
237 /* Structures and Enums */
238 /* ========================================================================== */
239 
242 typedef enum
243 {
245  LIN_LOOPBACK_ANALOG = 1U
247 
250 typedef enum
251 {
254  LIN_ANALOG_LOOP_RX = 1U
256 
259 typedef enum
260 {
262  LIN_COMM_LIN_ID4ID5LENCTL = 0x0001U
264 
267 typedef enum
268 {
270  LIN_COMM_SCI_ADDRBIT = 0x0001U
272 
275 typedef enum
276 {
280 
283 typedef enum
284 {
288 
291 typedef enum
292 {
294  LIN_CHECKSUM_ENHANCED = 0x1U
296 
299 typedef enum
300 {
302  LIN_DEBUG_COMPLETE = 0x1U
304 
307 typedef enum
308 {
314 
317 typedef enum
318 {
320  LIN_SCI_PAR_EVEN = 0x1U
322 
325 typedef enum
326 {
328  LIN_SCI_STOP_TWO = 0x1U
330 
333 typedef enum
334 {
336  LIN_PINTYPE_RX = 0x2U
338 
339 /* ========================================================================== */
340 /* Internal/Private Structure Declarations */
341 /* ========================================================================== */
342 
343 /* None */
344 
345 /* ========================================================================== */
346 /* Global Variables Declarations */
347 /* ========================================================================== */
348 
349 /* None */
350 
351 /* ========================================================================== */
352 /* Function Declarations */
353 /* ========================================================================== */
354 
362 void LIN_initModule(uint32_t base);
363 
372 void LIN_getData(uint32_t base, uint16_t * const data);
373 
382 void LIN_sendData(uint32_t base, uint16_t *data);
383 
384 /* ========================================================================== */
385 /* Static Function Definitions */
386 /* ========================================================================== */
387 
399 static inline Bool
400 LIN_isBaseValid(uint32_t base)
401 {
402  return(base == CSL_APP_LIN_U_BASE);
403 }
404 
417 static inline void
418 LIN_setLINMode(uint32_t base, LIN_LINMode mode)
419 {
420  /* Paramter Validation */
422 
423  /* Program LIN Mode */
424  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_CLK_COMMANDER_MASK, CSL_APP_LIN_SCIGCR1_CLK_COMMANDER_SHIFT, mode);
425 }
426 
443 static inline void
444 LIN_setMaximumBaudRate(uint32_t base, uint32_t clock)
445 {
446  /* Parameter Validation */
448 
449  /* Calculate maximum baud rate prescaler */
450  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_MBRSR), CSL_APP_LIN_MBRSR_MBR_MASK, CSL_APP_LIN_MBRSR_MBR_SHIFT, (clock / 20000U));
451 }
452 
465 static inline void
467 {
468  /* Parameter Validation */
470 
471  /* Sets the message filtering type */
472  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_HGENCTRL_MASK, CSL_APP_LIN_SCIGCR1_HGENCTRL_SHIFT, type);
473 }
474 
483 static inline void
484 LIN_enableParity(uint32_t base)
485 {
486  /* Parameter Validation */
488 
489  /* Enable the parity mode */
490  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_PARITYENA_MASK, CSL_APP_LIN_SCIGCR1_PARITYENA_SHIFT, CSL_TRUE);
491 }
492 
501 static inline void
502 LIN_disableParity(uint32_t base)
503 {
504  /* Parameter Validation */
506 
507  /* Enable the parity mode */
508  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_PARITYENA_MASK, CSL_APP_LIN_SCIGCR1_PARITYENA_SHIFT, CSL_FALSE);
509 }
510 
526 static inline uint16_t
527 LIN_generateParityID(uint16_t identifier)
528 {
529  uint16_t p0, p1, parityIdentifier;
530 
531  /* Calculate parity bits and generate updated identifier */
532  p0 = ((identifier & LIN_ID0) ^ ((identifier & LIN_ID1) >> 1U) ^
533  ((identifier & LIN_ID2) >> 2U) ^ ((identifier & LIN_ID4) >> 4U));
534  p1 = ((((identifier & LIN_ID1) >> 1U) ^ ((identifier & LIN_ID3) >> 3U) ^ ((identifier & LIN_ID4) >> 4U) ^ ((identifier & LIN_ID5) >> 5U)) == 0U) ? 1U : 0U;
535  parityIdentifier = identifier | ((p0 << 6U) | (p1 << 7U));
536 
537  return(parityIdentifier);
538 }
539 
551 static inline void
552 LIN_setIDByte(uint32_t base, uint16_t identifier)
553 {
554  /* Parameter Validation */
556 
557  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_LINID), CSL_APP_LIN_LINID_IDBYTE_MASK, CSL_APP_LIN_LINID_IDBYTE_SHIFT, identifier);
558 }
559 
571 static inline void
572 LIN_setIDResponderTask(uint32_t base, uint16_t identifier)
573 {
574  /* Parameter Validation */
576 
577  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_LINID), CSL_APP_LIN_LINID_IDRESPONDERTASKBYTE_MASK, CSL_APP_LIN_LINID_IDRESPONDERTASKBYTE_SHIFT, identifier);
578 }
579 
589 static inline void
590 LIN_sendWakeupSignal(uint32_t base)
591 {
592  volatile uint8_t timeout = 0x10;
593 
594  /* Parameter Validation */
596 
597  /* Entering Powerdown */
598  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR2), CSL_APP_LIN_SCIGCR2_POWERDOWN_MASK, CSL_APP_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_TRUE);
599 
600  /* Set key in Byte 0 (MSB) of transmit buffer 0 register */
601  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_LINTD0), CSL_APP_LIN_LINTD0_TD3_MASK, CSL_APP_LIN_LINTD0_TD3_SHIFT, (uint16_t)LIN_WAKEUP_KEY);
602 
603  /* Transmit TDO for wakeup */
604  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR2), CSL_APP_LIN_SCIGCR2_GENWU_MASK, CSL_APP_LIN_SCIGCR2_GENWU_SHIFT, CSL_TRUE);
605 
606  while((HW_RD_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR2), CSL_APP_LIN_SCIGCR2_POWERDOWN_MASK, CSL_APP_LIN_SCIGCR2_POWERDOWN_SHIFT) == CSL_TRUE))
607  {
608  if(timeout > 0U)
609  {
610  timeout = timeout- 1U;
611  }
612  else
613  {
614  break;
615  }
616  }
617 }
618 
633 static inline void
634 LIN_enterSleep(uint32_t base)
635 {
636  /* Parameter Validation */
638 
639  /* Entering Powerdown */
640  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR2), CSL_APP_LIN_SCIGCR2_POWERDOWN_MASK, CSL_APP_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_TRUE);
641 }
642 
652 static inline void
653 LIN_sendChecksum(uint32_t base)
654 {
655  /* Parameter Validation */
657 
658  /* Setting the Check Sum */
659  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR2), CSL_APP_LIN_SCIGCR2_SC_MASK, CSL_APP_LIN_SCIGCR2_SC_SHIFT, CSL_TRUE);
660 }
661 
671 static inline void
673 {
674  /* Parameter Validation */
676 
677  /* Comparing the Check Sum */
678  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR2), CSL_APP_LIN_SCIGCR2_CC_MASK, CSL_APP_LIN_SCIGCR2_CC_SHIFT, CSL_TRUE);
679 }
680 
692 static inline Bool
693 LIN_isTxReady(uint32_t base)
694 {
695  /* Parameter Validation */
697 
698  /* Check TXRDY BIT */
699  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR) & CSL_APP_LIN_SCIFLR_TXRDY_MASK) ==
700  CSL_APP_LIN_SCIFLR_TXRDY_MASK);
701 }
702 
715 static inline void
716 LIN_setFrameLength(uint32_t base, uint16_t length)
717 {
718  /* Parameter Validation */
720  DebugP_assert((length > 0U) && (length < 9U));
721 
722  /* Clear and set frame length value */
723  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIFORMAT), CSL_APP_LIN_SCIFORMAT_LENGTH_MASK, CSL_APP_LIN_SCIFORMAT_LENGTH_SHIFT, ((uint32_t)length - (uint32_t)1U));
724 }
725 
740 static inline void
741 LIN_setCommMode(uint32_t base, LIN_CommMode mode)
742 {
743  /* Parameter Validation */
745 
746  /* Write communication mode selection to the appropriate bit. */
747  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_COMMMODE_MASK, CSL_APP_LIN_SCIGCR1_COMMMODE_SHIFT, (uint16_t)mode);
748 }
749 
760 static inline void
761 LIN_setTxMask(uint32_t base, uint16_t mask)
762 {
763  /* Parameter Validation */
765 
766  /* Clear previous mask value and set new mask */
767  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_LINMASK), CSL_APP_LIN_LINMASK_TXIDMASK_MASK, CSL_APP_LIN_LINMASK_TXIDMASK_SHIFT, mask);
768 }
769 
780 static inline void
781 LIN_setRxMask(uint32_t base, uint16_t mask)
782 {
783  /* Parameter Validation */
785 
786  /* Clear previous mask value and set new mask */
787  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_LINMASK), CSL_APP_LIN_LINMASK_RXIDMASK_MASK, CSL_APP_LIN_LINMASK_RXIDMASK_SHIFT, (uint32_t)mask);
788 }
789 
799 static inline uint16_t
800 LIN_getTxMask(uint32_t base)
801 {
802  /* Parameter Validation */
804 
805  /* Get Tx Mask status */
806  return(HW_RD_FIELD32_RAW((base + CSL_APP_LIN_LINMASK), CSL_APP_LIN_LINMASK_TXIDMASK_MASK, CSL_APP_LIN_LINMASK_TXIDMASK_SHIFT));
807 }
808 
820 static inline uint16_t
821 LIN_getRxMask(uint32_t base)
822 {
823  /* Parameter Validation */
825 
826  /* Get Tx Mask status */
827  return(HW_RD_FIELD32_RAW((base + CSL_APP_LIN_LINMASK), CSL_APP_LIN_LINMASK_RXIDMASK_MASK, CSL_APP_LIN_LINMASK_RXIDMASK_SHIFT));
828 }
829 
841 static inline Bool
842 LIN_isRxReady(uint32_t base)
843 {
844  /* Parameter Validation */
846 
847  /* Ready Rx ready flag and return status */
848  return(HW_RD_FIELD32_RAW((base + CSL_APP_LIN_SCIFLR), CSL_APP_LIN_SCIFLR_RXRDY_MASK, CSL_APP_LIN_SCIFLR_RXRDY_SHIFT));
849 }
850 
861 static inline uint16_t
862 LIN_getRxIdentifier(uint32_t base)
863 {
864  /* Parameter Validation */
866 
867  /* Ready Rx ready flag and return status */
868  return(HW_RD_FIELD32_RAW((base + CSL_APP_LIN_LINID), CSL_APP_LIN_LINID_RECEIVEDID_MASK, CSL_APP_LIN_LINID_RECEIVEDID_SHIFT));
869 }
870 
882 static inline Bool
883 LIN_isTxMatch(uint32_t base)
884 {
885  /* Parameter Validation */
887 
888  /* Read Tx ID flag and return status */
889  return(HW_RD_FIELD32_RAW((base + CSL_APP_LIN_SCIFLR), CSL_APP_LIN_SCIFLR_IDTXFLAG_MASK, CSL_APP_LIN_SCIFLR_IDTXFLAG_SHIFT));
890 }
891 
903 static inline Bool
904 LIN_isRxMatch(uint32_t base)
905 {
906  /* Parameter Validation */
908 
909  /* Read Tx ID flag and return status */
910  return(HW_RD_FIELD32_RAW((base + CSL_APP_LIN_SCIFLR), CSL_APP_LIN_SCIFLR_IDRXFLAG_MASK, CSL_APP_LIN_SCIFLR_IDRXFLAG_SHIFT));
911 }
912 
946 static inline void
947 LIN_enableInterrupt(uint32_t base, uint32_t intFlags)
948 {
949  /* Parameter Validation */
951 
952  /* Set Interrupt Flags */
953  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCISETINT), HW_RD_REG32_RAW(base + CSL_APP_LIN_SCISETINT)|intFlags);
954 }
955 
989 static inline void
990 LIN_disableInterrupt(uint32_t base, uint32_t intFlags)
991 {
992  /* Parameter Validation */
994 
995  /* Clear Interrupt Flags */
996  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCICLEARINT), intFlags);
997 }
998 
1031 static inline void
1032 LIN_clearInterruptStatus(uint32_t base, uint32_t intFlags)
1033 {
1034  /* Parameter Validation */
1036 
1037  /* Clear Status Flags */
1038  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCIFLR), intFlags);
1039 }
1040 
1074 static inline void
1075 LIN_setInterruptLevel0(uint32_t base, uint32_t intFlags)
1076 {
1077  /* Check the arguments. */
1079 
1080  /* Clear Status Flags */
1081  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCICLEARINTLVL), intFlags);
1082 }
1083 
1117 static inline void
1118 LIN_setInterruptLevel1(uint32_t base, uint32_t intFlags)
1119 {
1120  /* Check the arguments. */
1122 
1123  /* Set interrupt levels to 1 */
1124  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCISETINTLVL), HW_RD_REG32_RAW(base + CSL_APP_LIN_SCISETINTLVL)|intFlags);
1125 }
1126 
1144 static inline void
1145 LIN_enableModuleErrors(uint32_t base, uint32_t errors)
1146 {
1147  /* Check the arguments. */
1149 
1150  /* Clear the IO DFT Enable Key & Enable write access*/
1151  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, (uint32_t)LIN_IO_DFT_KEY);
1152 
1153  /* Enable specified error bits */
1154  HW_WR_REG32_RAW((base + CSL_APP_LIN_IODFTCTRL), HW_RD_REG32_RAW(base + CSL_APP_LIN_IODFTCTRL)|errors);
1155 
1156  /* Clear the IO DFT Enable Key */
1157  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, (uint32_t)CSL_FALSE);
1158 }
1159 
1175 static inline void
1176 LIN_disableModuleErrors(uint32_t base, uint32_t errors)
1177 {
1178  /* Check the arguments. */
1180 
1181  /* Clear the IO DFT Enable Key & Enable write access */
1182  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, (uint32_t)LIN_IO_DFT_KEY);
1183 
1184  /* Disable specified error bits */
1185  HW_WR_REG32_RAW((base + CSL_APP_LIN_IODFTCTRL), HW_RD_REG32_RAW(base + CSL_APP_LIN_IODFTCTRL)&~(errors));
1186 
1187  /* Clear the IO DFT Enable Key */
1188  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, (uint32_t)CSL_FALSE);
1189 }
1190 
1203 static inline void
1205 {
1206  /* Check the arguments. */
1208 
1209  /* Specified error bits */
1210  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_ADAPT_MASK, CSL_APP_LIN_SCIGCR1_ADAPT_SHIFT, CSL_TRUE);
1211 }
1212 
1222 static inline void
1224 {
1225  /* Check the arguments. */
1227 
1228  /* Specified error bits */
1229  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_ADAPT_MASK, CSL_APP_LIN_SCIGCR1_ADAPT_SHIFT, CSL_FALSE);
1230 }
1231 
1243 static inline void
1245 {
1246  /* Check the arguments. */
1248 
1249  /* Set stop bit. */
1250  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_STOPEXTFRAME_MASK, CSL_APP_LIN_SCIGCR1_STOPEXTFRAME_SHIFT, CSL_TRUE);
1251 }
1252 
1265 static inline void
1267 {
1268  /* Check the arguments. */
1270 
1271  /* Set stop bit. */
1272  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_CTYPE_MASK, CSL_APP_LIN_SCIGCR1_CTYPE_SHIFT, type);
1273 }
1274 
1298 static inline void
1299 LIN_setSyncFields(uint32_t base, uint32_t syncBreak, uint32_t delimiter)
1300 {
1301  /* Check the arguments. */
1303  DebugP_assert(syncBreak < 8U);
1304  DebugP_assert((delimiter >= 1U) && (delimiter < 5U));
1305 
1306  /* Clear sync values and set new values */
1307  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_LINCOMP), (CSL_APP_LIN_LINCOMP_SDEL_MASK|CSL_APP_LIN_LINCOMP_SBREAK_MASK),
1308  CSL_APP_LIN_LINCOMP_SDEL_SHIFT, (syncBreak | (delimiter - (uint32_t)1U)));
1309 }
1310 
1319 static inline void
1320 LIN_enableSCIMode(uint32_t base)
1321 {
1322  /* Check the arguments. */
1324 
1325  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_LINMODE_MASK,
1326  CSL_APP_LIN_SCIGCR1_LINMODE_SHIFT, CSL_FALSE);
1327 
1328  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_CLK_COMMANDER_MASK,
1329  CSL_APP_LIN_SCIGCR1_CLK_COMMANDER_SHIFT, CSL_TRUE);
1330 
1331  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_TIMINGMODE_MASK,
1332  CSL_APP_LIN_SCIGCR1_TIMINGMODE_SHIFT, CSL_TRUE);
1333 }
1334 
1343 static inline void
1344 LIN_disableSCIMode(uint32_t base)
1345 {
1346  /* Check the arguments. */
1348 
1349  /* Disable SCI communications mode */
1350  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_CLK_COMMANDER_MASK,
1351  CSL_APP_LIN_SCIGCR1_CLK_COMMANDER_SHIFT, CSL_FALSE);
1352 
1353  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_TIMINGMODE_MASK,
1354  CSL_APP_LIN_SCIGCR1_TIMINGMODE_SHIFT, CSL_FALSE);
1355 
1356  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_LINMODE_MASK,
1357  CSL_APP_LIN_SCIGCR1_LINMODE_SHIFT, CSL_TRUE);
1358 }
1359 
1373 static inline void
1375 {
1376  /* Check the arguments. */
1378  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1379  0U);
1380 
1381  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_COMMMODE_MASK,
1382  CSL_APP_LIN_SCIGCR1_COMMMODE_SHIFT, mode);
1383 }
1384 
1397 static inline void
1399 {
1400  /* Check the arguments. */
1402  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1403  0U);
1404 
1405  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_PARITYENA_MASK,
1406  CSL_APP_LIN_SCIGCR1_PARITYENA_SHIFT, 1U);
1407 
1408  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_PARITY_MASK,
1409  CSL_APP_LIN_SCIGCR1_PARITY_SHIFT, parity);
1410 }
1411 
1420 static inline void
1421 LIN_disableSCIParity(uint32_t base)
1422 {
1423  /* Check the arguments. */
1425  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1426  0U);
1427 
1428  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_PARITYENA_MASK,
1429  CSL_APP_LIN_SCIGCR1_PARITYENA_SHIFT, 0U);
1430 }
1431 
1444 static inline void
1445 LIN_setSCIStopBits(uint32_t base, LIN_SCIStopBits number)
1446 {
1447  /* Check the arguments. */
1449  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1450  0U);
1451 
1452  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_STOP_MASK,
1453  CSL_APP_LIN_SCIGCR1_STOP_SHIFT, number);
1454 }
1455 
1469 static inline void
1471 {
1472  /* Check the arguments. */
1474  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1475  0U);
1476 
1477  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_SLEEP_MASK,
1478  CSL_APP_LIN_SCIGCR1_SLEEP_SHIFT, CSL_TRUE);
1479 }
1480 
1490 static inline void
1492 {
1493  /* Check the arguments. */
1495  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1496  0U);
1497 
1498  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_SLEEP_MASK,
1499  CSL_APP_LIN_SCIGCR1_SLEEP_SHIFT, CSL_FALSE);
1500 }
1501 
1514 static inline void
1515 LIN_enterSCILowPower(uint32_t base)
1516 {
1517  /* Check the arguments. */
1519  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1520  0U);
1521 
1522  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR2), CSL_APP_LIN_SCIGCR2_POWERDOWN_MASK,
1523  CSL_APP_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_TRUE);
1524 }
1525 
1534 static inline void
1535 LIN_exitSCILowPower(uint32_t base)
1536 {
1537  /* Check the arguments. */
1539  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1540  0U);
1541 
1542  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR2), CSL_APP_LIN_SCIGCR2_POWERDOWN_MASK,
1543  CSL_APP_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_FALSE);
1544 }
1545 
1557 static inline void
1558 LIN_setSCICharLength(uint32_t base, uint16_t numBits)
1559 {
1560  /* Check the arguments. */
1562  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1563  0U);
1564  DebugP_assert((numBits > 0U) && (numBits < 9U));
1565 
1566  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIFORMAT), CSL_APP_LIN_SCIFORMAT_CHAR_MASK,
1567  CSL_APP_LIN_SCIFORMAT_CHAR_SHIFT, (numBits - (uint32_t)1U));
1568 }
1569 
1582 static inline void
1583 LIN_setSCIFrameLength(uint32_t base, uint16_t length)
1584 {
1585  /* Check the arguments. */
1587  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1588  0U);
1589  DebugP_assert((length > 0U) && (length < 9U));
1590 
1591  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIFORMAT), CSL_APP_LIN_SCIFORMAT_LENGTH_MASK,
1592  CSL_APP_LIN_SCIFORMAT_LENGTH_SHIFT, (length - (uint32_t)1U));
1593 }
1594 
1606 static inline Bool
1608 {
1609  /* Check the arguments. */
1611  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1612  0U);
1613 
1614  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR) & CSL_APP_LIN_SCIFLR_RXRDY_MASK) == CSL_APP_LIN_SCIFLR_RXRDY_MASK);
1615 }
1616 
1628 static inline Bool
1630 {
1631  /* Check the arguments. */
1633  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1634  0U);
1635 
1636  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR) & CSL_APP_LIN_SCIFLR_TXRDY_MASK) == CSL_APP_LIN_SCIFLR_TXRDY_MASK);
1637 }
1638 
1660 static inline uint16_t
1661 LIN_readSCICharNonBlocking(uint32_t base, Bool emulation)
1662 {
1663  /* Check the arguments. */
1665  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1666  0U);
1667 
1668  /* Read specific data register */
1669  return((emulation > 0U) ? (HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIED) & CSL_APP_LIN_SCIED_ED_MASK) :
1670  (HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIRD) & CSL_APP_LIN_SCIRD_RD_MASK));
1671 }
1672 
1692 static inline uint16_t
1693 LIN_readSCICharBlocking(uint32_t base, Bool emulation)
1694 {
1695  /* Check the arguments. */
1697  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1698  0U);
1699 
1700  /* Wait until a character is available in buffer. */
1701  while(LIN_isSCIDataAvailable(base)==0U)
1702  {
1703  }
1704 
1705  /* Read specific data register */
1706  return((emulation > 0U) ? (HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIED) & CSL_APP_LIN_SCIED_ED_MASK) :
1707  (HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIRD) & CSL_APP_LIN_SCIRD_RD_MASK));
1708 }
1709 
1724 static inline void
1725 LIN_writeSCICharNonBlocking(uint32_t base, uint16_t data)
1726 {
1727  /* Check the arguments. */
1729  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1730  0U);
1731  DebugP_assert(data <= CSL_APP_LIN_SCITD_TD_MASK);
1732 
1733  /* Set the Tx Data */
1734  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCITD), CSL_APP_LIN_SCITD_TD_MASK, CSL_APP_LIN_SCITD_TD_SHIFT, data);
1735 }
1736 
1748 static inline void
1749 LIN_writeSCICharBlocking(uint32_t base, uint16_t data)
1750 {
1751  /* Check the arguments. */
1753  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1754  0U);
1755  DebugP_assert(data <= CSL_APP_LIN_SCITD_TD_MASK);
1756 
1757  /* Wait until space is available in the transmit buffer. */
1758  while(LIN_isSCISpaceAvailable(base)==0U)
1759  {
1760  }
1761 
1762  /* Set the Tx Data */
1763  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCITD), CSL_APP_LIN_SCITD_TD_MASK, CSL_APP_LIN_SCITD_TD_SHIFT, data);
1764 }
1765 
1784 static inline void
1785 LIN_enableSCIModuleErrors(uint32_t base, uint32_t errors)
1786 {
1787  /* Check the arguments. */
1789  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1790  0U);
1791 
1792  /* Clear the IO DFT Enable Key & Enable write access */
1793  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
1794 
1795  /* Enable specified error bits */
1796  HW_WR_REG32_RAW((base + CSL_APP_LIN_IODFTCTRL), (HW_RD_REG32_RAW(base + CSL_APP_LIN_IODFTCTRL)|errors));
1797 
1798  /* Clear the IO DFT Enable Key & Enable write access */
1799  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
1800 }
1801 
1817 static inline void
1818 LIN_disableSCIModuleErrors(uint32_t base, uint32_t errors)
1819 {
1820  /* Check the arguments. */
1822  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1823  0U);
1824 
1825  /* Clear the IO DFT Enable Key & Enable write access */
1826  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
1827 
1828  /* Disable specified error bits */
1829  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), errors, 0U, CSL_FALSE);
1830 
1831  /* Clear the IO DFT Enable Key & Enable write access */
1832  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
1833 }
1834 
1862 static inline void
1863 LIN_enableSCIInterrupt(uint32_t base, uint32_t intFlags)
1864 {
1865  /* Check the arguments. */
1867  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1868  0U);
1869 
1870  /* Set specified interrupts */
1871  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCISETINT), (HW_RD_REG32_RAW(base + CSL_APP_LIN_SCISETINT)|intFlags));
1872 }
1873 
1901 static inline void
1902 LIN_disableSCIInterrupt(uint32_t base, uint32_t intFlags)
1903 {
1904  /* Check the arguments. */
1906  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1907  0U);
1908 
1909  /* Set specified interrupts */
1910  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCICLEARINT), (HW_RD_REG32_RAW(base + CSL_APP_LIN_SCICLEARINT)|intFlags));
1911 }
1912 
1939 static inline void
1940 LIN_clearSCIInterruptStatus(uint32_t base, uint32_t intFlags)
1941 {
1942  /* Check the arguments. */
1944  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1945  0U);
1946 
1947  /* Set specified interrupts */
1948  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCIFLR), (HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR)|intFlags));
1949 }
1950 
1978 static inline void
1979 LIN_setSCIInterruptLevel0(uint32_t base, uint32_t intFlags)
1980 {
1981  /* Check the arguments. */
1983  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
1984  0U);
1985 
1986  /* Clear Status Flags */
1987  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCICLEARINTLVL), (HW_RD_REG32_RAW(base + CSL_APP_LIN_SCICLEARINTLVL)|intFlags));
1988 }
1989 
2016 static inline void
2017 LIN_setSCIInterruptLevel1(uint32_t base, uint32_t intFlags)
2018 {
2019  /* Check the arguments. */
2021  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
2022  0U);
2023 
2024  /* Set interrupt levels to 1 */
2025  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCISETINTLVL), HW_RD_REG32_RAW(base + CSL_APP_LIN_SCISETINTLVL)|intFlags);
2026 }
2027 
2039 static inline Bool
2041 {
2042  /* Check the arguments. */
2044  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
2045  0U);
2046 
2047  /* Read Rx Idle flag and return status */
2048  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR) & CSL_APP_LIN_SCIFLR_IDLE_MASK) == 0U);
2049 }
2050 
2063 static inline Bool
2065 {
2066  /* Check the arguments. */
2068  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
2069  0U);
2070 
2071  /* Read Rx Idle flag and return status */
2072  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR) & CSL_APP_LIN_SCIFLR_WAKEUP_MASK) == CSL_APP_LIN_SCIFLR_WAKEUP_MASK);
2073 }
2074 
2087 static inline Bool
2089 {
2090  /* Check the arguments. */
2092  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
2093  0U);
2094 
2095  /* Read Rx Idle flag and return status */
2096  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR) & CSL_APP_LIN_SCIFLR_RXWAKE_MASK) == CSL_APP_LIN_SCIFLR_RXWAKE_MASK);
2097 }
2098 
2110 static inline Bool
2112 {
2113  /* Check the arguments. */
2115  DebugP_assert((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1) & CSL_APP_LIN_SCIGCR1_LINMODE_MASK) ==
2116  0U);
2117 
2118  /* Read Rx Idle flag and return status */
2119  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR) & CSL_APP_LIN_SCIFLR_BRKDT_MASK) == CSL_APP_LIN_SCIFLR_BRKDT_MASK);
2120 }
2121 
2133 static inline void
2134 LIN_enableModule(uint32_t base)
2135 {
2136  /* Check the arguments. */
2138 
2139  /* Set reset bit. */
2140  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR0), CSL_APP_LIN_SCIGCR0_RESET_MASK, CSL_APP_LIN_SCIGCR0_RESET_SHIFT, CSL_TRUE);
2141 
2142  /* Enable TX and RX pin control functionality. */
2143  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIPIO0), CSL_APP_LIN_SCIPIO0_RXFUNC_MASK, CSL_APP_LIN_SCIPIO0_RXFUNC_SHIFT, CSL_TRUE);
2144  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIPIO0), CSL_APP_LIN_SCIPIO0_TXFUNC_MASK, CSL_APP_LIN_SCIPIO0_TXFUNC_SHIFT, CSL_TRUE);
2145 }
2146 
2158 static inline void
2159 LIN_disableModule(uint32_t base)
2160 {
2161  /* Check the arguments. */
2163 
2164  /* Disable TX and RX pin control functionality. */
2165  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIPIO0), CSL_APP_LIN_SCIPIO0_RXFUNC_MASK, CSL_APP_LIN_SCIPIO0_RXFUNC_SHIFT, CSL_FALSE);
2166  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIPIO0), CSL_APP_LIN_SCIPIO0_TXFUNC_MASK, CSL_APP_LIN_SCIPIO0_TXFUNC_SHIFT, CSL_FALSE);
2167 
2168  /* Reset reset bit. */
2169  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR0), CSL_APP_LIN_SCIGCR0_RESET_MASK, CSL_APP_LIN_SCIGCR0_RESET_SHIFT, CSL_FALSE);
2170 }
2171 
2187 static inline void
2188 LIN_setBaudRatePrescaler(uint32_t base, uint32_t prescaler,
2189  uint32_t divider)
2190 {
2191  /* Check the arguments. */
2193  DebugP_assert(prescaler <= (CSL_APP_LIN_BRSR_SCI_LIN_PSL_MASK | CSL_APP_LIN_BRSR_SCI_LIN_PSH_MASK));
2194  DebugP_assert(divider <= (CSL_APP_LIN_BRSR_M_MASK >> CSL_APP_LIN_BRSR_M_SHIFT));
2195 
2196  /* Set baud rate prescaler and divider. */
2197  HW_WR_REG32_RAW((base + CSL_APP_LIN_BRSR), (prescaler | (divider << CSL_APP_LIN_BRSR_M_SHIFT)));
2198 }
2199 
2209 static inline void
2211 {
2212  /* Check the arguments. */
2214 
2215  /* Enable transmit bit. */
2216  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1)|CSL_APP_LIN_SCIGCR1_TXENA_MASK);
2217 }
2218 
2228 static inline void
2230 {
2231  /* Check the arguments. */
2233 
2234  /* Enable transmit bit. */
2235  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1)&~(CSL_APP_LIN_SCIGCR1_TXENA_MASK));
2236 }
2237 
2247 static inline void
2249 {
2250  /* Check the arguments. */
2252 
2253  /* Enable receive bit. */
2254  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1)|CSL_APP_LIN_SCIGCR1_RXENA_MASK);
2255 }
2256 
2266 static inline void
2268 {
2269  /* Check the arguments. */
2271 
2272  /* Disable receive bit. */
2273  HW_WR_REG32_RAW((base + CSL_APP_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIGCR1)&~(CSL_APP_LIN_SCIGCR1_RXENA_MASK));
2274 }
2275 
2289 static inline void
2291 {
2292  /* Check the arguments. */
2294 
2295  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_SWNRST_MASK, CSL_APP_LIN_SCIGCR1_SWNRST_SHIFT, CSL_FALSE);
2296  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_SWNRST_MASK, CSL_APP_LIN_SCIGCR1_SWNRST_SHIFT, CSL_TRUE);
2297 }
2298 
2313 static inline void
2315 {
2316  /* Check the arguments. */
2318 
2319  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_SWNRST_MASK, CSL_APP_LIN_SCIGCR1_SWNRST_SHIFT, CSL_FALSE);
2320 }
2321 
2334 static inline void
2336 {
2337  /* Check the arguments. */
2339 
2340  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_SWNRST_MASK, CSL_APP_LIN_SCIGCR1_SWNRST_SHIFT, CSL_TRUE);
2341 }
2342 
2354 static inline Bool
2355 LIN_isBusBusy(uint32_t base)
2356 {
2357  /* Check the arguments. */
2359 
2360  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR) & CSL_APP_LIN_SCIFLR_BUSY_MASK) == CSL_APP_LIN_SCIFLR_BUSY_MASK);
2361 }
2362 
2374 static inline Bool
2375 LIN_isTxBufferEmpty(uint32_t base)
2376 {
2377  /* Check the arguments. */
2379 
2380  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR) & CSL_APP_LIN_SCIFLR_TXEMPTY_MASK) == CSL_APP_LIN_SCIFLR_TXEMPTY_MASK);
2381 }
2382 
2404 static inline void
2405 LIN_enableExtLoopback(uint32_t base, LIN_LoopbackType loopbackType,
2406  LIN_AnalogLoopback path)
2407 {
2408  /* Check the arguments. */
2410 
2411  /* Clear the IO DFT Enable Key */
2412  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
2413 
2414  /* Set loopback Type */
2415  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_LPBENA_MASK, CSL_APP_LIN_IODFTCTRL_LPBENA_SHIFT, loopbackType);
2416 
2417  /* Set Analog Loopback Path */
2418  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_RXPENA_MASK, CSL_APP_LIN_IODFTCTRL_RXPENA_SHIFT, path);
2419 }
2420 
2432 static inline void
2434 {
2435  /* Check the arguments. */
2437 
2438  /* Set loopback Type */
2439  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_LPBENA_MASK, CSL_APP_LIN_IODFTCTRL_LPBENA_SHIFT, CSL_FALSE);
2440 
2441  /* Set Analog Loopback Path */
2442  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_RXPENA_MASK, CSL_APP_LIN_IODFTCTRL_RXPENA_SHIFT, CSL_FALSE);
2443 }
2444 
2454 static inline void
2456 {
2457  /* Check the arguments. */
2459 
2460  /* Set loopback Type */
2461  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_LOOPBACK_MASK, CSL_APP_LIN_SCIGCR1_LOOPBACK_SHIFT, CSL_TRUE);
2462 }
2463 
2473 static inline void
2475 {
2476  /* Check the arguments. */
2478 
2479  /* Set loopback Type */
2480  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_LOOPBACK_MASK, CSL_APP_LIN_SCIGCR1_LOOPBACK_SHIFT, CSL_FALSE);
2481 }
2482 
2516 static inline uint32_t
2518 {
2519  /* Check the arguments. */
2521 
2522  /* Read and return the flag register */
2523  return(HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIFLR));
2524 }
2525 
2537 static inline uint32_t
2539 {
2540  /* Check the arguments. */
2542 
2543  /* Read and return the flag register */
2544  return(HW_RD_REG32_RAW(base + CSL_APP_LIN_SCISETINTLVL));
2545 }
2546 
2582 static inline uint16_t
2584 {
2585  /* Check the arguments. */
2587 
2588  /* Read and return the flag register */
2589  return(HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIINTVECT0) & CSL_APP_LIN_SCIINTVECT0_INTVECT0_MASK);
2590 }
2591 
2627 static inline uint16_t
2629 {
2630  /* Check the arguments. */
2632 
2633  /* Read and return the flag register */
2634  return(HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIINTVECT1) & CSL_APP_LIN_SCIINTVECT1_INTVECT1_MASK);
2635 }
2636 
2645 static inline void
2647 {
2648  /* Check the arguments. */
2650 
2651  /* Read and return the flag register */
2652  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_MBUFMODE_MASK, CSL_APP_LIN_SCIGCR1_MBUFMODE_SHIFT, CSL_TRUE);
2653 }
2654 
2663 static inline void
2665 {
2666  /* Check the arguments. */
2668 
2669  /* Read and return the flag register */
2670  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_MBUFMODE_MASK, CSL_APP_LIN_SCIGCR1_MBUFMODE_SHIFT, CSL_FALSE);
2671 }
2672 
2686 static inline void
2687 LIN_setTransmitDelay(uint32_t base, uint16_t delay)
2688 {
2689  /* Check the arguments. */
2691  DebugP_assert(delay < 8U);
2692 
2693  /* Clear and Set the IO DFT Enable Key */
2694  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
2695 
2696  /* Set the delay value */
2697  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_TXSHIFT_MASK, CSL_APP_LIN_IODFTCTRL_TXSHIFT_SHIFT, delay);
2698 
2699  /* Clear the IO DFT Enable Key */
2700  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
2701 }
2702 
2719 static inline void
2721 {
2722  /* Check the arguments. */
2724 
2725  /* Clear and Set the IO DFT Enable Key */
2726  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
2727 
2728  /* Set the delay value */
2729  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_PINSAMPLEMASK_MASK, CSL_APP_LIN_IODFTCTRL_PINSAMPLEMASK_SHIFT, mask);
2730 
2731  /* Clear the IO DFT Enable Key */
2732  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_IODFTCTRL), CSL_APP_LIN_IODFTCTRL_IODFTENA_MASK, CSL_APP_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
2733 }
2734 
2750 static inline void
2752 {
2753  /* Check the arguments. */
2755 
2756  /* Clear and Set the IO DFT Enable Key */
2757  HW_WR_FIELD32_RAW((base + CSL_APP_LIN_SCIGCR1), CSL_APP_LIN_SCIGCR1_CONT_MASK, CSL_APP_LIN_SCIGCR1_CONT_SHIFT, mode);
2758 }
2759 
2773 static inline Bool
2774 LIN_getPinStatus(uint32_t base, LIN_PinType pin)
2775 {
2776  /* Check the arguments. */
2778 
2779  return((HW_RD_REG32_RAW(base + CSL_APP_LIN_SCIPIO2) & (uint32_t)pin) == (uint32_t)pin);
2780 }
2781 
2782 #ifdef __cplusplus
2783 }
2784 #endif
2785 
2786 #endif /* #ifndef LIN_V0_H_ */
2787 
LIN_MSG_FILTER_IDBYTE
@ LIN_MSG_FILTER_IDBYTE
Definition: lin/v0/lin.h:285
LIN_sendData
void LIN_sendData(uint32_t base, uint16_t *data)
This function sends the data.
LIN_MessageFilter
LIN_MessageFilter
The following are defines for the type parameter of the LIN_setMessageFiltering() function.
Definition: lin/v0/lin.h:284
LIN_LOOPBACK_DIGITAL
@ LIN_LOOPBACK_DIGITAL
Digital Loopback Mode.
Definition: lin/v0/lin.h:244
LIN_disableParity
static void LIN_disableParity(uint32_t base)
Disable Parity mode.
Definition: lin/v0/lin.h:502
LIN_enableInterrupt
static void LIN_enableInterrupt(uint32_t base, uint32_t intFlags)
Enable interrupts.
Definition: lin/v0/lin.h:947
LIN_disableModule
static void LIN_disableModule(uint32_t base)
Disable the LIN module.
Definition: lin/v0/lin.h:2159
LIN_isSCISpaceAvailable
static Bool LIN_isSCISpaceAvailable(uint32_t base)
Check if Space is available in SCI Transmit Buffer.
Definition: lin/v0/lin.h:1629
LIN_DebugMode
LIN_DebugMode
The following are defines for the mode parameter of the LIN_setDebugSuspendMode() function.
Definition: lin/v0/lin.h:300
LIN_COMM_LIN_USELENGTHVAL
@ LIN_COMM_LIN_USELENGTHVAL
Definition: lin/v0/lin.h:261
LIN_enterSCILowPower
static void LIN_enterSCILowPower(uint32_t base)
Enter SCI Local Low-Power Mode.
Definition: lin/v0/lin.h:1515
LIN_disableModuleErrors
static void LIN_disableModuleErrors(uint32_t base, uint32_t errors)
Disable Module Errors for Testing.
Definition: lin/v0/lin.h:1176
LIN_triggerChecksumCompare
static void LIN_triggerChecksumCompare(uint32_t base)
Trigger Checksum Compare.
Definition: lin/v0/lin.h:672
LIN_disableExtLoopback
static void LIN_disableExtLoopback(uint32_t base)
Disable External Loopback mode for self test.
Definition: lin/v0/lin.h:2433
LIN_setMessageFiltering
static void LIN_setMessageFiltering(uint32_t base, LIN_MessageFilter type)
Set Message filtering Type.
Definition: lin/v0/lin.h:466
LIN_disableAutomaticBaudrate
static void LIN_disableAutomaticBaudrate(uint32_t base)
Disable Automatic Baudrate Adjustment.
Definition: lin/v0/lin.h:1223
LIN_isBaseValid
static Bool LIN_isBaseValid(uint32_t base)
Checks a LIN base address.
Definition: lin/v0/lin.h:400
LIN_enableIntLoopback
static void LIN_enableIntLoopback(uint32_t base)
Enable Internal Loopback mode for self test.
Definition: lin/v0/lin.h:2455
LIN_ChecksumType
LIN_ChecksumType
The following are defines for the type parameter of the LIN_setChecksumType() function.
Definition: lin/v0/lin.h:292
LIN_performSoftwareReset
static void LIN_performSoftwareReset(uint32_t base)
Perform software reset.
Definition: lin/v0/lin.h:2290
LIN_SCI_PAR_ODD
@ LIN_SCI_PAR_ODD
Definition: lin/v0/lin.h:319
LIN_LOOPBACK_ANALOG
@ LIN_LOOPBACK_ANALOG
Analog Loopback Mode.
Definition: lin/v0/lin.h:245
LIN_getTxMask
static uint16_t LIN_getTxMask(uint32_t base)
Gets the transmit ID mask.
Definition: lin/v0/lin.h:800
LIN_IO_DFT_KEY
#define LIN_IO_DFT_KEY
LIN IO DFT Key which when written in IODFTENA enables the User and Previledge mode Writes.
Definition: lin/v0/lin.h:74
LIN_MSG_FILTER_IDRESPONDER
@ LIN_MSG_FILTER_IDRESPONDER
Definition: lin/v0/lin.h:286
LIN_enableDataReceiver
static void LIN_enableDataReceiver(uint32_t base)
Enable Receive Data Transfer.
Definition: lin/v0/lin.h:2248
SystemP.h
LIN_setTxMask
static void LIN_setTxMask(uint32_t base, uint16_t mask)
Sets the transmit ID mask.
Definition: lin/v0/lin.h:761
LIN_sendChecksum
static void LIN_sendChecksum(uint32_t base)
Send Checksum Byte.
Definition: lin/v0/lin.h:653
LIN_PinSampleMask
LIN_PinSampleMask
The following are defines for the mask parameter of the LIN_setPinSampleMask() function.
Definition: lin/v0/lin.h:308
LIN_setSCIStopBits
static void LIN_setSCIStopBits(uint32_t base, LIN_SCIStopBits number)
Set the number of stop bits for SCI.
Definition: lin/v0/lin.h:1445
LIN_SCIParityType
LIN_SCIParityType
The following are defines for the parity parameter of the LIN_enableSCIParity() function.
Definition: lin/v0/lin.h:318
LIN_enableModuleErrors
static void LIN_enableModuleErrors(uint32_t base, uint32_t errors)
Enable Module Errors for Testing.
Definition: lin/v0/lin.h:1145
LIN_COMM_SCI_IDLELINE
@ LIN_COMM_SCI_IDLELINE
Definition: lin/v0/lin.h:269
LIN_setIDResponderTask
static void LIN_setIDResponderTask(uint32_t base, uint16_t identifier)
Set ID-ResponderTask.
Definition: lin/v0/lin.h:572
LIN_isRxMatch
static Bool LIN_isRxMatch(uint32_t base)
Checks for Rx ID Match Received.
Definition: lin/v0/lin.h:904
LIN_isSCIBreakDetected
static Bool LIN_isSCIBreakDetected(uint32_t base)
Check if SCI Detected a Break Condition.
Definition: lin/v0/lin.h:2111
LIN_setTransmitDelay
static void LIN_setTransmitDelay(uint32_t base, uint16_t delay)
Set Transmit Pin Delay.
Definition: lin/v0/lin.h:2687
LIN_setRxMask
static void LIN_setRxMask(uint32_t base, uint16_t mask)
Sets the receive ID mask.
Definition: lin/v0/lin.h:781
LIN_setInterruptLevel0
static void LIN_setInterruptLevel0(uint32_t base, uint32_t intFlags)
Set interrupt level to 0.
Definition: lin/v0/lin.h:1075
LIN_readSCICharBlocking
static uint16_t LIN_readSCICharBlocking(uint32_t base, Bool emulation)
Reads a SCI character with Blocking.
Definition: lin/v0/lin.h:1693
LIN_SCI_PAR_EVEN
@ LIN_SCI_PAR_EVEN
Definition: lin/v0/lin.h:320
LIN_setSCIInterruptLevel1
static void LIN_setSCIInterruptLevel1(uint32_t base, uint32_t intFlags)
Set interrupt level to 1.
Definition: lin/v0/lin.h:2017
LIN_SCIStopBits
LIN_SCIStopBits
The following are defines for the number parameter of the LIN_setSCIStopBits() function.
Definition: lin/v0/lin.h:326
LIN_DEBUG_FROZEN
@ LIN_DEBUG_FROZEN
Freeze module during debug.
Definition: lin/v0/lin.h:301
LIN_disableSCIMode
static void LIN_disableSCIMode(uint32_t base)
Disable SCI Mode.
Definition: lin/v0/lin.h:1344
LIN_disableMultibufferMode
static void LIN_disableMultibufferMode(uint32_t base)
Disable Multi-buffer Mode.
Definition: lin/v0/lin.h:2664
LIN_enterSleep
static void LIN_enterSleep(uint32_t base)
Entering LIN sleep signal.
Definition: lin/v0/lin.h:634
LIN_LINMode
LIN_LINMode
The following are defines for the mode parameter of the LIN_setLINMode() function.
Definition: lin/v0/lin.h:276
LIN_ID5
#define LIN_ID5
Definition: lin/v0/lin.h:93
SemaphoreP.h
LIN_setSCICharLength
static void LIN_setSCICharLength(uint32_t base, uint16_t numBits)
Set SCI character length.
Definition: lin/v0/lin.h:1558
LIN_disableIntLoopback
static void LIN_disableIntLoopback(uint32_t base)
Disable Internal Loopback mode for self test.
Definition: lin/v0/lin.h:2474
LIN_CommMode
LIN_CommMode
The following are defines for the mode parameter of the LIN_setCommMode() function.
Definition: lin/v0/lin.h:260
LIN_getRxIdentifier
static uint16_t LIN_getRxIdentifier(uint32_t base)
Get last received identifier.
Definition: lin/v0/lin.h:862
LIN_setBaudRatePrescaler
static void LIN_setBaudRatePrescaler(uint32_t base, uint32_t prescaler, uint32_t divider)
Set Baud Rate Prescaler.
Definition: lin/v0/lin.h:2188
LIN_setSCIInterruptLevel0
static void LIN_setSCIInterruptLevel0(uint32_t base, uint32_t intFlags)
Set interrupt level to 0.
Definition: lin/v0/lin.h:1979
LIN_enableExtLoopback
static void LIN_enableExtLoopback(uint32_t base, LIN_LoopbackType loopbackType, LIN_AnalogLoopback path)
Enable External Loopback mode for self test.
Definition: lin/v0/lin.h:2405
LIN_ANALOG_LOOP_RX
@ LIN_ANALOG_LOOP_RX
Analog loopback through receive pin.
Definition: lin/v0/lin.h:254
LIN_PINTYPE_TX
@ LIN_PINTYPE_TX
Definition: lin/v0/lin.h:335
LIN_isRxReady
static Bool LIN_isRxReady(uint32_t base)
Gets the receive ID mask.
Definition: lin/v0/lin.h:842
LIN_enableMultibufferMode
static void LIN_enableMultibufferMode(uint32_t base)
Enable Multi-buffer Mode.
Definition: lin/v0/lin.h:2646
LIN_disableSCISleepMode
static void LIN_disableSCISleepMode(uint32_t base)
Disable SCI Sleep mode.
Definition: lin/v0/lin.h:1491
LIN_ANALOG_LOOP_NONE
@ LIN_ANALOG_LOOP_NONE
Default path for digital loopback mode.
Definition: lin/v0/lin.h:252
LIN_MODE_LIN_COMMANDER
@ LIN_MODE_LIN_COMMANDER
Definition: lin/v0/lin.h:278
LIN_enableSCIParity
static void LIN_enableSCIParity(uint32_t base, LIN_SCIParityType parity)
Enable SCI Parity mode.
Definition: lin/v0/lin.h:1398
LIN_disableInterrupt
static void LIN_disableInterrupt(uint32_t base, uint32_t intFlags)
Disable interrupts.
Definition: lin/v0/lin.h:990
LIN_clearSCIInterruptStatus
static void LIN_clearSCIInterruptStatus(uint32_t base, uint32_t intFlags)
Clear SCI interrupt status.
Definition: lin/v0/lin.h:1940
LIN_disableDataTransmitter
static void LIN_disableDataTransmitter(uint32_t base)
Disable Transmit Data Transfer.
Definition: lin/v0/lin.h:2229
LIN_isTxMatch
static Bool LIN_isTxMatch(uint32_t base)
Checks for Tx ID Match Received.
Definition: lin/v0/lin.h:883
LIN_readSCICharNonBlocking
static uint16_t LIN_readSCICharNonBlocking(uint32_t base, Bool emulation)
Reads a SCI character without Blocking.
Definition: lin/v0/lin.h:1661
LIN_MODE_LIN_RESPONDER
@ LIN_MODE_LIN_RESPONDER
Definition: lin/v0/lin.h:277
LIN_stopExtendedFrame
static void LIN_stopExtendedFrame(uint32_t base)
Stops LIN Extended Frame Communication.
Definition: lin/v0/lin.h:1244
LIN_disableSCIParity
static void LIN_disableSCIParity(uint32_t base)
Disable SCI Parity mode.
Definition: lin/v0/lin.h:1421
LIN_getRxMask
static uint16_t LIN_getRxMask(uint32_t base)
Gets the receive ID mask.
Definition: lin/v0/lin.h:821
LIN_getData
void LIN_getData(uint32_t base, uint16_t *const data)
This function reads the received data.
LIN_isSCIReceiverIdle
static Bool LIN_isSCIReceiverIdle(uint32_t base)
Check if SCI Receiver is Idle.
Definition: lin/v0/lin.h:2040
LIN_setSCICommMode
static void LIN_setSCICommMode(uint32_t base, LIN_SCICommMode mode)
Set SCI communication mode.
Definition: lin/v0/lin.h:1374
HwiP.h
LIN_getSCITxFrameType
static Bool LIN_getSCITxFrameType(uint32_t base)
Gets the SCI Transmit Frame Type.
Definition: lin/v0/lin.h:2064
LIN_isTxReady
static Bool LIN_isTxReady(uint32_t base)
Check Tx buffer ready flag.
Definition: lin/v0/lin.h:693
LIN_ID2
#define LIN_ID2
Definition: lin/v0/lin.h:90
LIN_generateParityID
static uint16_t LIN_generateParityID(uint16_t identifier)
Generate Parity Identifier.
Definition: lin/v0/lin.h:527
LIN_setSCIFrameLength
static void LIN_setSCIFrameLength(uint32_t base, uint16_t length)
Set SCI Frame Length.
Definition: lin/v0/lin.h:1583
LIN_setMaximumBaudRate
static void LIN_setMaximumBaudRate(uint32_t base, uint32_t clock)
Set Maximum Baud Rate Prescaler.
Definition: lin/v0/lin.h:444
LIN_LoopbackType
LIN_LoopbackType
The following are defines for the type parameter of the LIN_enableExtLoopback() function.
Definition: lin/v0/lin.h:243
LIN_enableParity
static void LIN_enableParity(uint32_t base)
Enable Parity mode.
Definition: lin/v0/lin.h:484
LIN_PINMASK_NONE
@ LIN_PINMASK_NONE
Definition: lin/v0/lin.h:309
LIN_ID4
#define LIN_ID4
Definition: lin/v0/lin.h:92
LIN_isTxBufferEmpty
static Bool LIN_isTxBufferEmpty(uint32_t base)
Check if the Transmit Buffer is Empty.
Definition: lin/v0/lin.h:2375
LIN_enableSCIMode
static void LIN_enableSCIMode(uint32_t base)
Enable SCI Mode.
Definition: lin/v0/lin.h:1320
LIN_enterSoftwareReset
static void LIN_enterSoftwareReset(uint32_t base)
Put LIN into its reset state.
Definition: lin/v0/lin.h:2314
LIN_setPinSampleMask
static void LIN_setPinSampleMask(uint32_t base, LIN_PinSampleMask mask)
Set Pin Sample Mask.
Definition: lin/v0/lin.h:2720
LIN_getInterruptLine1Offset
static uint16_t LIN_getInterruptLine1Offset(uint32_t base)
Gets the Interrupt Vector Offset for Line 1.
Definition: lin/v0/lin.h:2628
LIN_disableDataReceiver
static void LIN_disableDataReceiver(uint32_t base)
Disable Receive Data Transfer.
Definition: lin/v0/lin.h:2267
LIN_enableSCIInterrupt
static void LIN_enableSCIInterrupt(uint32_t base, uint32_t intFlags)
Enable SCI interrupts.
Definition: lin/v0/lin.h:1863
LIN_CHECKSUM_ENHANCED
@ LIN_CHECKSUM_ENHANCED
Definition: lin/v0/lin.h:294
LIN_COMM_SCI_ADDRBIT
@ LIN_COMM_SCI_ADDRBIT
Definition: lin/v0/lin.h:270
LIN_writeSCICharBlocking
static void LIN_writeSCICharBlocking(uint32_t base, uint16_t data)
Sends a SCI character with blocking.
Definition: lin/v0/lin.h:1749
LIN_WAKEUP_KEY
#define LIN_WAKEUP_KEY
LIN/SCI Wakeup signal is sent by sending an byte with value 0xF0.
Definition: lin/v0/lin.h:78
LIN_ID1
#define LIN_ID1
Definition: lin/v0/lin.h:89
LIN_setLINMode
static void LIN_setLINMode(uint32_t base, LIN_LINMode mode)
Sets the LIN mode.
Definition: lin/v0/lin.h:418
LIN_enableDataTransmitter
static void LIN_enableDataTransmitter(uint32_t base)
Enable Transmit Data Transfer.
Definition: lin/v0/lin.h:2210
LIN_setSyncFields
static void LIN_setSyncFields(uint32_t base, uint32_t syncBreak, uint32_t delimiter)
Set Sync Break Extend and Delimiter.
Definition: lin/v0/lin.h:1299
LIN_setCommMode
static void LIN_setCommMode(uint32_t base, LIN_CommMode mode)
Set LIN communication mode.
Definition: lin/v0/lin.h:741
LIN_setIDByte
static void LIN_setIDByte(uint32_t base, uint16_t identifier)
Set ID Byte.
Definition: lin/v0/lin.h:552
LIN_isBusBusy
static Bool LIN_isBusBusy(uint32_t base)
Check if Bus is Busy.
Definition: lin/v0/lin.h:2355
LIN_exitSCILowPower
static void LIN_exitSCILowPower(uint32_t base)
Exit SCI Local Low-Power Mode.
Definition: lin/v0/lin.h:1535
LIN_getInterruptStatus
static uint32_t LIN_getInterruptStatus(uint32_t base)
Get Interrupt Flags Status.
Definition: lin/v0/lin.h:2517
LIN_getInterruptLine0Offset
static uint16_t LIN_getInterruptLine0Offset(uint32_t base)
Gets the Interrupt Vector Offset for Line 0.
Definition: lin/v0/lin.h:2583
LIN_SCI_STOP_ONE
@ LIN_SCI_STOP_ONE
Definition: lin/v0/lin.h:327
LIN_COMM_LIN_ID4ID5LENCTL
@ LIN_COMM_LIN_ID4ID5LENCTL
Definition: lin/v0/lin.h:262
LIN_writeSCICharNonBlocking
static void LIN_writeSCICharNonBlocking(uint32_t base, uint16_t data)
Sends a SCI character without Blocking.
Definition: lin/v0/lin.h:1725
LIN_SCICommMode
LIN_SCICommMode
The following are defines for the mode parameter of the LIN_setSCICommMode() function.
Definition: lin/v0/lin.h:268
LIN_exitSoftwareReset
static void LIN_exitSoftwareReset(uint32_t base)
Put LIN into its ready state.
Definition: lin/v0/lin.h:2335
LIN_getPinStatus
static Bool LIN_getPinStatus(uint32_t base, LIN_PinType pin)
Get the Status of LIN TX/RX Pin status.
Definition: lin/v0/lin.h:2774
LIN_CHECKSUM_CLASSIC
@ LIN_CHECKSUM_CLASSIC
Definition: lin/v0/lin.h:293
LIN_setChecksumType
static void LIN_setChecksumType(uint32_t base, LIN_ChecksumType type)
Set Checksum Type.
Definition: lin/v0/lin.h:1266
LIN_ID3
#define LIN_ID3
Definition: lin/v0/lin.h:91
LIN_SCI_STOP_TWO
@ LIN_SCI_STOP_TWO
Definition: lin/v0/lin.h:328
LIN_ID0
#define LIN_ID0
Definition: lin/v0/lin.h:88
LIN_AnalogLoopback
LIN_AnalogLoopback
The following are defines for the path parameter of the LIN_enableExtLoopback() function.
Definition: lin/v0/lin.h:251
LIN_enableAutomaticBaudrate
static void LIN_enableAutomaticBaudrate(uint32_t base)
Enable Automatic Baudrate Adjustment.
Definition: lin/v0/lin.h:1204
LIN_PINTYPE_RX
@ LIN_PINTYPE_RX
Definition: lin/v0/lin.h:336
LIN_getSCIRxFrameType
static Bool LIN_getSCIRxFrameType(uint32_t base)
Gets the SCI Receiver Frame Type.
Definition: lin/v0/lin.h:2088
DebugP_assert
#define DebugP_assert(expression)
Function to call for assert check.
Definition: DebugP.h:159
LIN_disableSCIModuleErrors
static void LIN_disableSCIModuleErrors(uint32_t base, uint32_t errors)
Disable SCI Module Errors for Testing.
Definition: lin/v0/lin.h:1818
LIN_getInterruptLevel
static uint32_t LIN_getInterruptLevel(uint32_t base)
Get the Interrupt Level.
Definition: lin/v0/lin.h:2538
LIN_isSCIDataAvailable
static Bool LIN_isSCIDataAvailable(uint32_t base)
Check if new SCI data is ready to be read.
Definition: lin/v0/lin.h:1607
LIN_clearInterruptStatus
static void LIN_clearInterruptStatus(uint32_t base, uint32_t intFlags)
Clear interrupt status.
Definition: lin/v0/lin.h:1032
LIN_setDebugSuspendMode
static void LIN_setDebugSuspendMode(uint32_t base, LIN_DebugMode mode)
Set the Debug Suspended Mode.
Definition: lin/v0/lin.h:2751
LIN_sendWakeupSignal
static void LIN_sendWakeupSignal(uint32_t base)
Send LIN wakeup signal.
Definition: lin/v0/lin.h:590
LIN_PINMASK_CENTER_SCLK
@ LIN_PINMASK_CENTER_SCLK
Definition: lin/v0/lin.h:311
LIN_PINMASK_CENTER_2SCLK
@ LIN_PINMASK_CENTER_2SCLK
Definition: lin/v0/lin.h:312
LIN_ANALOG_LOOP_TX
@ LIN_ANALOG_LOOP_TX
Analog loopback through transmit pin.
Definition: lin/v0/lin.h:253
LIN_setInterruptLevel1
static void LIN_setInterruptLevel1(uint32_t base, uint32_t intFlags)
Set interrupt level to 1.
Definition: lin/v0/lin.h:1118
LIN_PINMASK_CENTER
@ LIN_PINMASK_CENTER
Definition: lin/v0/lin.h:310
LIN_enableSCISleepMode
static void LIN_enableSCISleepMode(uint32_t base)
Enable SCI Sleep mode.
Definition: lin/v0/lin.h:1470
LIN_initModule
void LIN_initModule(uint32_t base)
This function initializes the LIN module.
LIN_disableSCIInterrupt
static void LIN_disableSCIInterrupt(uint32_t base, uint32_t intFlags)
Disable SCI interrupts.
Definition: lin/v0/lin.h:1902
LIN_setFrameLength
static void LIN_setFrameLength(uint32_t base, uint16_t length)
Set LIN Frame Length.
Definition: lin/v0/lin.h:716
LIN_DEBUG_COMPLETE
@ LIN_DEBUG_COMPLETE
Complete Tx/Rx before Freezing.
Definition: lin/v0/lin.h:302
LIN_enableModule
static void LIN_enableModule(uint32_t base)
Enables the LIN module.
Definition: lin/v0/lin.h:2134
LIN_enableSCIModuleErrors
static void LIN_enableSCIModuleErrors(uint32_t base, uint32_t errors)
Enable SCI Module Errors for Testing.
Definition: lin/v0/lin.h:1785
LIN_PinType
LIN_PinType
The following are defines for the pin parameter of the LIN_getPinStatus() function.
Definition: lin/v0/lin.h:334