AM263x MCU+ SDK  09.02.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,
1321  CSL_LIN_LINCOMP_SDEL_SHIFT, (delimiter - 1U));
1322  HW_WR_FIELD32_RAW((base + CSL_LIN_LINCOMP), CSL_LIN_LINCOMP_SBREAK_MASK,
1323  CSL_LIN_LINCOMP_SBREAK_SHIFT, syncBreak);
1324 }
1325 
1334 static inline void
1335 LIN_enableSCIMode(uint32_t base)
1336 {
1337  /* Check the arguments. */
1339 
1340  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_LINMODE_MASK,
1341  CSL_LIN_SCIGCR1_LINMODE_SHIFT, CSL_FALSE);
1342 
1343  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_CLK_MASTER_MASK,
1344  CSL_LIN_SCIGCR1_CLK_MASTER_SHIFT, CSL_TRUE);
1345 
1346  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_TIMINGMODE_MASK,
1347  CSL_LIN_SCIGCR1_TIMINGMODE_SHIFT, CSL_TRUE);
1348 }
1349 
1358 static inline void
1359 LIN_disableSCIMode(uint32_t base)
1360 {
1361  /* Check the arguments. */
1363 
1364  /* Disable SCI communications mode */
1365  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_CLK_MASTER_MASK,
1366  CSL_LIN_SCIGCR1_CLK_MASTER_SHIFT, CSL_FALSE);
1367 
1368  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_TIMINGMODE_MASK,
1369  CSL_LIN_SCIGCR1_TIMINGMODE_SHIFT, CSL_FALSE);
1370 
1371  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_LINMODE_MASK,
1372  CSL_LIN_SCIGCR1_LINMODE_SHIFT, CSL_TRUE);
1373 }
1374 
1388 static inline void
1390 {
1391  /* Check the arguments. */
1393  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1394  0U);
1395 
1396  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_COMMMODE_MASK,
1397  CSL_LIN_SCIGCR1_COMMMODE_SHIFT, mode);
1398 }
1399 
1412 static inline void
1414 {
1415  /* Check the arguments. */
1417  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1418  0U);
1419 
1420  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_PARITYENA_MASK,
1421  CSL_LIN_SCIGCR1_PARITYENA_SHIFT, 1U);
1422 
1423  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_PARITY_MASK,
1424  CSL_LIN_SCIGCR1_PARITY_SHIFT, parity);
1425 }
1426 
1435 static inline void
1436 LIN_disableSCIParity(uint32_t base)
1437 {
1438  /* Check the arguments. */
1440  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1441  0U);
1442 
1443  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_PARITYENA_MASK,
1444  CSL_LIN_SCIGCR1_PARITYENA_SHIFT, 0U);
1445 }
1446 
1459 static inline void
1460 LIN_setSCIStopBits(uint32_t base, LIN_SCIStopBits number)
1461 {
1462  /* Check the arguments. */
1464  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1465  0U);
1466 
1467  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_STOP_MASK,
1468  CSL_LIN_SCIGCR1_STOP_SHIFT, number);
1469 }
1470 
1484 static inline void
1486 {
1487  /* Check the arguments. */
1489  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1490  0U);
1491 
1492  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SLEEP_MASK,
1493  CSL_LIN_SCIGCR1_SLEEP_SHIFT, CSL_TRUE);
1494 }
1495 
1505 static inline void
1507 {
1508  /* Check the arguments. */
1510  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1511  0U);
1512 
1513  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SLEEP_MASK,
1514  CSL_LIN_SCIGCR1_SLEEP_SHIFT, CSL_FALSE);
1515 }
1516 
1529 static inline void
1530 LIN_enterSCILowPower(uint32_t base)
1531 {
1532  /* Check the arguments. */
1534  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1535  0U);
1536 
1537  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_POWERDOWN_MASK,
1538  CSL_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_TRUE);
1539 }
1540 
1549 static inline void
1550 LIN_exitSCILowPower(uint32_t base)
1551 {
1552  /* Check the arguments. */
1554  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1555  0U);
1556 
1557  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR2), CSL_LIN_SCIGCR2_POWERDOWN_MASK,
1558  CSL_LIN_SCIGCR2_POWERDOWN_SHIFT, CSL_FALSE);
1559 }
1560 
1572 static inline void
1573 LIN_setSCICharLength(uint32_t base, uint16_t numBits)
1574 {
1575  /* Check the arguments. */
1577  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1578  0U);
1579  DebugP_assert((numBits > 0U) && (numBits < 9U));
1580 
1581  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIFORMAT), CSL_LIN_SCIFORMAT_CHAR_MASK,
1582  CSL_LIN_SCIFORMAT_CHAR_SHIFT, (uint32_t)(numBits - 1U));
1583 }
1584 
1597 static inline void
1598 LIN_setSCIFrameLength(uint32_t base, uint16_t length)
1599 {
1600  /* Check the arguments. */
1602  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1603  0U);
1604  DebugP_assert((length > 0U) && (length < 9U));
1605 
1606  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIFORMAT), CSL_LIN_SCIFORMAT_LENGTH_MASK,
1607  CSL_LIN_SCIFORMAT_LENGTH_SHIFT, (uint32_t)(length - 1U));
1608 }
1609 
1621 static inline Bool
1623 {
1624  /* Check the arguments. */
1626  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1627  0U);
1628 
1629  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_RXRDY_MASK) == CSL_LIN_SCIFLR_RXRDY_MASK);
1630 }
1631 
1643 static inline Bool
1645 {
1646  /* Check the arguments. */
1648  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1649  0U);
1650 
1651  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_TXRDY_MASK) == CSL_LIN_SCIFLR_TXRDY_MASK);
1652 }
1653 
1675 static inline uint16_t
1676 LIN_readSCICharNonBlocking(uint32_t base, Bool emulation)
1677 {
1678  /* Check the arguments. */
1680  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1681  0U);
1682 
1683  /* Read specific data register */
1684  return(emulation ? (HW_RD_REG32_RAW(base + CSL_LIN_SCIED) & CSL_LIN_SCIED_ED_MASK) :
1685  (HW_RD_REG32_RAW(base + CSL_LIN_SCIRD) & CSL_LIN_SCIRD_RD_MASK));
1686 }
1687 
1707 static inline uint16_t
1708 LIN_readSCICharBlocking(uint32_t base, Bool emulation)
1709 {
1710  /* Check the arguments. */
1712  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1713  0U);
1714 
1715  /* Wait until a character is available in buffer. */
1716  while(!LIN_isSCIDataAvailable(base))
1717  {
1718  }
1719 
1720  /* Read specific data register */
1721  return(emulation ? (HW_RD_REG32_RAW(base + CSL_LIN_SCIED) & CSL_LIN_SCIED_ED_MASK) :
1722  (HW_RD_REG32_RAW(base + CSL_LIN_SCIRD) & CSL_LIN_SCIRD_RD_MASK));
1723 }
1724 
1739 static inline void
1740 LIN_writeSCICharNonBlocking(uint32_t base, uint16_t data)
1741 {
1742  /* Check the arguments. */
1744  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1745  0U);
1746  DebugP_assert(data <= CSL_LIN_SCITD_TD_MASK);
1747 
1748  /* Set the Tx Data */
1749  HW_WR_FIELD32_RAW((base + CSL_LIN_SCITD), CSL_LIN_SCITD_TD_MASK, CSL_LIN_SCITD_TD_SHIFT, data);
1750 }
1751 
1763 static inline void
1764 LIN_writeSCICharBlocking(uint32_t base, uint16_t data)
1765 {
1766  /* Check the arguments. */
1768  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1769  0U);
1770  DebugP_assert(data <= CSL_LIN_SCITD_TD_MASK);
1771 
1772  /* Wait until space is available in the transmit buffer. */
1773  while(!LIN_isSCISpaceAvailable(base))
1774  {
1775  }
1776 
1777  /* Set the Tx Data */
1778  HW_WR_FIELD32_RAW((base + CSL_LIN_SCITD), CSL_LIN_SCITD_TD_MASK, CSL_LIN_SCITD_TD_SHIFT, data);
1779 }
1780 
1799 static inline void
1800 LIN_enableSCIModuleErrors(uint32_t base, uint32_t errors)
1801 {
1802  /* Check the arguments. */
1804  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1805  0U);
1806 
1807  /* Clear the IO DFT Enable Key & Enable write access */
1808  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
1809 
1810  /* Enable specified error bits */
1811  HW_WR_REG32_RAW((base + CSL_LIN_IODFTCTRL), (HW_RD_REG32_RAW(base + CSL_LIN_IODFTCTRL)|errors));
1812 
1813  /* Clear the IO DFT Enable Key & Enable write access */
1814  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
1815 }
1816 
1832 static inline void
1833 LIN_disableSCIModuleErrors(uint32_t base, uint32_t errors)
1834 {
1835  /* Check the arguments. */
1837  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1838  0U);
1839 
1840  /* Clear the IO DFT Enable Key & Enable write access */
1841  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
1842 
1843  /* Disable specified error bits */
1844  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), errors, 0U, CSL_FALSE);
1845 
1846  /* Clear the IO DFT Enable Key & Enable write access */
1847  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
1848 }
1849 
1877 static inline void
1878 LIN_enableSCIInterrupt(uint32_t base, uint32_t intFlags)
1879 {
1880  /* Check the arguments. */
1882  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1883  0U);
1884 
1885  /* Set specified interrupts */
1886  HW_WR_REG32_RAW((base + CSL_LIN_SCISETINT), (HW_RD_REG32_RAW(base + CSL_LIN_SCISETINT)|intFlags));
1887 }
1888 
1916 static inline void
1917 LIN_disableSCIInterrupt(uint32_t base, uint32_t intFlags)
1918 {
1919  /* Check the arguments. */
1921  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1922  0U);
1923 
1924  /* Set specified interrupts */
1925  HW_WR_REG32_RAW((base + CSL_LIN_SCICLEARINT), (HW_RD_REG32_RAW(base + CSL_LIN_SCICLEARINT)|intFlags));
1926 }
1927 
1954 static inline void
1955 LIN_clearSCIInterruptStatus(uint32_t base, uint32_t intFlags)
1956 {
1957  /* Check the arguments. */
1959  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1960  0U);
1961 
1962  /* Set specified interrupts */
1963  HW_WR_REG32_RAW((base + CSL_LIN_SCIFLR), (HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR)|intFlags));
1964 }
1965 
1993 static inline void
1994 LIN_setSCIInterruptLevel0(uint32_t base, uint32_t intFlags)
1995 {
1996  /* Check the arguments. */
1998  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
1999  0U);
2000 
2001  /* Clear Status Flags */
2002  HW_WR_REG32_RAW((base + CSL_LIN_SCICLEARINTLVL), (HW_RD_REG32_RAW(base + CSL_LIN_SCICLEARINTLVL)|intFlags));
2003 }
2004 
2031 static inline void
2032 LIN_setSCIInterruptLevel1(uint32_t base, uint32_t intFlags)
2033 {
2034  /* Check the arguments. */
2036  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2037  0U);
2038 
2039  /* Set interrupt levels to 1 */
2040  HW_WR_REG32_RAW((base + CSL_LIN_SCISETINTLVL), HW_RD_REG32_RAW(base + CSL_LIN_SCISETINTLVL)|intFlags);
2041 }
2042 
2054 static inline Bool
2056 {
2057  /* Check the arguments. */
2059  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2060  0U);
2061 
2062  /* Read Rx Idle flag and return status */
2063  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_IDLE_MASK) == 0U);
2064 }
2065 
2078 static inline Bool
2080 {
2081  /* Check the arguments. */
2083  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2084  0U);
2085 
2086  /* Read Rx Idle flag and return status */
2087  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_WAKEUP_MASK) == CSL_LIN_SCIFLR_WAKEUP_MASK);
2088 }
2089 
2102 static inline Bool
2104 {
2105  /* Check the arguments. */
2107  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2108  0U);
2109 
2110  /* Read Rx Idle flag and return status */
2111  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_RXWAKE_MASK) == CSL_LIN_SCIFLR_RXWAKE_MASK);
2112 }
2113 
2125 static inline Bool
2127 {
2128  /* Check the arguments. */
2130  DebugP_assert((HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1) & CSL_LIN_SCIGCR1_LINMODE_MASK) ==
2131  0U);
2132 
2133  /* Read Rx Idle flag and return status */
2134  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_BRKDT_MASK) == CSL_LIN_SCIFLR_BRKDT_MASK);
2135 }
2136 
2148 static inline void
2149 LIN_enableModule(uint32_t base)
2150 {
2151  /* Check the arguments. */
2153 
2154  /* Set reset bit. */
2155  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR0), CSL_LIN_SCIGCR0_RESET_MASK, CSL_LIN_SCIGCR0_RESET_SHIFT, CSL_TRUE);
2156 
2157  /* Enable TX and RX pin control functionality. */
2158  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIPIO0), CSL_LIN_SCIPIO0_RXFUNC_MASK, CSL_LIN_SCIPIO0_RXFUNC_SHIFT, CSL_TRUE);
2159  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIPIO0), CSL_LIN_SCIPIO0_TXFUNC_MASK, CSL_LIN_SCIPIO0_TXFUNC_SHIFT, CSL_TRUE);
2160 }
2161 
2173 static inline void
2174 LIN_disableModule(uint32_t base)
2175 {
2176  /* Check the arguments. */
2178 
2179  /* Disable TX and RX pin control functionality. */
2180  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIPIO0), CSL_LIN_SCIPIO0_RXFUNC_MASK, CSL_LIN_SCIPIO0_RXFUNC_SHIFT, CSL_FALSE);
2181  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIPIO0), CSL_LIN_SCIPIO0_TXFUNC_MASK, CSL_LIN_SCIPIO0_TXFUNC_SHIFT, CSL_FALSE);
2182 
2183  /* Reset reset bit. */
2184  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR0), CSL_LIN_SCIGCR0_RESET_MASK, CSL_LIN_SCIGCR0_RESET_SHIFT, CSL_FALSE);
2185 }
2186 
2202 static inline void
2203 LIN_setBaudRatePrescaler(uint32_t base, uint32_t prescaler,
2204  uint32_t divider)
2205 {
2206  /* Check the arguments. */
2208  DebugP_assert(prescaler <= (CSL_LIN_BRSR_SCI_LIN_PSL_MASK | CSL_LIN_BRSR_SCI_LIN_PSH_MASK));
2209  DebugP_assert(divider <= (CSL_LIN_BRSR_M_MASK >> CSL_LIN_BRSR_M_SHIFT));
2210 
2211  /* Set baud rate prescaler and divider. */
2212  HW_WR_REG32_RAW((base + CSL_LIN_BRSR), (prescaler | (divider << CSL_LIN_BRSR_M_SHIFT)));
2213 }
2214 
2224 static inline void
2226 {
2227  /* Check the arguments. */
2229 
2230  /* Enable transmit bit. */
2231  HW_WR_REG32_RAW((base + CSL_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1)|CSL_LIN_SCIGCR1_TXENA_MASK);
2232 }
2233 
2243 static inline void
2245 {
2246  /* Check the arguments. */
2248 
2249  /* Enable transmit bit. */
2250  HW_WR_REG32_RAW((base + CSL_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1)&~(CSL_LIN_SCIGCR1_TXENA_MASK));
2251 }
2252 
2262 static inline void
2264 {
2265  /* Check the arguments. */
2267 
2268  /* Enable receive bit. */
2269  HW_WR_REG32_RAW((base + CSL_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1)|CSL_LIN_SCIGCR1_RXENA_MASK);
2270 }
2271 
2281 static inline void
2283 {
2284  /* Check the arguments. */
2286 
2287  /* Disable receive bit. */
2288  HW_WR_REG32_RAW((base + CSL_LIN_SCIGCR1), HW_RD_REG32_RAW(base + CSL_LIN_SCIGCR1)&~(CSL_LIN_SCIGCR1_RXENA_MASK));
2289 }
2290 
2304 static inline void
2306 {
2307  /* Check the arguments. */
2309 
2310  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SWNRST_MASK, CSL_LIN_SCIGCR1_SWNRST_SHIFT, CSL_TRUE);
2311 }
2312 
2327 static inline void
2329 {
2330  /* Check the arguments. */
2332 
2333  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SWNRST_MASK, CSL_LIN_SCIGCR1_SWNRST_SHIFT, CSL_FALSE);
2334 }
2335 
2348 static inline void
2350 {
2351  /* Check the arguments. */
2353 
2354  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_SWNRST_MASK, CSL_LIN_SCIGCR1_SWNRST_SHIFT, CSL_TRUE);
2355 }
2356 
2368 static inline Bool
2369 LIN_isBusBusy(uint32_t base)
2370 {
2371  /* Check the arguments. */
2373 
2374  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_BUSY_MASK) == CSL_LIN_SCIFLR_BUSY_MASK);
2375 }
2376 
2388 static inline Bool
2389 LIN_isTxBufferEmpty(uint32_t base)
2390 {
2391  /* Check the arguments. */
2393 
2394  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR) & CSL_LIN_SCIFLR_TXEMPTY_MASK) == CSL_LIN_SCIFLR_TXEMPTY_MASK);
2395 }
2396 
2418 static inline void
2419 LIN_enableExtLoopback(uint32_t base, LIN_LoopbackType loopbackType,
2420  LIN_AnalogLoopback path)
2421 {
2422  /* Check the arguments. */
2424 
2425  /* Clear the IO DFT Enable Key */
2426  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
2427 
2428  /* Set loopback Type */
2429  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_LPBENA_MASK, CSL_LIN_IODFTCTRL_LPBENA_SHIFT, loopbackType);
2430 
2431  /* Set Analog Loopback Path */
2432  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_RXPENA_MASK, CSL_LIN_IODFTCTRL_RXPENA_SHIFT, path);
2433 }
2434 
2446 static inline void
2448 {
2449  /* Check the arguments. */
2451 
2452  /* Set loopback Type */
2453  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_LPBENA_MASK, CSL_LIN_IODFTCTRL_LPBENA_SHIFT, CSL_FALSE);
2454 
2455  /* Set Analog Loopback Path */
2456  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_RXPENA_MASK, CSL_LIN_IODFTCTRL_RXPENA_SHIFT, CSL_FALSE);
2457 }
2458 
2468 static inline void
2470 {
2471  /* Check the arguments. */
2473 
2474  /* Set loopback Type */
2475  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_LOOPBACK_MASK, CSL_LIN_SCIGCR1_LOOPBACK_SHIFT, CSL_TRUE);
2476 }
2477 
2487 static inline void
2489 {
2490  /* Check the arguments. */
2492 
2493  /* Set loopback Type */
2494  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_LOOPBACK_MASK, CSL_LIN_SCIGCR1_LOOPBACK_SHIFT, CSL_FALSE);
2495 }
2496 
2530 static inline uint32_t
2532 {
2533  /* Check the arguments. */
2535 
2536  /* Read and return the flag register */
2537  return(HW_RD_REG32_RAW(base + CSL_LIN_SCIFLR));
2538 }
2539 
2551 static inline uint32_t
2553 {
2554  /* Check the arguments. */
2556 
2557  /* Read and return the flag register */
2558  return(HW_RD_REG32_RAW(base + CSL_LIN_SCISETINTLVL));
2559 }
2560 
2596 static inline uint16_t
2598 {
2599  /* Check the arguments. */
2601 
2602  /* Read and return the flag register */
2603  return(HW_RD_REG32_RAW(base + CSL_LIN_SCIINTVECT0) & CSL_LIN_SCIINTVECT0_INTVECT0_MASK);
2604 }
2605 
2641 static inline uint16_t
2643 {
2644  /* Check the arguments. */
2646 
2647  /* Read and return the flag register */
2648  return(HW_RD_REG32_RAW(base + CSL_LIN_SCIINTVECT1) & CSL_LIN_SCIINTVECT1_INTVECT1_MASK);
2649 }
2650 
2659 static inline void
2661 {
2662  /* Check the arguments. */
2664 
2665  /* Read and return the flag register */
2666  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_MBUFMODE_MASK, CSL_LIN_SCIGCR1_MBUFMODE_SHIFT, CSL_TRUE);
2667 }
2668 
2677 static inline void
2679 {
2680  /* Check the arguments. */
2682 
2683  /* Read and return the flag register */
2684  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_MBUFMODE_MASK, CSL_LIN_SCIGCR1_MBUFMODE_SHIFT, CSL_FALSE);
2685 }
2686 
2700 static inline void
2701 LIN_setTransmitDelay(uint32_t base, uint16_t delay)
2702 {
2703  /* Check the arguments. */
2705  DebugP_assert(delay < 8U);
2706 
2707  /* Clear and Set the IO DFT Enable Key */
2708  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
2709 
2710  /* Set the delay value */
2711  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_TXSHIFT_MASK, CSL_LIN_IODFTCTRL_TXSHIFT_SHIFT, delay);
2712 
2713  /* Clear the IO DFT Enable Key */
2714  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
2715 }
2716 
2733 static inline void
2735 {
2736  /* Check the arguments. */
2738 
2739  /* Clear and Set the IO DFT Enable Key */
2740  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, LIN_IO_DFT_KEY);
2741 
2742  /* Set the delay value */
2743  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_PINSAMPLEMASK_MASK, CSL_LIN_IODFTCTRL_PINSAMPLEMASK_SHIFT, mask);
2744 
2745  /* Clear the IO DFT Enable Key */
2746  HW_WR_FIELD32_RAW((base + CSL_LIN_IODFTCTRL), CSL_LIN_IODFTCTRL_IODFTENA_MASK, CSL_LIN_IODFTCTRL_IODFTENA_SHIFT, CSL_FALSE);
2747 }
2748 
2764 static inline void
2766 {
2767  /* Check the arguments. */
2769 
2770  /* Clear and Set the IO DFT Enable Key */
2771  HW_WR_FIELD32_RAW((base + CSL_LIN_SCIGCR1), CSL_LIN_SCIGCR1_CONT_MASK, CSL_LIN_SCIGCR1_CONT_SHIFT, mode);
2772 }
2773 
2788 static inline void
2790 {
2791  /* Check the arguments. */
2793 
2794  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));
2795 }
2796 
2811 static inline void
2813 {
2814  /* Check the arguments. */
2816 
2817  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)));
2818 }
2819 
2834 static inline void
2836 {
2837  /* Check the arguments. */
2839 
2840  HW_WR_REG32_RAW((base + CSL_LIN_LIN_GLB_INT_CLR), (CSL_LIN_LIN_GLB_INT_FLG_INT0_FLG_MASK<<(uint16_t)line));
2841 }
2842 
2859 static inline Bool
2861 {
2862  /* Check the arguments. */
2864 
2865  return((HW_RD_REG32_RAW(base + CSL_LIN_LIN_GLB_INT_FLG) & (CSL_LIN_LIN_GLB_INT_FLG_INT0_FLG_MASK<<(uint16_t)line))
2866  == (CSL_LIN_LIN_GLB_INT_FLG_INT0_FLG_MASK<<(uint16_t)line));
2867 }
2868 
2882 static inline Bool
2883 LIN_getPinStatus(uint32_t base, LIN_PinType pin)
2884 {
2885  /* Check the arguments. */
2887 
2888  return((HW_RD_REG32_RAW(base + CSL_LIN_SCIPIO2) & pin) == pin);
2889 }
2890 
2891 #ifdef __cplusplus
2892 }
2893 #endif
2894 
2895 #endif /* #ifndef LIN_V0_H_ */
2896 
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:2174
LIN_isSCISpaceAvailable
static Bool LIN_isSCISpaceAvailable(uint32_t base)
Check if Space is available in SCI Transmit Buffer.
Definition: lin/v0/lin.h:1644
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:1530
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:2447
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:2469
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:2305
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:2263
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:1460
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:2126
LIN_setTransmitDelay
static void LIN_setTransmitDelay(uint32_t base, uint16_t delay)
Set Transmit Pin Delay.
Definition: lin/v0/lin.h:2701
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:1708
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:2032
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:1359
LIN_disableMultibufferMode
static void LIN_disableMultibufferMode(uint32_t base)
Disable Multi-buffer Mode.
Definition: lin/v0/lin.h:2678
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:1573
LIN_disableIntLoopback
static void LIN_disableIntLoopback(uint32_t base)
Disable Internal Loopback mode for self test.
Definition: lin/v0/lin.h:2488
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:2203
LIN_setSCIInterruptLevel0
static void LIN_setSCIInterruptLevel0(uint32_t base, uint32_t intFlags)
Set interrupt level to 0.
Definition: lin/v0/lin.h:1994
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:2419
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:2660
LIN_disableGlobalInterrupt
static void LIN_disableGlobalInterrupt(uint32_t base, LIN_InterruptLine line)
Disables a LIN global interrupt.
Definition: lin/v0/lin.h:2812
LIN_disableSCISleepMode
static void LIN_disableSCISleepMode(uint32_t base)
Disable SCI Sleep mode.
Definition: lin/v0/lin.h:1506
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:1413
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:1955
LIN_disableDataTransmitter
static void LIN_disableDataTransmitter(uint32_t base)
Disable Transmit Data Transfer.
Definition: lin/v0/lin.h:2244
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:1676
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:1436
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:2055
LIN_setSCICommMode
static void LIN_setSCICommMode(uint32_t base, LIN_SCICommMode mode)
Set SCI communication mode.
Definition: lin/v0/lin.h:1389
HwiP.h
LIN_getSCITxFrameType
static Bool LIN_getSCITxFrameType(uint32_t base)
Gets the SCI Transmit Frame Type.
Definition: lin/v0/lin.h:2079
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:2835
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:1598
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:2860
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:2389
LIN_enableSCIMode
static void LIN_enableSCIMode(uint32_t base)
Enable SCI Mode.
Definition: lin/v0/lin.h:1335
LIN_enterSoftwareReset
static void LIN_enterSoftwareReset(uint32_t base)
Put LIN into its reset state.
Definition: lin/v0/lin.h:2328
LIN_enableGlobalInterrupt
static void LIN_enableGlobalInterrupt(uint32_t base, LIN_InterruptLine line)
Enables a LIN global interrupt.
Definition: lin/v0/lin.h:2789
LIN_setPinSampleMask
static void LIN_setPinSampleMask(uint32_t base, LIN_PinSampleMask mask)
Set Pin Sample Mask.
Definition: lin/v0/lin.h:2734
LIN_getInterruptLine1Offset
static uint16_t LIN_getInterruptLine1Offset(uint32_t base)
Gets the Interrupt Vector Offset for Line 1.
Definition: lin/v0/lin.h:2642
LIN_disableDataReceiver
static void LIN_disableDataReceiver(uint32_t base)
Disable Receive Data Transfer.
Definition: lin/v0/lin.h:2282
LIN_enableSCIInterrupt
static void LIN_enableSCIInterrupt(uint32_t base, uint32_t intFlags)
Enable SCI interrupts.
Definition: lin/v0/lin.h:1878
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:1764
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:2225
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:2369
LIN_exitSCILowPower
static void LIN_exitSCILowPower(uint32_t base)
Exit SCI Local Low-Power Mode.
Definition: lin/v0/lin.h:1550
LIN_getInterruptStatus
static uint32_t LIN_getInterruptStatus(uint32_t base)
Get Interrupt Flags Status.
Definition: lin/v0/lin.h:2531
LIN_getInterruptLine0Offset
static uint16_t LIN_getInterruptLine0Offset(uint32_t base)
Gets the Interrupt Vector Offset for Line 0.
Definition: lin/v0/lin.h:2597
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:1740
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:2349
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:2883
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:2103
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:1833
LIN_getInterruptLevel
static uint32_t LIN_getInterruptLevel(uint32_t base)
Get the Interrupt Level.
Definition: lin/v0/lin.h:2552
LIN_isSCIDataAvailable
static Bool LIN_isSCIDataAvailable(uint32_t base)
Check if new SCI data is ready to be read.
Definition: lin/v0/lin.h:1622
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:2765
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:1485
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:1917
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:2149
LIN_enableSCIModuleErrors
static void LIN_enableSCIModuleErrors(uint32_t base, uint32_t errors)
Enable SCI Module Errors for Testing.
Definition: lin/v0/lin.h:1800
LIN_PinType
LIN_PinType
The following are defines for the pin parameter of the LIN_getPinStatus() function.
Definition: lin/v0/lin.h:345