AM263x MCU+ SDK  09.01.00
lin/v0/lin.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 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_LIN_SCIFLR_BRKDT_MASK)
133 #define LIN_FLAG_WAKEUP (CSL_LIN_SCIFLR_WAKEUP_MASK)
134 #define LIN_FLAG_IDLE (CSL_LIN_SCIFLR_IDLE_MASK)
135 #define LIN_FLAG_BUSY (CSL_LIN_SCIFLR_BUSY_MASK)
136 #define LIN_FLAG_TO (CSL_LIN_SCIFLR_TIMEOUT_MASK)
137 #define LIN_FLAG_TOAWUS (CSL_LIN_SCIFLR_TOAWUS_MASK)
138 #define LIN_FLAG_TOA3WUS (CSL_LIN_SCIFLR_TOA3WUS_MASK)
139 #define LIN_FLAG_TXRDY (CSL_LIN_SCIFLR_TXRDY_MASK)
140 #define LIN_FLAG_RXRDY (CSL_LIN_SCIFLR_RXRDY_MASK)
141 #define LIN_FLAG_TXWAKE (CSL_LIN_SCIFLR_TXWAKE_MASK)
142 #define LIN_FLAG_TXEMPTY (CSL_LIN_SCIFLR_TXEMPTY_MASK)
143 #define LIN_FLAG_RXWAKE (CSL_LIN_SCIFLR_RXWAKE_MASK)
144 #define LIN_FLAG_TXID (CSL_LIN_SCIFLR_IDTXFLAG_MASK)
145 #define LIN_FLAG_RXID (CSL_LIN_SCIFLR_IDRXFLAG_MASK)
146 #define LIN_FLAG_PE (CSL_LIN_SCIFLR_PE_MASK)
147 #define LIN_FLAG_OE (CSL_LIN_SCIFLR_OE_MASK)
148 #define LIN_FLAG_FE (CSL_LIN_SCIFLR_FE_MASK)
149 #define LIN_FLAG_NRE (CSL_LIN_SCIFLR_NRE_MASK)
150 #define LIN_FLAG_ISFE (CSL_LIN_SCIFLR_ISFE_MASK)
151 #define LIN_FLAG_CE (CSL_LIN_SCIFLR_CE_MASK)
152 #define LIN_FLAG_PBE (CSL_LIN_SCIFLR_PBE_MASK)
153 #define LIN_FLAG_BE (CSL_LIN_SCIFLR_BE_MASK)
154 
165 #define LIN_VECT_NONE (0x00)
166 #define LIN_VECT_WAKEUP (0x01)
167 #define LIN_VECT_ISFE (0x02)
168 #define LIN_VECT_PE (0x03)
169 #define LIN_VECT_ID (0x04)
170 #define LIN_VECT_PBE (0x05)
171 #define LIN_VECT_FE (0x06)
172 #define LIN_VECT_BREAK (0x07)
173 #define LIN_VECT_CE (0x08)
174 #define LIN_VECT_OE (0x09)
175 #define LIN_VECT_BE (0x0A)
176 #define LIN_VECT_RX (0x0B)
177 #define LIN_VECT_TX (0x0C)
178 #define LIN_VECT_NRE (0x0D)
179 #define LIN_VECT_TOAWUS (0x0E)
180 #define LIN_VECT_TOA3WUS (0x0F)
181 #define LIN_VECT_TO (0x10)
182 
193 #define LIN_ALL_ERRORS (0xF0000000U)
194 #define LIN_BIT_ERROR (0x80000000U)
195 #define LIN_BUS_ERROR (0x40000000U)
196 #define LIN_CHECKSUM_ERROR (0x20000000U)
197 #define LIN_ISF_ERROR (0x10000000U)
198 
209 #define LIN_SCI_ALL_ERRORS (0x7000000U)
210 #define LIN_SCI_FRAME_ERROR (0x4000000U)
211 #define LIN_SCI_PARITY_ERROR (0x2000000U)
212 #define LIN_SCI_BREAK_ERROR (0x1000000U)
213 
225 #define LIN_SCI_INT_BREAK (0x1U)
226 #define LIN_SCI_INT_WAKEUP (0x2U)
227 #define LIN_SCI_INT_TX (0x100U)
228 #define LIN_SCI_INT_RX (0x200U)
229 #define LIN_SCI_INT_TX_DMA (0x10000U)
230 #define LIN_SCI_INT_RX_DMA (0x20000U)
231 #define LIN_SCI_INT_PARITY (0x1000000U)
232 #define LIN_SCI_INT_OVERRUN (0x2000000U)
233 #define LIN_SCI_INT_FRAME (0x4000000U)
234 #define LIN_SCI_INT_ALL (0x7000303U)
235 
237 /* ========================================================================== */
238 /* Structures and Enums */
239 /* ========================================================================== */
240 
243 typedef enum
244 {
246  LIN_LOOPBACK_ANALOG = 1U
248 
251 typedef enum
252 {
255  LIN_ANALOG_LOOP_RX = 1U
257 
260 typedef enum
261 {
263  LIN_COMM_LIN_ID4ID5LENCTL = 0x0001U
265 
268 typedef enum
269 {
271  LIN_COMM_SCI_ADDRBIT = 0x0001U
273 
276 typedef enum
277 {
281 
286 typedef enum
287 {
289  LIN_INTERRUPT_LINE1 = 0x1U
291 
294 typedef enum
295 {
299 
302 typedef enum
303 {
305  LIN_CHECKSUM_ENHANCED = 0x1U
307 
310 typedef enum
311 {
313  LIN_DEBUG_COMPLETE = 0x1U
315 
318 typedef enum
319 {
325 
328 typedef enum
329 {
331  LIN_SCI_PAR_EVEN = 0x1U
333 
336 typedef enum
337 {
339  LIN_SCI_STOP_TWO = 0x1U
341 
344 typedef enum
345 {
347  LIN_PINTYPE_RX = 0x2U
349 
350 /* ========================================================================== */
351 /* Internal/Private Structure Declarations */
352 /* ========================================================================== */
353 
354 /* None */
355 
356 /* ========================================================================== */
357 /* Global Variables Declarations */
358 /* ========================================================================== */
359 
360 /* None */
361 
362 /* ========================================================================== */
363 /* Function Declarations */
364 /* ========================================================================== */
365 
373 void LIN_initModule(uint32_t base);
374 
383 void LIN_getData(uint32_t base, uint16_t * const data);
384 
393 void LIN_sendData(uint32_t base, uint16_t *data);
394 
395 /* ========================================================================== */
396 /* Static Function Definitions */
397 /* ========================================================================== */
398 
410 static inline Bool
411 LIN_isBaseValid(uint32_t base)
412 {
413  #if defined (SOC_AM263X)
414  return(
415  (base == CSL_LIN0_U_BASE) ||
416  (base == CSL_LIN1_U_BASE) ||
417  (base == CSL_LIN2_U_BASE) ||
418  (base == CSL_LIN3_U_BASE) ||
419  (base == CSL_LIN4_U_BASE)
420  );
421  #else
422  return TRUE;
423  #endif /* defined (SOC_AM263X) */
424 }
425 
438 static inline void
439 LIN_setLINMode(uint32_t base, LIN_LINMode mode)
440 {
441  /* Paramter Validation */
443 
444  /* Program LIN Mode */
445  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_CLK_MASTER_MASK, CSL_LIN_SCIGCR1_CLK_MASTER_SHIFT, mode);
446 }
447 
464 static inline void
465 LIN_setMaximumBaudRate(uint32_t base, uint32_t clock)
466 {
467  /* Parameter Validation */
469 
470  /* Calculate maximum baud rate prescaler */
471  HW_WR_FIELD32_RAW((base + CSL_LIN_MBRSR), CSL_LIN_MBRSR_MBR_MASK, CSL_LIN_MBRSR_MBR_SHIFT, (clock / 20000U));
472 }
473 
486 static inline void
488 {
489  /* Parameter Validation */
491 
492  /* Sets the message filtering type */
493  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_HGENCTRL_MASK, CSL_LIN_SCIGCR1_HGENCTRL_SHIFT, type);
494 }
495 
504 static inline void
505 LIN_enableParity(uint32_t base)
506 {
507  /* Parameter Validation */
509 
510  /* Enable the parity mode */
511  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_PARITYENA_MASK, CSL_LIN_SCIGCR1_PARITYENA_SHIFT, CSL_TRUE);
512 }
513 
522 static inline void
523 LIN_disableParity(uint32_t base)
524 {
525  /* Parameter Validation */
527 
528  /* Enable the parity mode */
529  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_PARITYENA_MASK, CSL_LIN_SCIGCR1_PARITYENA_SHIFT, CSL_FALSE);
530 }
531 
547 static inline uint16_t
548 LIN_generateParityID(uint16_t identifier)
549 {
550  uint16_t p0, p1, parityIdentifier;
551 
552  /* Calculate parity bits and generate updated identifier */
553  p0 = ((identifier & LIN_ID0) ^ ((identifier & LIN_ID1) >> 1U) ^
554  ((identifier & LIN_ID2) >> 2U) ^ ((identifier & LIN_ID4) >> 4U));
555  p1 = !(((identifier & LIN_ID1) >> 1U) ^ ((identifier & LIN_ID3) >> 3U) ^
556  ((identifier & LIN_ID4) >> 4U) ^ ((identifier & LIN_ID5) >> 5U));
557  parityIdentifier = identifier | ((p0 << 6U) | (p1 << 7U));
558 
559  return(parityIdentifier);
560 }
561 
573 static inline void
574 LIN_setIDByte(uint32_t base, uint16_t identifier)
575 {
576  /* Parameter Validation */
578 
579  HW_WR_FIELD32_RAW((base + CSL_LIN_LINID), CSL_LIN_LINID_IDBYTE_MASK, CSL_LIN_LINID_IDBYTE_SHIFT, identifier);
580 }
581 
593 static inline void
594 LIN_setIDResponderTask(uint32_t base, uint16_t identifier)
595 {
596  /* Parameter Validation */
598 
599  HW_WR_FIELD32_RAW((base + CSL_LIN_LINID), CSL_LIN_LINID_IDSLAVETASKBYTE_MASK, CSL_LIN_LINID_IDSLAVETASKBYTE_SHIFT, identifier);
600 }
601 
611 static inline void
612 LIN_sendWakeupSignal(uint32_t base)
613 {
614  /* Parameter Validation */
616 
617  /* Set key in Byte 0 (MSB) of transmit buffer 0 register */
618  HW_WR_FIELD32_RAW((base + CSL_LIN_LINTD0), CSL_LIN_LINTD0_TD0_MASK, CSL_LIN_LINTD0_TD0_SHIFT, (uint16_t)LIN_WAKEUP_KEY);
619 
620  /* Set the powerdown mask */
621  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_POWERDOWN_MASK,
622  CSL_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_TRUE);
623 
624  /* Transmit TDO for wakeup */
625  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_GENWU_MASK, CSL_LIN_SCIGCR2_GENWU_SHIFT, CSL_TRUE);
626 
627  /* Set the powerdown mask */
628  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_POWERDOWN_MASK,
629  CSL_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_FALSE);
630 }
631 
646 static inline void
647 LIN_enterSleep(uint32_t base)
648 {
649  /* Parameter Validation */
651 
652  /* Entering Powerdown */
653  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_POWERDOWN_MASK, CSL_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_TRUE);
654 }
655 
665 static inline void
666 LIN_sendChecksum(uint32_t base)
667 {
668  /* Parameter Validation */
670 
671  /* Setting the Check Sum */
672  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_SC_MASK, CSL_LIN_SCIGCR2_SC_SHIFT, CSL_TRUE);
673 }
674 
684 static inline void
686 {
687  /* Parameter Validation */
689 
690  /* Comparing the Check Sum */
691  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_CC_MASK, CSL_LIN_SCIGCR2_CC_SHIFT, CSL_TRUE);
692 }
693 
705 static inline Bool
706 LIN_isTxReady(uint32_t base)
707 {
708  /* Parameter Validation */
710 
711  /* Check TXRDY BIT */
712  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_TXRDY_MASK) ==
713  CSL_LIN_SCIFLR_TXRDY_MASK);
714 }
715 
728 static inline void
729 LIN_setFrameLength(uint32_t base, uint16_t length)
730 {
731  /* Parameter Validation */
733  DebugP_assert((length > 0U) && (length < 9U));
734 
735  /* Clear and set frame length value */
736  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIFORMAT), CSL_LIN_SCIFORMAT_LENGTH_MASK, CSL_LIN_SCIFORMAT_LENGTH_SHIFT, ((uint32_t)length - (uint32_t)1U));
737 }
738 
753 static inline void
754 LIN_setCommMode(uint32_t base, LIN_CommMode mode)
755 {
756  /* Parameter Validation */
758 
759  /* Write communication mode selection to the appropriate bit. */
760  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_COMMMODE_MASK, CSL_LIN_SCIGCR1_COMMMODE_SHIFT, (uint16_t)mode);
761 }
762 
773 static inline void
774 LIN_setTxMask(uint32_t base, uint16_t mask)
775 {
776  /* Parameter Validation */
778 
779  /* Clear previous mask value and set new mask */
780  HW_WR_FIELD32_RAW((base + CSL_LIN_LINMASK), CSL_LIN_LINMASK_TXIDMASK_MASK, CSL_LIN_LINMASK_TXIDMASK_SHIFT, mask);
781 }
782 
793 static inline void
794 LIN_setRxMask(uint32_t base, uint16_t mask)
795 {
796  /* Parameter Validation */
798 
799  /* Clear previous mask value and set new mask */
800  HW_WR_FIELD32_RAW((base + CSL_LIN_LINMASK), CSL_LIN_LINMASK_RXIDMASK_MASK, CSL_LIN_LINMASK_RXIDMASK_SHIFT, (uint32_t)mask);
801 }
802 
812 static inline uint16_t
813 LIN_getTxMask(uint32_t base)
814 {
815  /* Parameter Validation */
817 
818  /* Get Tx Mask status */
819  return(HW_RD_FIELD32_RAW((base + CSL_LIN_LINMASK), CSL_LIN_LINMASK_TXIDMASK_MASK, CSL_LIN_LINMASK_TXIDMASK_SHIFT));
820 }
821 
833 static inline uint16_t
834 LIN_getRxMask(uint32_t base)
835 {
836  /* Parameter Validation */
838 
839  /* Get Tx Mask status */
840  return(HW_RD_FIELD32_RAW((base + CSL_LIN_LINMASK), CSL_LIN_LINMASK_RXIDMASK_MASK, CSL_LIN_LINMASK_RXIDMASK_SHIFT));
841 }
842 
854 static inline Bool
855 LIN_isRxReady(uint32_t base)
856 {
857  /* Parameter Validation */
859 
860  /* Ready Rx ready flag and return status */
861  return(HW_RD_FIELD32_RAW((base + CSL_LIN_SCIFLR), CSL_LIN_SCIFLR_RXRDY_MASK, CSL_LIN_SCIFLR_RXRDY_SHIFT));
862 }
863 
874 static inline uint16_t
875 LIN_getRxIdentifier(uint32_t base)
876 {
877  /* Parameter Validation */
879 
880  /* Ready Rx ready flag and return status */
881  return(HW_RD_FIELD32_RAW((base + CSL_LIN_LINID), CSL_LIN_LINID_RECEIVEDID_MASK, CSL_LIN_LINID_RECEIVEDID_SHIFT));
882 }
883 
895 static inline Bool
896 LIN_isTxMatch(uint32_t base)
897 {
898  /* Parameter Validation */
900 
901  /* Read Tx ID flag and return status */
902  return(HW_RD_FIELD32_RAW((base + CSL_LIN_SCIFLR), CSL_LIN_SCIFLR_IDTXFLAG_MASK, CSL_LIN_SCIFLR_IDTXFLAG_SHIFT));
903 }
904 
916 static inline Bool
917 LIN_isRxMatch(uint32_t base)
918 {
919  /* Parameter Validation */
921 
922  /* Read Tx ID flag and return status */
923  return(HW_RD_FIELD32_RAW((base + CSL_LIN_SCIFLR), CSL_LIN_SCIFLR_IDRXFLAG_MASK, CSL_LIN_SCIFLR_IDRXFLAG_SHIFT));
924 }
925 
959 static inline void
960 LIN_enableInterrupt(uint32_t base, uint32_t intFlags)
961 {
962  /* Parameter Validation */
964 
965  /* Set Interrupt Flags */
966  HW_WR_REG32_RAW((base + CSL_LIN_SCISETINT), HW_RD_REG32_RAW(base + CSL_LIN_SCISETINT)|intFlags);
967 }
968 
1002 static inline void
1003 LIN_disableInterrupt(uint32_t base, uint32_t intFlags)
1004 {
1005  /* Parameter Validation */
1007 
1008  /* Clear Interrupt Flags */
1009  HW_WR_REG32_RAW((base + CSL_LIN_SCICLEARINT), intFlags);
1010 }
1011 
1044 static inline void
1045 LIN_clearInterruptStatus(uint32_t base, uint32_t intFlags)
1046 {
1047  /* Parameter Validation */
1049 
1050  /* Clear Status Flags */
1051  HW_WR_REG32_RAW((base + CSL_LIN_SCIFLR), intFlags);
1052 }
1053 
1087 static inline void
1088 LIN_setInterruptLevel0(uint32_t base, uint32_t intFlags)
1089 {
1090  /* Check the arguments. */
1092 
1093  /* Clear Status Flags */
1094  HW_WR_REG32_RAW((base + CSL_LIN_SCICLEARINTLVL), intFlags);
1095 }
1096 
1130 static inline void
1131 LIN_setInterruptLevel1(uint32_t base, uint32_t intFlags)
1132 {
1133  /* Check the arguments. */
1135 
1136  /* Set interrupt levels to 1 */
1137  HW_WR_REG32_RAW((base + CSL_LIN_SCISETINTLVL), HW_RD_REG32_RAW(base + CSL_LIN_SCISETINTLVL)|intFlags);
1138 }
1139 
1157 static inline void
1158 LIN_enableModuleErrors(uint32_t base, uint32_t errors)
1159 {
1160  /* Check the arguments. */
1162 
1163  /* Clear the IO DFT Enable Key & Enable write access*/
1164  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, (uint32_t)LIN_IO_DFT_KEY);
1165 
1166  /* Enable specified error bits */
1167  HW_WR_REG32_RAW((base + CSL_LIN_IODFTCTRL), HW_RD_REG32_RAW(base + CSL_LIN_IODFTCTRL)|errors);
1168 
1169  /* Clear the IO DFT Enable Key */
1170  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, (uint32_t)CSL_FALSE);
1171 }
1172 
1188 static inline void
1189 LIN_disableModuleErrors(uint32_t base, uint32_t errors)
1190 {
1191  /* Check the arguments. */
1193 
1194  /* Clear the IO DFT Enable Key & Enable write access */
1195  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, (uint32_t)LIN_IO_DFT_KEY);
1196 
1197  /* Disable specified error bits */
1198  HW_WR_REG32_RAW((base + CSL_LIN_IODFTCTRL), HW_RD_REG32_RAW(base + CSL_LIN_IODFTCTRL)&~(errors));
1199 
1200  /* Clear the IO DFT Enable Key */
1201  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, (uint32_t)CSL_FALSE);
1202 }
1203 
1216 static inline void
1218 {
1219  /* Check the arguments. */
1221 
1222  /* Specified error bits */
1223  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_ADAPT_MASK, CSL_LIN_SCIGCR1_ADAPT_SHIFT, CSL_TRUE);
1224 }
1225 
1235 static inline void
1237 {
1238  /* Check the arguments. */
1240 
1241  /* Specified error bits */
1242  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_ADAPT_MASK, CSL_LIN_SCIGCR1_ADAPT_SHIFT, CSL_FALSE);
1243 }
1244 
1256 static inline void
1258 {
1259  /* Check the arguments. */
1261 
1262  /* Set stop bit. */
1263  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_STOPEXTFRAME_MASK, CSL_LIN_SCIGCR1_STOPEXTFRAME_SHIFT, CSL_TRUE);
1264 }
1265 
1278 static inline void
1280 {
1281  /* Check the arguments. */
1283 
1284  /* Set stop bit. */
1285  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_CTYPE_MASK, CSL_LIN_SCIGCR1_CTYPE_SHIFT, type);
1286 }
1287 
1311 static inline void
1312 LIN_setSyncFields(uint32_t base, uint16_t syncBreak, uint16_t delimiter)
1313 {
1314  /* Check the arguments. */
1316  DebugP_assert(syncBreak < 8U);
1317  DebugP_assert((delimiter >= 1U) && (delimiter < 5U));
1318 
1319  /* Clear sync values and set new values */
1320  HW_WR_FIELD32_RAW((base + CSL_LIN_LINCOMP), (CSL_LIN_LINCOMP_SDEL_MASK|CSL_LIN_LINCOMP_SBREAK_MASK),
1321  CSL_LIN_LINCOMP_SDEL_SHIFT, (syncBreak | (delimiter - 1U)));
1322 }
1323 
1332 static inline void
1333 LIN_enableSCIMode(uint32_t base)
1334 {
1335  /* Check the arguments. */
1337 
1338  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_LINMODE_MASK,
1339  CSL_LIN_SCIGCR1_LINMODE_SHIFT, CSL_FALSE);
1340 
1341  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_CLK_MASTER_MASK,
1342  CSL_LIN_SCIGCR1_CLK_MASTER_SHIFT, CSL_TRUE);
1343 
1344  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_TIMINGMODE_MASK,
1345  CSL_LIN_SCIGCR1_TIMINGMODE_SHIFT, CSL_TRUE);
1346 }
1347 
1356 static inline void
1357 LIN_disableSCIMode(uint32_t base)
1358 {
1359  /* Check the arguments. */
1361 
1362  /* Disable SCI communications mode */
1363  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_CLK_MASTER_MASK,
1364  CSL_LIN_SCIGCR1_CLK_MASTER_SHIFT, CSL_FALSE);
1365 
1366  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_TIMINGMODE_MASK,
1367  CSL_LIN_SCIGCR1_TIMINGMODE_SHIFT, CSL_FALSE);
1368 
1369  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_LINMODE_MASK,
1370  CSL_LIN_SCIGCR1_LINMODE_SHIFT, CSL_TRUE);
1371 }
1372 
1386 static inline void
1388 {
1389  /* Check the arguments. */
1391  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1392  0U);
1393 
1394  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_COMMMODE_MASK,
1395  CSL_LIN_SCIGCR1_COMMMODE_SHIFT, mode);
1396 }
1397 
1410 static inline void
1412 {
1413  /* Check the arguments. */
1415  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1416  0U);
1417 
1418  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_PARITYENA_MASK,
1419  CSL_LIN_SCIGCR1_PARITYENA_SHIFT, 1U);
1420 
1421  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_PARITY_MASK,
1422  CSL_LIN_SCIGCR1_PARITY_SHIFT, parity);
1423 }
1424 
1433 static inline void
1434 LIN_disableSCIParity(uint32_t base)
1435 {
1436  /* Check the arguments. */
1438  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1439  0U);
1440 
1441  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_PARITYENA_MASK,
1442  CSL_LIN_SCIGCR1_PARITYENA_SHIFT, 0U);
1443 }
1444 
1457 static inline void
1458 LIN_setSCIStopBits(uint32_t base, LIN_SCIStopBits number)
1459 {
1460  /* Check the arguments. */
1462  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1463  0U);
1464 
1465  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_STOP_MASK,
1466  CSL_LIN_SCIGCR1_STOP_SHIFT, number);
1467 }
1468 
1482 static inline void
1484 {
1485  /* Check the arguments. */
1487  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1488  0U);
1489 
1490  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SLEEP_MASK,
1491  CSL_LIN_SCIGCR1_SLEEP_SHIFT, CSL_TRUE);
1492 }
1493 
1503 static inline void
1505 {
1506  /* Check the arguments. */
1508  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1509  0U);
1510 
1511  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SLEEP_MASK,
1512  CSL_LIN_SCIGCR1_SLEEP_SHIFT, CSL_FALSE);
1513 }
1514 
1527 static inline void
1528 LIN_enterSCILowPower(uint32_t base)
1529 {
1530  /* Check the arguments. */
1532  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1533  0U);
1534 
1535  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_POWERDOWN_MASK,
1536  CSL_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_TRUE);
1537 }
1538 
1547 static inline void
1548 LIN_exitSCILowPower(uint32_t base)
1549 {
1550  /* Check the arguments. */
1552  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1553  0U);
1554 
1555  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_POWERDOWN_MASK,
1556  CSL_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_FALSE);
1557 }
1558 
1570 static inline void
1571 LIN_setSCICharLength(uint32_t base, uint16_t numBits)
1572 {
1573  /* Check the arguments. */
1575  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1576  0U);
1577  DebugP_assert((numBits > 0U) && (numBits < 9U));
1578 
1579  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIFORMAT), CSL_LIN_SCIFORMAT_CHAR_MASK,
1580  CSL_LIN_SCIFORMAT_CHAR_SHIFT, (uint32_t)(numBits - 1U));
1581 }
1582 
1595 static inline void
1596 LIN_setSCIFrameLength(uint32_t base, uint16_t length)
1597 {
1598  /* Check the arguments. */
1600  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1601  0U);
1602  DebugP_assert((length > 0U) && (length < 9U));
1603 
1604  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIFORMAT), CSL_LIN_SCIFORMAT_LENGTH_MASK,
1605  CSL_LIN_SCIFORMAT_LENGTH_SHIFT, (uint32_t)(length - 1U));
1606 }
1607 
1619 static inline Bool
1621 {
1622  /* Check the arguments. */
1624  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1625  0U);
1626 
1627  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_RXRDY_MASK) == CSL_LIN_SCIFLR_RXRDY_MASK);
1628 }
1629 
1641 static inline Bool
1643 {
1644  /* Check the arguments. */
1646  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1647  0U);
1648 
1649  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_TXRDY_MASK) == CSL_LIN_SCIFLR_TXRDY_MASK);
1650 }
1651 
1673 static inline uint16_t
1674 LIN_readSCICharNonBlocking(uint32_t base, Bool emulation)
1675 {
1676  /* Check the arguments. */
1678  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1679  0U);
1680 
1681  /* Read specific data register */
1682  return(emulation ? (HW_RD_REG32_RAW(base + CSL_LIN_SCIED) & CSL_LIN_SCIED_ED_MASK) :
1683  (HW_RD_REG32_RAW(base + CSL_LIN_SCIRD) & CSL_LIN_SCIRD_RD_MASK));
1684 }
1685 
1705 static inline uint16_t
1706 LIN_readSCICharBlocking(uint32_t base, Bool emulation)
1707 {
1708  /* Check the arguments. */
1710  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1711  0U);
1712 
1713  /* Wait until a character is available in buffer. */
1714  while(!LIN_isSCIDataAvailable(base))
1715  {
1716  }
1717 
1718  /* Read specific data register */
1719  return(emulation ? (HW_RD_REG32_RAW(base + CSL_LIN_SCIED) & CSL_LIN_SCIED_ED_MASK) :
1720  (HW_RD_REG32_RAW(base + CSL_LIN_SCIRD) & CSL_LIN_SCIRD_RD_MASK));
1721 }
1722 
1737 static inline void
1738 LIN_writeSCICharNonBlocking(uint32_t base, uint16_t data)
1739 {
1740  /* Check the arguments. */
1742  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1743  0U);
1744  DebugP_assert(data <= CSL_LIN_SCITD_TD_MASK);
1745 
1746  /* Set the Tx Data */
1747  HW_WR_FIELD32_RAW((base + CSL_LIN_SCITD), CSL_LIN_SCITD_TD_MASK, CSL_LIN_SCITD_TD_SHIFT, data);
1748 }
1749 
1761 static inline void
1762 LIN_writeSCICharBlocking(uint32_t base, uint16_t data)
1763 {
1764  /* Check the arguments. */
1766  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1767  0U);
1768  DebugP_assert(data <= CSL_LIN_SCITD_TD_MASK);
1769 
1770  /* Wait until space is available in the transmit buffer. */
1771  while(!LIN_isSCISpaceAvailable(base))
1772  {
1773  }
1774 
1775  /* Set the Tx Data */
1776  HW_WR_FIELD32_RAW((base + CSL_LIN_SCITD), CSL_LIN_SCITD_TD_MASK, CSL_LIN_SCITD_TD_SHIFT, data);
1777 }
1778 
1797 static inline void
1798 LIN_enableSCIModuleErrors(uint32_t base, uint32_t errors)
1799 {
1800  /* Check the arguments. */
1802  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1803  0U);
1804 
1805  /* Clear the IO DFT Enable Key & Enable write access */
1806  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
1807 
1808  /* Enable specified error bits */
1809  HW_WR_REG32_RAW((base + CSL_LIN_IODFTCTRL), (HW_RD_REG32_RAW(base + CSL_LIN_IODFTCTRL)|errors));
1810 
1811  /* Clear the IO DFT Enable Key & Enable write access */
1812  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
1813 }
1814 
1830 static inline void
1831 LIN_disableSCIModuleErrors(uint32_t base, uint32_t errors)
1832 {
1833  /* Check the arguments. */
1835  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1836  0U);
1837 
1838  /* Clear the IO DFT Enable Key & Enable write access */
1839  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
1840 
1841  /* Disable specified error bits */
1842  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), errors, 0U, CSL_FALSE);
1843 
1844  /* Clear the IO DFT Enable Key & Enable write access */
1845  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
1846 }
1847 
1875 static inline void
1876 LIN_enableSCIInterrupt(uint32_t base, uint32_t intFlags)
1877 {
1878  /* Check the arguments. */
1880  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1881  0U);
1882 
1883  /* Set specified interrupts */
1884  HW_WR_REG32_RAW((base + CSL_LIN_SCISETINT), (HW_RD_REG32_RAW(base + CSL_LIN_SCISETINT)|intFlags));
1885 }
1886 
1914 static inline void
1915 LIN_disableSCIInterrupt(uint32_t base, uint32_t intFlags)
1916 {
1917  /* Check the arguments. */
1919  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1920  0U);
1921 
1922  /* Set specified interrupts */
1923  HW_WR_REG32_RAW((base + CSL_LIN_SCICLEARINT), (HW_RD_REG32_RAW(base + CSL_LIN_SCICLEARINT)|intFlags));
1924 }
1925 
1952 static inline void
1953 LIN_clearSCIInterruptStatus(uint32_t base, uint32_t intFlags)
1954 {
1955  /* Check the arguments. */
1957  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1958  0U);
1959 
1960  /* Set specified interrupts */
1961  HW_WR_REG32_RAW((base + CSL_LIN_SCIFLR), (HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR)|intFlags));
1962 }
1963 
1991 static inline void
1992 LIN_setSCIInterruptLevel0(uint32_t base, uint32_t intFlags)
1993 {
1994  /* Check the arguments. */
1996  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1997  0U);
1998 
1999  /* Clear Status Flags */
2000  HW_WR_REG32_RAW((base + CSL_LIN_SCICLEARINTLVL), (HW_RD_REG32_RAW(base + CSL_LIN_SCICLEARINTLVL)|intFlags));
2001 }
2002 
2029 static inline void
2030 LIN_setSCIInterruptLevel1(uint32_t base, uint32_t intFlags)
2031 {
2032  /* Check the arguments. */
2034  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2035  0U);
2036 
2037  /* Set interrupt levels to 1 */
2038  HW_WR_REG32_RAW((base + CSL_LIN_SCISETINTLVL), HW_RD_REG32_RAW(base + CSL_LIN_SCISETINTLVL)|intFlags);
2039 }
2040 
2052 static inline Bool
2054 {
2055  /* Check the arguments. */
2057  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2058  0U);
2059 
2060  /* Read Rx Idle flag and return status */
2061  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_IDLE_MASK) == 0U);
2062 }
2063 
2076 static inline Bool
2078 {
2079  /* Check the arguments. */
2081  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2082  0U);
2083 
2084  /* Read Rx Idle flag and return status */
2085  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_WAKEUP_MASK) == CSL_LIN_SCIFLR_WAKEUP_MASK);
2086 }
2087 
2100 static inline Bool
2102 {
2103  /* Check the arguments. */
2105  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2106  0U);
2107 
2108  /* Read Rx Idle flag and return status */
2109  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_RXWAKE_MASK) == CSL_LIN_SCIFLR_RXWAKE_MASK);
2110 }
2111 
2123 static inline Bool
2125 {
2126  /* Check the arguments. */
2128  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2129  0U);
2130 
2131  /* Read Rx Idle flag and return status */
2132  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_BRKDT_MASK) == CSL_LIN_SCIFLR_BRKDT_MASK);
2133 }
2134 
2146 static inline void
2147 LIN_enableModule(uint32_t base)
2148 {
2149  /* Check the arguments. */
2151 
2152  /* Set reset bit. */
2153  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR0), CSL_LIN_SCIGCR0_RESET_MASK, CSL_LIN_SCIGCR0_RESET_SHIFT, CSL_TRUE);
2154 
2155  /* Enable TX and RX pin control functionality. */
2156  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIPIO0), CSL_LIN_SCIPIO0_RXFUNC_MASK, CSL_LIN_SCIPIO0_RXFUNC_SHIFT, CSL_TRUE);
2157  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIPIO0), CSL_LIN_SCIPIO0_TXFUNC_MASK, CSL_LIN_SCIPIO0_TXFUNC_SHIFT, CSL_TRUE);
2158 }
2159 
2171 static inline void
2172 LIN_disableModule(uint32_t base)
2173 {
2174  /* Check the arguments. */
2176 
2177  /* Disable TX and RX pin control functionality. */
2178  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIPIO0), CSL_LIN_SCIPIO0_RXFUNC_MASK, CSL_LIN_SCIPIO0_RXFUNC_SHIFT, CSL_FALSE);
2179  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIPIO0), CSL_LIN_SCIPIO0_TXFUNC_MASK, CSL_LIN_SCIPIO0_TXFUNC_SHIFT, CSL_FALSE);
2180 
2181  /* Reset reset bit. */
2182  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR0), CSL_LIN_SCIGCR0_RESET_MASK, CSL_LIN_SCIGCR0_RESET_SHIFT, CSL_FALSE);
2183 }
2184 
2200 static inline void
2201 LIN_setBaudRatePrescaler(uint32_t base, uint32_t prescaler,
2202  uint32_t divider)
2203 {
2204  /* Check the arguments. */
2206  DebugP_assert(prescaler <= (CSL_LIN_BRSR_SCI_LIN_PSL_MASK | CSL_LIN_BRSR_SCI_LIN_PSH_MASK));
2207  DebugP_assert(divider <= (CSL_LIN_BRSR_M_MASK >> CSL_LIN_BRSR_M_SHIFT));
2208 
2209  /* Set baud rate prescaler and divider. */
2210  HW_WR_REG32_RAW((base + CSL_LIN_BRSR), (prescaler | (divider << CSL_LIN_BRSR_M_SHIFT)));
2211 }
2212 
2222 static inline void
2224 {
2225  /* Check the arguments. */
2227 
2228  /* Enable transmit bit. */
2229  HW_WR_REG32_RAW((base + CSL_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1)|CSL_LIN_SCIGCR1_TXENA_MASK);
2230 }
2231 
2241 static inline void
2243 {
2244  /* Check the arguments. */
2246 
2247  /* Enable transmit bit. */
2248  HW_WR_REG32_RAW((base + CSL_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1)&~(CSL_LIN_SCIGCR1_TXENA_MASK));
2249 }
2250 
2260 static inline void
2262 {
2263  /* Check the arguments. */
2265 
2266  /* Enable receive bit. */
2267  HW_WR_REG32_RAW((base + CSL_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1)|CSL_LIN_SCIGCR1_RXENA_MASK);
2268 }
2269 
2279 static inline void
2281 {
2282  /* Check the arguments. */
2284 
2285  /* Disable receive bit. */
2286  HW_WR_REG32_RAW((base + CSL_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1)&~(CSL_LIN_SCIGCR1_RXENA_MASK));
2287 }
2288 
2302 static inline void
2304 {
2305  /* Check the arguments. */
2307 
2308  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SWNRST_MASK, CSL_LIN_SCIGCR1_SWNRST_SHIFT, CSL_TRUE);
2309 }
2310 
2325 static inline void
2327 {
2328  /* Check the arguments. */
2330 
2331  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SWNRST_MASK, CSL_LIN_SCIGCR1_SWNRST_SHIFT, CSL_FALSE);
2332 }
2333 
2346 static inline void
2348 {
2349  /* Check the arguments. */
2351 
2352  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SWNRST_MASK, CSL_LIN_SCIGCR1_SWNRST_SHIFT, CSL_TRUE);
2353 }
2354 
2366 static inline Bool
2367 LIN_isBusBusy(uint32_t base)
2368 {
2369  /* Check the arguments. */
2371 
2372  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_BUSY_MASK) == CSL_LIN_SCIFLR_BUSY_MASK);
2373 }
2374 
2386 static inline Bool
2387 LIN_isTxBufferEmpty(uint32_t base)
2388 {
2389  /* Check the arguments. */
2391 
2392  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_TXEMPTY_MASK) == CSL_LIN_SCIFLR_TXEMPTY_MASK);
2393 }
2394 
2416 static inline void
2417 LIN_enableExtLoopback(uint32_t base, LIN_LoopbackType loopbackType,
2418  LIN_AnalogLoopback path)
2419 {
2420  /* Check the arguments. */
2422 
2423  /* Clear the IO DFT Enable Key */
2424  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
2425 
2426  /* Set loopback Type */
2427  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_LPBENA_MASK, CSL_LIN_IODFTCTRL_LPBENA_SHIFT, loopbackType);
2428 
2429  /* Set Analog Loopback Path */
2430  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_RXPENA_MASK, CSL_LIN_IODFTCTRL_RXPENA_SHIFT, path);
2431 }
2432 
2444 static inline void
2446 {
2447  /* Check the arguments. */
2449 
2450  /* Set loopback Type */
2451  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_LPBENA_MASK, CSL_LIN_IODFTCTRL_LPBENA_SHIFT, CSL_FALSE);
2452 
2453  /* Set Analog Loopback Path */
2454  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_RXPENA_MASK, CSL_LIN_IODFTCTRL_RXPENA_SHIFT, CSL_FALSE);
2455 }
2456 
2466 static inline void
2468 {
2469  /* Check the arguments. */
2471 
2472  /* Set loopback Type */
2473  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_LOOPBACK_MASK, CSL_LIN_SCIGCR1_LOOPBACK_SHIFT, CSL_TRUE);
2474 }
2475 
2485 static inline void
2487 {
2488  /* Check the arguments. */
2490 
2491  /* Set loopback Type */
2492  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_LOOPBACK_MASK, CSL_LIN_SCIGCR1_LOOPBACK_SHIFT, CSL_FALSE);
2493 }
2494 
2528 static inline uint32_t
2530 {
2531  /* Check the arguments. */
2533 
2534  /* Read and return the flag register */
2535  return(HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR));
2536 }
2537 
2549 static inline uint32_t
2551 {
2552  /* Check the arguments. */
2554 
2555  /* Read and return the flag register */
2556  return(HW_RD_REG32_RAW(base + CSL_LIN_SCISETINTLVL));
2557 }
2558 
2594 static inline uint16_t
2596 {
2597  /* Check the arguments. */
2599 
2600  /* Read and return the flag register */
2601  return(HW_RD_REG32_RAW(base + CSL_LIN_SCIINTVECT0) & CSL_LIN_SCIINTVECT0_INTVECT0_MASK);
2602 }
2603 
2639 static inline uint16_t
2641 {
2642  /* Check the arguments. */
2644 
2645  /* Read and return the flag register */
2646  return(HW_RD_REG32_RAW(base + CSL_LIN_SCIINTVECT1) & CSL_LIN_SCIINTVECT1_INTVECT1_MASK);
2647 }
2648 
2657 static inline void
2659 {
2660  /* Check the arguments. */
2662 
2663  /* Read and return the flag register */
2664  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_MBUFMODE_MASK, CSL_LIN_SCIGCR1_MBUFMODE_SHIFT, CSL_TRUE);
2665 }
2666 
2675 static inline void
2677 {
2678  /* Check the arguments. */
2680 
2681  /* Read and return the flag register */
2682  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_MBUFMODE_MASK, CSL_LIN_SCIGCR1_MBUFMODE_SHIFT, CSL_FALSE);
2683 }
2684 
2698 static inline void
2699 LIN_setTransmitDelay(uint32_t base, uint16_t delay)
2700 {
2701  /* Check the arguments. */
2703  DebugP_assert(delay < 8U);
2704 
2705  /* Clear and Set the IO DFT Enable Key */
2706  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
2707 
2708  /* Set the delay value */
2709  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_TXSHIFT_MASK, CSL_LIN_IODFTCTRL_TXSHIFT_SHIFT, delay);
2710 
2711  /* Clear the IO DFT Enable Key */
2712  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
2713 }
2714 
2731 static inline void
2733 {
2734  /* Check the arguments. */
2736 
2737  /* Clear and Set the IO DFT Enable Key */
2738  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
2739 
2740  /* Set the delay value */
2741  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_PINSAMPLEMASK_MASK, CSL_LIN_IODFTCTRL_PINSAMPLEMASK_SHIFT, mask);
2742 
2743  /* Clear the IO DFT Enable Key */
2744  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
2745 }
2746 
2762 static inline void
2764 {
2765  /* Check the arguments. */
2767 
2768  /* Clear and Set the IO DFT Enable Key */
2769  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_CONT_MASK, CSL_LIN_SCIGCR1_CONT_SHIFT, mode);
2770 }
2771 
2786 static inline void
2788 {
2789  /* Check the arguments. */
2791 
2792  HW_WR_REG32_RAW((base + CSL_LIN_LIN_GLB_INT_EN), HW_RD_REG32_RAW(base + CSL_LIN_LIN_GLB_INT_EN)|(CSL_LIN_LIN_GLB_INT_FLG_INT0_FLG_MASK<<(uint16_t)line));
2793 }
2794 
2809 static inline void
2811 {
2812  /* Check the arguments. */
2814 
2815  HW_WR_REG32_RAW((base + CSL_LIN_LIN_GLB_INT_EN), HW_RD_REG32_RAW(base + CSL_LIN_LIN_GLB_INT_EN)&(~(CSL_LIN_LIN_GLB_INT_FLG_INT0_FLG_MASK<<(uint16_t)line)));
2816 }
2817 
2832 static inline void
2834 {
2835  /* Check the arguments. */
2837 
2838  HW_WR_REG32_RAW((base + CSL_LIN_LIN_GLB_INT_CLR), (CSL_LIN_LIN_GLB_INT_FLG_INT0_FLG_MASK<<(uint16_t)line));
2839 }
2840 
2857 static inline Bool
2859 {
2860  /* Check the arguments. */
2862 
2863  return((HW_RD_REG32_RAW(base + CSL_LIN_LIN_GLB_INT_FLG) & (CSL_LIN_LIN_GLB_INT_FLG_INT0_FLG_MASK<<(uint16_t)line))
2864  == (CSL_LIN_LIN_GLB_INT_FLG_INT0_FLG_MASK<<(uint16_t)line));
2865 }
2866 
2880 static inline Bool
2881 LIN_getPinStatus(uint32_t base, LIN_PinType pin)
2882 {
2883  /* Check the arguments. */
2885 
2886  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIPIO2) & pin) == pin);
2887 }
2888 
2889 #ifdef __cplusplus
2890 }
2891 #endif
2892 
2893 #endif /* #ifndef LIN_V0_H_ */
2894 
LIN_MSG_FILTER_IDBYTE
@ LIN_MSG_FILTER_IDBYTE
Definition: lin/v0/lin.h:296
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:295
LIN_LOOPBACK_DIGITAL
@ LIN_LOOPBACK_DIGITAL
Digital Loopback Mode.
Definition: lin/v0/lin.h:245
LIN_disableParity
static void LIN_disableParity(uint32_t base)
Disable Parity mode.
Definition: lin/v0/lin.h:523
LIN_enableInterrupt
static void LIN_enableInterrupt(uint32_t base, uint32_t intFlags)
Enable interrupts.
Definition: lin/v0/lin.h:960
LIN_disableModule
static void LIN_disableModule(uint32_t base)
Disable the LIN module.
Definition: lin/v0/lin.h:2172
LIN_isSCISpaceAvailable
static Bool LIN_isSCISpaceAvailable(uint32_t base)
Check if Space is available in SCI Transmit Buffer.
Definition: lin/v0/lin.h:1642
LIN_DebugMode
LIN_DebugMode
The following are defines for the mode parameter of the LIN_setDebugSuspendMode() function.
Definition: lin/v0/lin.h:311
LIN_COMM_LIN_USELENGTHVAL
@ LIN_COMM_LIN_USELENGTHVAL
Definition: lin/v0/lin.h:262
LIN_setSyncFields
static void LIN_setSyncFields(uint32_t base, uint16_t syncBreak, uint16_t delimiter)
Set Sync Break Extend and Delimiter.
Definition: lin/v0/lin.h:1312
LIN_enterSCILowPower
static void LIN_enterSCILowPower(uint32_t base)
Enter SCI Local Low-Power Mode.
Definition: lin/v0/lin.h:1528
LIN_disableModuleErrors
static void LIN_disableModuleErrors(uint32_t base, uint32_t errors)
Disable Module Errors for Testing.
Definition: lin/v0/lin.h:1189
LIN_triggerChecksumCompare
static void LIN_triggerChecksumCompare(uint32_t base)
Trigger Checksum Compare.
Definition: lin/v0/lin.h:685
LIN_disableExtLoopback
static void LIN_disableExtLoopback(uint32_t base)
Disable External Loopback mode for self test.
Definition: lin/v0/lin.h:2445
LIN_setMessageFiltering
static void LIN_setMessageFiltering(uint32_t base, LIN_MessageFilter type)
Set Message filtering Type.
Definition: lin/v0/lin.h:487
LIN_disableAutomaticBaudrate
static void LIN_disableAutomaticBaudrate(uint32_t base)
Disable Automatic Baudrate Adjustment.
Definition: lin/v0/lin.h:1236
LIN_isBaseValid
static Bool LIN_isBaseValid(uint32_t base)
Checks a LIN base address.
Definition: lin/v0/lin.h:411
LIN_enableIntLoopback
static void LIN_enableIntLoopback(uint32_t base)
Enable Internal Loopback mode for self test.
Definition: lin/v0/lin.h:2467
LIN_ChecksumType
LIN_ChecksumType
The following are defines for the type parameter of the LIN_setChecksumType() function.
Definition: lin/v0/lin.h:303
LIN_performSoftwareReset
static void LIN_performSoftwareReset(uint32_t base)
Perform software reset.
Definition: lin/v0/lin.h:2303
LIN_SCI_PAR_ODD
@ LIN_SCI_PAR_ODD
Definition: lin/v0/lin.h:330
LIN_LOOPBACK_ANALOG
@ LIN_LOOPBACK_ANALOG
Analog Loopback Mode.
Definition: lin/v0/lin.h:246
LIN_getTxMask
static uint16_t LIN_getTxMask(uint32_t base)
Gets the transmit ID mask.
Definition: lin/v0/lin.h:813
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:297
LIN_enableDataReceiver
static void LIN_enableDataReceiver(uint32_t base)
Enable Receive Data Transfer.
Definition: lin/v0/lin.h:2261
SystemP.h
LIN_setTxMask
static void LIN_setTxMask(uint32_t base, uint16_t mask)
Sets the transmit ID mask.
Definition: lin/v0/lin.h:774
LIN_sendChecksum
static void LIN_sendChecksum(uint32_t base)
Send Checksum Byte.
Definition: lin/v0/lin.h:666
LIN_PinSampleMask
LIN_PinSampleMask
The following are defines for the mask parameter of the LIN_setPinSampleMask() function.
Definition: lin/v0/lin.h:319
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:1458
LIN_SCIParityType
LIN_SCIParityType
The following are defines for the parity parameter of the LIN_enableSCIParity() function.
Definition: lin/v0/lin.h:329
LIN_enableModuleErrors
static void LIN_enableModuleErrors(uint32_t base, uint32_t errors)
Enable Module Errors for Testing.
Definition: lin/v0/lin.h:1158
LIN_COMM_SCI_IDLELINE
@ LIN_COMM_SCI_IDLELINE
Definition: lin/v0/lin.h:270
LIN_setIDResponderTask
static void LIN_setIDResponderTask(uint32_t base, uint16_t identifier)
Set ID-ResponderTask.
Definition: lin/v0/lin.h:594
LIN_InterruptLine
LIN_InterruptLine
The following are defines for the line parameter of the LIN_enableGlobalInterrupt(),...
Definition: lin/v0/lin.h:287
LIN_isRxMatch
static Bool LIN_isRxMatch(uint32_t base)
Checks for Rx ID Match Received.
Definition: lin/v0/lin.h:917
LIN_isSCIBreakDetected
static Bool LIN_isSCIBreakDetected(uint32_t base)
Check if SCI Detected a Break Condition.
Definition: lin/v0/lin.h:2124
LIN_setTransmitDelay
static void LIN_setTransmitDelay(uint32_t base, uint16_t delay)
Set Transmit Pin Delay.
Definition: lin/v0/lin.h:2699
LIN_setRxMask
static void LIN_setRxMask(uint32_t base, uint16_t mask)
Sets the receive ID mask.
Definition: lin/v0/lin.h:794
LIN_setInterruptLevel0
static void LIN_setInterruptLevel0(uint32_t base, uint32_t intFlags)
Set interrupt level to 0.
Definition: lin/v0/lin.h:1088
LIN_readSCICharBlocking
static uint16_t LIN_readSCICharBlocking(uint32_t base, Bool emulation)
Reads a SCI character with Blocking.
Definition: lin/v0/lin.h:1706
LIN_SCI_PAR_EVEN
@ LIN_SCI_PAR_EVEN
Definition: lin/v0/lin.h:331
LIN_setSCIInterruptLevel1
static void LIN_setSCIInterruptLevel1(uint32_t base, uint32_t intFlags)
Set interrupt level to 1.
Definition: lin/v0/lin.h:2030
LIN_SCIStopBits
LIN_SCIStopBits
The following are defines for the number parameter of the LIN_setSCIStopBits() function.
Definition: lin/v0/lin.h:337
LIN_DEBUG_FROZEN
@ LIN_DEBUG_FROZEN
Freeze module during debug.
Definition: lin/v0/lin.h:312
LIN_disableSCIMode
static void LIN_disableSCIMode(uint32_t base)
Disable SCI Mode.
Definition: lin/v0/lin.h:1357
LIN_disableMultibufferMode
static void LIN_disableMultibufferMode(uint32_t base)
Disable Multi-buffer Mode.
Definition: lin/v0/lin.h:2676
LIN_enterSleep
static void LIN_enterSleep(uint32_t base)
Entering LIN sleep signal.
Definition: lin/v0/lin.h:647
LIN_LINMode
LIN_LINMode
The following are defines for the mode parameter of the LIN_setLINMode() function.
Definition: lin/v0/lin.h:277
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:1571
LIN_disableIntLoopback
static void LIN_disableIntLoopback(uint32_t base)
Disable Internal Loopback mode for self test.
Definition: lin/v0/lin.h:2486
LIN_CommMode
LIN_CommMode
The following are defines for the mode parameter of the LIN_setCommMode() function.
Definition: lin/v0/lin.h:261
LIN_getRxIdentifier
static uint16_t LIN_getRxIdentifier(uint32_t base)
Get last received identifier.
Definition: lin/v0/lin.h:875
LIN_setBaudRatePrescaler
static void LIN_setBaudRatePrescaler(uint32_t base, uint32_t prescaler, uint32_t divider)
Set Baud Rate Prescaler.
Definition: lin/v0/lin.h:2201
LIN_setSCIInterruptLevel0
static void LIN_setSCIInterruptLevel0(uint32_t base, uint32_t intFlags)
Set interrupt level to 0.
Definition: lin/v0/lin.h:1992
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:2417
LIN_ANALOG_LOOP_RX
@ LIN_ANALOG_LOOP_RX
Analog loopback through receive pin.
Definition: lin/v0/lin.h:255
LIN_INTERRUPT_LINE1
@ LIN_INTERRUPT_LINE1
Definition: lin/v0/lin.h:289
LIN_PINTYPE_TX
@ LIN_PINTYPE_TX
Definition: lin/v0/lin.h:346
LIN_isRxReady
static Bool LIN_isRxReady(uint32_t base)
Gets the receive ID mask.
Definition: lin/v0/lin.h:855
LIN_enableMultibufferMode
static void LIN_enableMultibufferMode(uint32_t base)
Enable Multi-buffer Mode.
Definition: lin/v0/lin.h:2658
LIN_disableGlobalInterrupt
static void LIN_disableGlobalInterrupt(uint32_t base, LIN_InterruptLine line)
Disables a LIN global interrupt.
Definition: lin/v0/lin.h:2810
LIN_disableSCISleepMode
static void LIN_disableSCISleepMode(uint32_t base)
Disable SCI Sleep mode.
Definition: lin/v0/lin.h:1504
LIN_ANALOG_LOOP_NONE
@ LIN_ANALOG_LOOP_NONE
Default path for digital loopback mode.
Definition: lin/v0/lin.h:253
LIN_MODE_LIN_COMMANDER
@ LIN_MODE_LIN_COMMANDER
Definition: lin/v0/lin.h:279
LIN_enableSCIParity
static void LIN_enableSCIParity(uint32_t base, LIN_SCIParityType parity)
Enable SCI Parity mode.
Definition: lin/v0/lin.h:1411
LIN_disableInterrupt
static void LIN_disableInterrupt(uint32_t base, uint32_t intFlags)
Disable interrupts.
Definition: lin/v0/lin.h:1003
LIN_clearSCIInterruptStatus
static void LIN_clearSCIInterruptStatus(uint32_t base, uint32_t intFlags)
Clear SCI interrupt status.
Definition: lin/v0/lin.h:1953
LIN_disableDataTransmitter
static void LIN_disableDataTransmitter(uint32_t base)
Disable Transmit Data Transfer.
Definition: lin/v0/lin.h:2242
LIN_isTxMatch
static Bool LIN_isTxMatch(uint32_t base)
Checks for Tx ID Match Received.
Definition: lin/v0/lin.h:896
LIN_readSCICharNonBlocking
static uint16_t LIN_readSCICharNonBlocking(uint32_t base, Bool emulation)
Reads a SCI character without Blocking.
Definition: lin/v0/lin.h:1674
LIN_MODE_LIN_RESPONDER
@ LIN_MODE_LIN_RESPONDER
Definition: lin/v0/lin.h:278
LIN_stopExtendedFrame
static void LIN_stopExtendedFrame(uint32_t base)
Stops LIN Extended Frame Communication.
Definition: lin/v0/lin.h:1257
LIN_disableSCIParity
static void LIN_disableSCIParity(uint32_t base)
Disable SCI Parity mode.
Definition: lin/v0/lin.h:1434
LIN_getRxMask
static uint16_t LIN_getRxMask(uint32_t base)
Gets the receive ID mask.
Definition: lin/v0/lin.h:834
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:2053
LIN_setSCICommMode
static void LIN_setSCICommMode(uint32_t base, LIN_SCICommMode mode)
Set SCI communication mode.
Definition: lin/v0/lin.h:1387
HwiP.h
LIN_getSCITxFrameType
static Bool LIN_getSCITxFrameType(uint32_t base)
Gets the SCI Transmit Frame Type.
Definition: lin/v0/lin.h:2077
LIN_isTxReady
static Bool LIN_isTxReady(uint32_t base)
Check Tx buffer ready flag.
Definition: lin/v0/lin.h:706
LIN_clearGlobalInterruptStatus
static void LIN_clearGlobalInterruptStatus(uint32_t base, LIN_InterruptLine line)
Clears a LIN global interrupt flag.
Definition: lin/v0/lin.h:2833
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:548
LIN_setSCIFrameLength
static void LIN_setSCIFrameLength(uint32_t base, uint16_t length)
Set SCI Frame Length.
Definition: lin/v0/lin.h:1596
LIN_setMaximumBaudRate
static void LIN_setMaximumBaudRate(uint32_t base, uint32_t clock)
Set Maximum Baud Rate Prescaler.
Definition: lin/v0/lin.h:465
LIN_INTERRUPT_LINE0
@ LIN_INTERRUPT_LINE0
Definition: lin/v0/lin.h:288
LIN_LoopbackType
LIN_LoopbackType
The following are defines for the type parameter of the LIN_enableExtLoopback() function.
Definition: lin/v0/lin.h:244
LIN_enableParity
static void LIN_enableParity(uint32_t base)
Enable Parity mode.
Definition: lin/v0/lin.h:505
LIN_PINMASK_NONE
@ LIN_PINMASK_NONE
Definition: lin/v0/lin.h:320
LIN_getGlobalInterruptStatus
static Bool LIN_getGlobalInterruptStatus(uint32_t base, LIN_InterruptLine line)
Returns a LIN global interrupt flag status.
Definition: lin/v0/lin.h:2858
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:2387
LIN_enableSCIMode
static void LIN_enableSCIMode(uint32_t base)
Enable SCI Mode.
Definition: lin/v0/lin.h:1333
LIN_enterSoftwareReset
static void LIN_enterSoftwareReset(uint32_t base)
Put LIN into its reset state.
Definition: lin/v0/lin.h:2326
LIN_enableGlobalInterrupt
static void LIN_enableGlobalInterrupt(uint32_t base, LIN_InterruptLine line)
Enables a LIN global interrupt.
Definition: lin/v0/lin.h:2787
LIN_setPinSampleMask
static void LIN_setPinSampleMask(uint32_t base, LIN_PinSampleMask mask)
Set Pin Sample Mask.
Definition: lin/v0/lin.h:2732
LIN_getInterruptLine1Offset
static uint16_t LIN_getInterruptLine1Offset(uint32_t base)
Gets the Interrupt Vector Offset for Line 1.
Definition: lin/v0/lin.h:2640
LIN_disableDataReceiver
static void LIN_disableDataReceiver(uint32_t base)
Disable Receive Data Transfer.
Definition: lin/v0/lin.h:2280
LIN_enableSCIInterrupt
static void LIN_enableSCIInterrupt(uint32_t base, uint32_t intFlags)
Enable SCI interrupts.
Definition: lin/v0/lin.h:1876
LIN_CHECKSUM_ENHANCED
@ LIN_CHECKSUM_ENHANCED
Definition: lin/v0/lin.h:305
LIN_COMM_SCI_ADDRBIT
@ LIN_COMM_SCI_ADDRBIT
Definition: lin/v0/lin.h:271
LIN_writeSCICharBlocking
static void LIN_writeSCICharBlocking(uint32_t base, uint16_t data)
Sends a SCI character with blocking.
Definition: lin/v0/lin.h:1762
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:439
LIN_enableDataTransmitter
static void LIN_enableDataTransmitter(uint32_t base)
Enable Transmit Data Transfer.
Definition: lin/v0/lin.h:2223
LIN_setCommMode
static void LIN_setCommMode(uint32_t base, LIN_CommMode mode)
Set LIN communication mode.
Definition: lin/v0/lin.h:754
LIN_setIDByte
static void LIN_setIDByte(uint32_t base, uint16_t identifier)
Set ID Byte.
Definition: lin/v0/lin.h:574
LIN_isBusBusy
static Bool LIN_isBusBusy(uint32_t base)
Check if Bus is Busy.
Definition: lin/v0/lin.h:2367
LIN_exitSCILowPower
static void LIN_exitSCILowPower(uint32_t base)
Exit SCI Local Low-Power Mode.
Definition: lin/v0/lin.h:1548
LIN_getInterruptStatus
static uint32_t LIN_getInterruptStatus(uint32_t base)
Get Interrupt Flags Status.
Definition: lin/v0/lin.h:2529
LIN_getInterruptLine0Offset
static uint16_t LIN_getInterruptLine0Offset(uint32_t base)
Gets the Interrupt Vector Offset for Line 0.
Definition: lin/v0/lin.h:2595
LIN_SCI_STOP_ONE
@ LIN_SCI_STOP_ONE
Definition: lin/v0/lin.h:338
LIN_COMM_LIN_ID4ID5LENCTL
@ LIN_COMM_LIN_ID4ID5LENCTL
Definition: lin/v0/lin.h:263
LIN_writeSCICharNonBlocking
static void LIN_writeSCICharNonBlocking(uint32_t base, uint16_t data)
Sends a SCI character without Blocking.
Definition: lin/v0/lin.h:1738
LIN_SCICommMode
LIN_SCICommMode
The following are defines for the mode parameter of the LIN_setSCICommMode() function.
Definition: lin/v0/lin.h:269
LIN_exitSoftwareReset
static void LIN_exitSoftwareReset(uint32_t base)
Put LIN into its ready state.
Definition: lin/v0/lin.h:2347
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:2881
LIN_CHECKSUM_CLASSIC
@ LIN_CHECKSUM_CLASSIC
Definition: lin/v0/lin.h:304
LIN_setChecksumType
static void LIN_setChecksumType(uint32_t base, LIN_ChecksumType type)
Set Checksum Type.
Definition: lin/v0/lin.h:1279
LIN_ID3
#define LIN_ID3
Definition: lin/v0/lin.h:91
LIN_SCI_STOP_TWO
@ LIN_SCI_STOP_TWO
Definition: lin/v0/lin.h:339
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:252
LIN_enableAutomaticBaudrate
static void LIN_enableAutomaticBaudrate(uint32_t base)
Enable Automatic Baudrate Adjustment.
Definition: lin/v0/lin.h:1217
LIN_PINTYPE_RX
@ LIN_PINTYPE_RX
Definition: lin/v0/lin.h:347
LIN_getSCIRxFrameType
static Bool LIN_getSCIRxFrameType(uint32_t base)
Gets the SCI Receiver Frame Type.
Definition: lin/v0/lin.h:2101
DebugP_assert
#define DebugP_assert(expression)
Function to call for assert check.
Definition: DebugP.h:177
LIN_disableSCIModuleErrors
static void LIN_disableSCIModuleErrors(uint32_t base, uint32_t errors)
Disable SCI Module Errors for Testing.
Definition: lin/v0/lin.h:1831
LIN_getInterruptLevel
static uint32_t LIN_getInterruptLevel(uint32_t base)
Get the Interrupt Level.
Definition: lin/v0/lin.h:2550
LIN_isSCIDataAvailable
static Bool LIN_isSCIDataAvailable(uint32_t base)
Check if new SCI data is ready to be read.
Definition: lin/v0/lin.h:1620
LIN_clearInterruptStatus
static void LIN_clearInterruptStatus(uint32_t base, uint32_t intFlags)
Clear interrupt status.
Definition: lin/v0/lin.h:1045
LIN_setDebugSuspendMode
static void LIN_setDebugSuspendMode(uint32_t base, LIN_DebugMode mode)
Set the Debug Suspended Mode.
Definition: lin/v0/lin.h:2763
LIN_sendWakeupSignal
static void LIN_sendWakeupSignal(uint32_t base)
Send LIN wakeup signal.
Definition: lin/v0/lin.h:612
LIN_PINMASK_CENTER_SCLK
@ LIN_PINMASK_CENTER_SCLK
Definition: lin/v0/lin.h:322
LIN_PINMASK_CENTER_2SCLK
@ LIN_PINMASK_CENTER_2SCLK
Definition: lin/v0/lin.h:323
LIN_ANALOG_LOOP_TX
@ LIN_ANALOG_LOOP_TX
Analog loopback through transmit pin.
Definition: lin/v0/lin.h:254
LIN_setInterruptLevel1
static void LIN_setInterruptLevel1(uint32_t base, uint32_t intFlags)
Set interrupt level to 1.
Definition: lin/v0/lin.h:1131
LIN_PINMASK_CENTER
@ LIN_PINMASK_CENTER
Definition: lin/v0/lin.h:321
LIN_enableSCISleepMode
static void LIN_enableSCISleepMode(uint32_t base)
Enable SCI Sleep mode.
Definition: lin/v0/lin.h:1483
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:1915
LIN_setFrameLength
static void LIN_setFrameLength(uint32_t base, uint16_t length)
Set LIN Frame Length.
Definition: lin/v0/lin.h:729
LIN_DEBUG_COMPLETE
@ LIN_DEBUG_COMPLETE
Complete Tx/Rx before Freezing.
Definition: lin/v0/lin.h:313
LIN_enableModule
static void LIN_enableModule(uint32_t base)
Enables the LIN module.
Definition: lin/v0/lin.h:2147
LIN_enableSCIModuleErrors
static void LIN_enableSCIModuleErrors(uint32_t base, uint32_t errors)
Enable SCI Module Errors for Testing.
Definition: lin/v0/lin.h:1798
LIN_PinType
LIN_PinType
The following are defines for the pin parameter of the LIN_getPinStatus() function.
Definition: lin/v0/lin.h:345