# LIN Module

The local interconnect network (LIN) API provides a set of functions for configuring and using the LIN serial network protocol. Functions provided allow configuration of the LIN module operating modes and options, ability to send and receive data, and setup interrupt event handling.

group `lin_api`

  Defines

  `LIN_IO_DFT_KEY` (0xAU)

    LIN IO DFT Key.

  `LIN_WAKEUP_KEY` (0xF0U)

    LIN Wakeup Key.

  `LIN_ID0` (0x1U)

    LIN Parity ID0 Mask.

  `LIN_ID1` (0x2U)

    LIN Parity ID1 Mask.

  `LIN_ID2` (0x4U)

    LIN Parity ID2 Mask.

  `LIN_ID3` (0x8U)

    LIN Parity ID3 Mask.

  `LIN_ID4` (0x10U)

    LIN Parity ID4 Mask.

  `LIN_ID5` (0x20U)

    LIN Parity ID5 Mask.

  `LIN_INT_WAKEUP` (0x00000002U)

    Wakeup.

  `LIN_INT_TO` (0x00000010U)

    Time out.

  `LIN_INT_TOAWUS` (0x00000040U)

    Time out after wakeup signal.

  `LIN_INT_TOA3WUS` (0x00000080U)

    Time out after 3 wakeup signals.

  `LIN_INT_TX` (0x00000100U)

    Transmit buffer ready.

  `LIN_INT_RX` (0x00000200U)

    Receive buffer ready.

  `LIN_INT_ID` (0x00002000U)

    Received matching identifier.

  `LIN_INT_PE` (0x01000000U)

    Parity error.

  `LIN_INT_OE` (0x02000000U)

    Overrun error.

  `LIN_INT_FE` (0x04000000U)

    Framing error.

  `LIN_INT_NRE` (0x08000000U)

    No response error.

  `LIN_INT_ISFE` (0x10000000U)

    Inconsistent sync field error.

  `LIN_INT_CE` (0x20000000U)

    Checksum error.

  `LIN_INT_PBE` (0x40000000U)

    Physical bus error.

  `LIN_INT_BE` (0x80000000U)

    Bit error.

  `LIN_INT_ALL` (0xFF0023D2U)

    All interrupts.

  `LIN_FLAG_BREAK` (LIN_SCIFLR_BRKDT)

    Break-Detect.

  `LIN_FLAG_WAKEUP` (LIN_SCIFLR_WAKEUP)

    Wakeup.

  `LIN_FLAG_IDLE` (LIN_SCIFLR_IDLE)

    Bus Idle.

  `LIN_FLAG_BUSY` (LIN_SCIFLR_BUSY)

    Busy.

  `LIN_FLAG_TO` (LIN_SCIFLR_TIMEOUT)

    Time out.

  `LIN_FLAG_TOAWUS` (LIN_SCIFLR_TOAWUS)

    signal

    Time out after wakeup

  `LIN_FLAG_TOA3WUS` (LIN_SCIFLR_TOA3WUS)

    signals

    Time out after 3 wakeup

  `LIN_FLAG_TXRDY` (LIN_SCIFLR_TXRDY)

    Transmit Buffer ready.

  `LIN_FLAG_RXRDY` (LIN_SCIFLR_RXRDY)

    Receive Buffer ready.

  `LIN_FLAG_TXWAKE` (LIN_SCIFLR_TXWAKE)

    Method Select.

    Transmitter Wakeup

  `LIN_FLAG_TXEMPTY` (LIN_SCIFLR_TXEMPTY)

    Transmitter Empty.

  `LIN_FLAG_RXWAKE` (LIN_SCIFLR_RXWAKE)

    Receiver Wakeup detect.

  `LIN_FLAG_TXID` (LIN_SCIFLR_IDTXFLAG)

    ID on Transmit.

  `LIN_FLAG_RXID` (LIN_SCIFLR_IDRXFLAG)

    ID on Receive.

  `LIN_FLAG_PE` (LIN_SCIFLR_PE)

    Parity Error.

  `LIN_FLAG_OE` (LIN_SCIFLR_OE)

    Overrun Error.

  `LIN_FLAG_FE` (LIN_SCIFLR_FE)

    Framing Error.

  `LIN_FLAG_NRE` (LIN_SCIFLR_NRE)

    No-Response Error.

  `LIN_FLAG_ISFE` (LIN_SCIFLR_ISFE)

    Error.

    Inconsistent Sync Field

  `LIN_FLAG_CE` (LIN_SCIFLR_CE)

    Checksum Error.

  `LIN_FLAG_PBE` (LIN_SCIFLR_PBE)

    Physical Bus Error.

  `LIN_FLAG_BE` (LIN_SCIFLR_BE)

    Bit Error.

  `LIN_VECT_NONE` (0x00)

    No Interrupt.

  `LIN_VECT_WAKEUP` (0x01)

    Wakeup.

  `LIN_VECT_ISFE` (0x02)

    Inconsistent-sync-field Error.

  `LIN_VECT_PE` (0x03)

    Parity Error.

  `LIN_VECT_ID` (0x04)

    ID Interrupt.

  `LIN_VECT_PBE` (0x05)

    Physical Bus Error.

  `LIN_VECT_FE` (0x06)

    Frame Error.

  `LIN_VECT_BREAK` (0x07)

    Break detect.

  `LIN_VECT_CE` (0x08)

    Checksum Error.

  `LIN_VECT_OE` (0x09)

    Overrun Error.

  `LIN_VECT_BE` (0x0A)

    Bit Error.

  `LIN_VECT_RX` (0x0B)

    Receive Interrupt.

  `LIN_VECT_TX` (0x0C)

    Transmit Interrupt.

  `LIN_VECT_NRE` (0x0D)

    No-response Error.

  `LIN_VECT_TOAWUS` (0x0E)

    Timeout after wakeup signal.

  `LIN_VECT_TOA3WUS` (0x0F)

    Timeout after 3 wakeup signals.

  `LIN_VECT_TO` (0x10)

    Timeout (Bus Idle)

  `LIN_ALL_ERRORS` (0xF0000000U)

    All module errors.

  `LIN_BIT_ERROR` (0x80000000U)

    Bit Error.

  `LIN_BUS_ERROR` (0x40000000U)

    Physical Bus Error.

  `LIN_CHECKSUM_ERROR` (0x20000000U)

    Checksum Error.

  `LIN_ISF_ERROR` (0x10000000U)

    Inconsistent Synch Field Error.

  `LIN_SCI_ALL_ERRORS` (0x7000000U)

    All module errors.

  `LIN_SCI_FRAME_ERROR` (0x4000000U)

    Frame Error.

  `LIN_SCI_PARITY_ERROR` (0x2000000U)

    Parity Error.

  `LIN_SCI_BREAK_ERROR` (0x1000000U)

    Break Detect Error.

  `LIN_SCI_INT_BREAK` (0x1U)

    Break Detect.

  `LIN_SCI_INT_WAKEUP` (0x2U)

    Wakeup.

  `LIN_SCI_INT_TX` (0x100U)

    Transmit Buffer.

  `LIN_SCI_INT_RX` (0x200U)

    Receive Buffer.

  `LIN_SCI_INT_TX_DMA` (0x10000U)

    DMA Transmit.

  `LIN_SCI_INT_RX_DMA` (0x20000U)

    DMA Receive.

  `LIN_SCI_INT_PARITY` (0x1000000U)

    Parity Error.

  `LIN_SCI_INT_OVERRUN` (0x2000000U)

    Overrun Error.

  `LIN_SCI_INT_FRAME` (0x4000000U)

    Framing Error.

  `LIN_SCI_INT_ALL` (0x7000303U)

    All Interrupts.

  Enums

  enum `LIN_LoopbackType`

    The following are defines for the type parameter of the LIN_enableExtLoopback() function.

    Values:

    enumerator `LIN_LOOPBACK_DIGITAL` = 0U

      Digital Loopback Mode.

    enumerator `LIN_LOOPBACK_ANALOG` = 2U

      Analog Loopback Mode.

  enum `LIN_AnalogLoopback`

    The following are defines for the path parameter of the LIN_enableExtLoopback() function.

    Values:

    enumerator `LIN_ANALOG_LOOP_NONE` = 0U

      Default path for digital loopback mode.

    enumerator `LIN_ANALOG_LOOP_TX` = 0U

      Analog loopback through transmit pin.

    enumerator `LIN_ANALOG_LOOP_RX` = 1U

      Analog loopback through receive pin.

  enum `LIN_CommMode`

    The following are defines for the mode parameter of the LIN_setCommMode() function.

    Values:

    enumerator `LIN_COMM_LIN_USELENGTHVAL` = 0x0000U

      Use the length indicated in the LENGTH field of the SCIFORMAT register.

    enumerator `LIN_COMM_LIN_ID4ID5LENCTL` = 0x0001U

      Use ID4 and ID5 to convey the length.

  enum `LIN_SCICommMode`

    The following are defines for the mode parameter of the LIN_setSCICommMode() function.

    Values:

    enumerator `LIN_COMM_SCI_IDLELINE` = 0x0000U

      Idle-line mode is used.

    enumerator `LIN_COMM_SCI_ADDRBIT` = 0x0001U

      Address bit mode is used.

  enum `LIN_LINMode`

    The following are defines for the mode parameter of the LIN_setLINMode() function.

    Values:

    enumerator `LIN_MODE_LIN_SLAVE` = 0x0000U

      The node is in slave mode.

    enumerator `LIN_MODE_LIN_MASTER` = 0x0020U

      The node is in master mode.

  enum `LIN_InterruptLine`

    The following are defines for the line parameter of the LIN_enableGlobalInterrupt(), LIN_disableGlobalInterrupt(), LIN_clearGlobalInterruptStatus(), and LIN_getGlobalInterruptStatus() functions.

    Values:

    enumerator `LIN_INTERRUPT_LINE0` = 0x0U

      Interrupt line 0.

    enumerator `LIN_INTERRUPT_LINE1` = 0x1U

      Interrupt line 1.

  enum `LIN_MessageFilter`

    The following are defines for the type parameter of the LIN_setMessageFiltering() function.

    Values:

    enumerator `LIN_MSG_FILTER_IDBYTE` = 0x0U

      LIN Message ID Byte Filtering.

    enumerator `LIN_MSG_FILTER_IDSLAVE` = 0x1U

      Slave Task ID Byte Filtering.

  enum `LIN_ChecksumType`

    The following are defines for the type parameter of the LIN_setChecksumType() function.

    Values:

    enumerator `LIN_CHECKSUM_CLASSIC` = 0x0U

      Checksum Classic.

    enumerator `LIN_CHECKSUM_ENHANCED` = 0x1U

      Checksum Enhanced.

  enum `LIN_DebugMode`

    The following are defines for the mode parameter of the LIN_setDebugSuspendMode() function.

    Values:

    enumerator `LIN_DEBUG_FROZEN` = 0x0U

      Freeze module during debug.

    enumerator `LIN_DEBUG_COMPLETE` = 0x1U

      Complete Tx/Rx before Freezing.

  enum `LIN_PinSampleMask`

    The following are defines for the mask parameter of the LIN_setPinSampleMask() function.

    Values:

    enumerator `LIN_PINMASK_NONE` = 0x0U

      No Pin Mask.

    enumerator `LIN_PINMASK_CENTER` = 0x1U

      Invert Tx Pin value at T-bit center.

    enumerator `LIN_PINMASK_CENTER_SCLK` = 0x2U

      Invert Tx Pin value at T-bit center + SCLK.

    enumerator `LIN_PINMASK_CENTER_2SCLK` = 0x3U

      Invert Tx Pin value at T-bit center + 2 SCLK.

  enum `LIN_SCIParityType`

    The following are defines for the parity parameter of the LIN_enableSCIParity() function.

    Values:

    enumerator `LIN_SCI_PAR_ODD` = 0x0U

      Odd parity.

    enumerator `LIN_SCI_PAR_EVEN` = 0x1U

      Even parity.

  enum `LIN_SCIStopBits`

    The following are defines for the number parameter of the LIN_setSCIStopBits() function.

    Values:

    enumerator `LIN_SCI_STOP_ONE` = 0x0U

      Use One Stop bit.

    enumerator `LIN_SCI_STOP_TWO` = 0x1U

      Use Two Stop bits.

  enum `LIN_PinType`

    The following are defines for the pin parameter of the LIN_getPinStatus() function.

    Values:

    enumerator `LIN_PINTYPE_TX` = 0x4U

      Transmit Pin.

    enumerator `LIN_PINTYPE_RX` = 0x2U

      Receive Pin.

  Functions

  void `LIN_setLINMode`(uint32_t base, LIN_LINMode mode)

    Sets the LIN mode

    In LIN mode only, this function sets the mode of the LIN mode to either slave or master. The

    mode parameter should be passed a value of LIN_MODE_LIN_SLAVE or LIN_MODE_LIN_MASTER to configure the mode of the LIN module specified by base.
    Parameters

      - `base`: is the LIN module base address

      - `mode`: is the desired mode (slave or master)

    Return

      None.

  void `LIN_setMaximumBaudRate`(uint32_t base, uint32_t clock)

    Set Maximum Baud Rate Prescaler

    In LIN mode only, this function is used to set the maximum baud rate prescaler used during synchronization phase of a slave module if the ADAPT bit is set. The maximum baud rate prescaler is used by the wakeup and idle timer counters for a constant 4 second expiration time relative to a 20kHz rate.

    Parameters

      - `base`: is the LIN module base address

      - `clock`: is the device system clock (Hz)

    Note

      Use LIN_enableAutomaticBaudrate() to set the ADAPT bit and enable automatic bit rate mod detection.

    Return

      None.

  void `LIN_setMessageFiltering`(uint32_t base, LIN_MessageFilter type)

    Set Message filtering Type

    In LIN mode only, this function sets the message filtering type. The

    type parameter can be one of the following values:

    - LIN_MSG_FILTER_IDBYTE - Filtering uses LIN message ID Byte

    - LIN_MSG_FILTER_IDSLAVE - Filtering uses the Slave Task ID Byte

    Parameters

      - `base`: is the LIN module base address

      - `type`: is the mask filtering comparison type

    Return

      None.

  void `LIN_enableParity`(uint32_t base)

    Enable Parity mode.

    In LIN mode only, this function enables the parity check.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_disableParity`(uint32_t base)

    Disable Parity mode.

    In LIN mode only, this function disables the parity check.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  uint16_t `LIN_generateParityID`(uint16_t identifier)

    Generate Parity Identifier

    In LIN mode only, this function generates the identifier parity bits and appends them to the identifier.

    Parameters

      - `identifier`: is the LIN header ID byte

    Note

      An ID must be generated with parity before header generation in LIN master mode when parity is enabled using the function LIN_enableParity().

    Return

      Returns the identifier appended with parity bits.

  void `LIN_setIDByte`(uint32_t base, uint16_t identifier)

    Set ID Byte

    In LIN mode only, this function sets the message ID byte. In master mode, writing to this ID initiates a header transmission. In slave task, this ID is used for message filtering when HGENCTRL is 0.

    Parameters

      - `base`: is the LIN module base address

      - `identifier`: is the LIN header ID byte

    Return

      None.

  void `LIN_setIDSlaveTask`(uint32_t base, uint16_t identifier)

    Set ID-SlaveTask

    In LIN mode only, this function sets the identifier to which the received ID of an incoming Header will be compared in order to decide whether a RX response, a TX response, or no action is required.

    Parameters

      - `base`: is the LIN module base address

      - `identifier`: is the Received ID comparison ID

    Return

      None.

  void `LIN_sendWakeupSignal`(uint32_t base)

    Send LIN wakeup signal

    In LIN mode only, this function sends the LIN wakeup signal to terminate the sleep mode of any LIN node connected to the bus.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_enterSleep`(uint32_t base)

    Enter LIN Sleep Mode.

    In LIN mode only, this function puts the LIN module into a low-power, sleep mode. This can also be called to forcefully enter sleep when there is no activity on the bus.

    Parameters

      - `base`: is the LIN module base address

    Note

      If this function is called while the receiver is actively receiving data and the wakeup interrupt is disabled, then the module will delay sleep mode from being entered until completion of reception.

    Return

      None.

  void `LIN_sendChecksum`(uint32_t base)

    Send Checksum Byte

    In LIN mode only, this function enables the transmitter with extended frames to send a checkbyte.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_triggerChecksumCompare`(uint32_t base)

    Trigger Checksum Compare

    In LIN mode only, this function enables the receiver for extended frames to trigger a checksum compare.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  bool `LIN_isTxReady`(uint32_t base)

    Check Tx buffer ready flag

    In LIN mode only, this function checks to see if the Tx ready flag is set indicating that the Tx buffer(s) is/are ready to get another character.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if the TX ready flag is set, else returns false

  void `LIN_setFrameLength`(uint32_t base, uint16_t length)

    Set LIN Frame Length

    In LIN mode only, this function sets the number of bytes in the response field.

    Parameters

      - `base`: is the LIN module base address

      - `length`: is the number of bytes.

    The length parameter must be in a range between 1 and 8.

    Return

      None.

  void `LIN_setCommMode`(uint32_t base, LIN_CommMode mode)

    Set LIN communication mode

    In LIN mode only, this function is used to choose how the length of data is conveyed. This choice relates to the version of LIN being used. The

    mode parameter can have one of two values:

    - LIN_COMM_LIN_USELENGTHVAL will use the length set with the LIN_setFrameLength() function.

    - LIN_COMM_LIN_ID4ID5LENCTL will use ID4 and ID5 for length control.

    Parameters

      - `base`: is the LIN module base address

      - `mode`: is the selected communication mode

    Return

      None.

  void `LIN_setTxMask`(uint32_t base, uint16_t mask)

    Sets the transmit ID mask

    In LIN mode only, this function sets the mask used for filtering an incoming ID message to determine if the TX ID flag should be set.

    Parameters

      - `base`: is the LIN module base address

      - `mask`: is the mask value to be set

    Return

      None.

  void `LIN_setRxMask`(uint32_t base, uint16_t mask)

    Sets the receive ID mask

    In LIN mode only, this function sets the mask used for filtering an incoming ID message to determine if the ID RX flag should be set.

    Parameters

      - `base`: is the LIN module base address

      - `mask`: is the mask value to be set

    Return

      None.

  uint16_t `LIN_getTxMask`(uint32_t base)

    Gets the transmit ID mask

    In LIN mode only, this function gets the mask used for filtering an incoming ID message to determine if the TX ID flag should be set.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns the Transmit ID Mask.

  uint16_t `LIN_getRxMask`(uint32_t base)

    Gets the receive ID mask

    In LIN mode only, this function gets the mask used for filtering an incoming ID message to determine if the ID RX flag should be set.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns the Receive ID Mask.

  bool `LIN_isRxReady`(uint32_t base)

    Check if Rx data is ready

    In LIN mode only, checks to see if the Rx ready bit is set indicating that a valid message frame has been received.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if the Rx ready flag is set, else returns false.

  uint16_t `LIN_getRxIdentifier`(uint32_t base)

    Get last received identifier

    In LIN mode only, this function gets the last received identifier.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns the Received Identifier.

  bool `LIN_isTxMatch`(uint32_t base)

    Checks for Tx ID Match Received

    In LIN mode only, this function checks if an ID is received with a TX match and no ID-parity error.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if a valid ID is matched, else returns false.

  bool `LIN_isRxMatch`(uint32_t base)

    Checks for Rx ID Match Received

    In LIN mode only, this function checks if an ID is received with a RX match and no ID-parity error.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if a valid ID is matched, else returns false.

  void `LIN_enableInterrupt`(uint32_t base, uint32_t intFlags)

    Enable interrupts

    In LIN mode only, this function enables the interrupts for the specified interrupt sources.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of the interrupt sources to be enabled.

    The intFlags parameter can be set to the following value to set all the flag bits:

    - LIN_INT_ALL - All Interrupts

    To set individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_INT_WAKEUP - Wakeup

    - LIN_INT_TO - Time out

    - LIN_INT_TOAWUS - Time out after wakeup signal

    - LIN_INT_TOA3WUS - Time out after 3 wakeup signals

    - LIN_INT_TX - Transmit buffer ready

    - LIN_INT_RX - Receive buffer ready

    - LIN_INT_ID - Received matching identifier

    - LIN_INT_PE - Parity error

    - LIN_INT_OE - Overrun error

    - LIN_INT_FE - Framing error

    - LIN_INT_NRE - No response error

    - LIN_INT_ISFE - Inconsistent sync field error

    - LIN_INT_CE - Checksum error

    - LIN_INT_PBE - Physical bus error

    - LIN_INT_BE - Bit error

    Return

      None.

  void `LIN_disableInterrupt`(uint32_t base, uint32_t intFlags)

    Disable interrupts

    In LIN mode only, this function disables the interrupts for the specified interrupt sources.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of the interrupt sources to be disabled.

    The intFlags parameter can be set to the following value to disable all the flag bits:

    - LIN_INT_ALL - All Interrupts

    To disable individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_INT_WAKEUP - Wakeup

    - LIN_INT_TO - Time out

    - LIN_INT_TOAWUS - Time out after wakeup signal

    - LIN_INT_TOA3WUS - Time out after 3 wakeup signals

    - LIN_INT_TX - Transmit buffer ready

    - LIN_INT_RX - Receive buffer ready

    - LIN_INT_ID - Received matching identifier

    - LIN_INT_PE - Parity error

    - LIN_INT_OE - Overrun error

    - LIN_INT_FE - Framing error

    - LIN_INT_NRE - No response error

    - LIN_INT_ISFE - Inconsistent sync field error

    - LIN_INT_CE - Checksum error

    - LIN_INT_PBE - Physical bus error

    - LIN_INT_BE - Bit error

    Return

      None.

  void `LIN_clearInterruptStatus`(uint32_t base, uint32_t intFlags)

    Clear interrupt status

    In LIN mode only, this function clears the specified status flags.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of the interrupt sources to be cleared.

    The intFlags parameter can be set to the following value to clear all the flag bits:

    - LIN_INT_ALL - All Interrupts

    To clear individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_INT_WAKEUP - Wakeup

    - LIN_INT_TO - Time out

    - LIN_INT_TOAWUS - Time out after wakeup signal

    - LIN_INT_TOA3WUS - Time out after 3 wakeup signals

    - LIN_INT_TX - Transmit buffer ready

    - LIN_INT_RX - Receive buffer ready

    - LIN_INT_ID - Received matching identifier

    - LIN_INT_PE - Parity error

    - LIN_INT_OE - Overrun error

    - LIN_INT_FE - Framing error

    - LIN_INT_NRE - No response error

    - LIN_INT_ISFE - Inconsistent sync field error

    - LIN_INT_CE - Checksum error

    - LIN_INT_PBE - Physical bus error

    - LIN_INT_BE - Bit error

    Return

      None.

  void `LIN_setInterruptLevel0`(uint32_t base, uint32_t intFlags)

    Set interrupt level to 0

    In LIN mode only, this function sets the specified interrupt sources to level 0.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of interrupt sources to be configured

    The intFlags parameter can be set to the following value to set all the flag bits:

    - LIN_INT_ALL - All Interrupts

    To set individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_INT_WAKEUP - Wakeup

    - LIN_INT_TO - Time out

    - LIN_INT_TOAWUS - Time out after wakeup signal

    - LIN_INT_TOA3WUS - Time out after 3 wakeup signals

    - LIN_INT_TX - Transmit buffer ready

    - LIN_INT_RX - Receive buffer ready

    - LIN_INT_ID - Received matching identifier

    - LIN_INT_PE - Parity error

    - LIN_INT_OE - Overrun error

    - LIN_INT_FE - Framing error

    - LIN_INT_NRE - No response error

    - LIN_INT_ISFE - Inconsistent sync field error

    - LIN_INT_CE - Checksum error

    - LIN_INT_PBE - Physical bus error

    - LIN_INT_BE - Bit error

    Return

      None.

  void `LIN_setInterruptLevel1`(uint32_t base, uint32_t intFlags)

    Set interrupt level to 1

    In LIN mode only, this function sets the specified interrupt sources to level 1.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of interrupt sources to be configured

    The intFlags parameter can be set to the following value to set all the flag bits:

    - LIN_INT_ALL - All Interrupts

    To set individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_INT_WAKEUP - Wakeup

    - LIN_INT_TO - Time out

    - LIN_INT_TOAWUS - Time out after wakeup signal

    - LIN_INT_TOA3WUS - Time out after 3 wakeup signals

    - LIN_INT_TX - Transmit buffer ready

    - LIN_INT_RX - Receive buffer ready

    - LIN_INT_ID - Received matching identifier

    - LIN_INT_PE - Parity error

    - LIN_INT_OE - Overrun error

    - LIN_INT_FE - Framing error

    - LIN_INT_NRE - No response error

    - LIN_INT_ISFE - Inconsistent sync field error

    - LIN_INT_CE - Checksum error

    - LIN_INT_PBE - Physical bus error

    - LIN_INT_BE - Bit error

    Return

      None.

  void `LIN_enableModuleErrors`(uint32_t base, uint32_t errors)

    Enable Module Errors for Testing

    In LIN mode only, this function enables the specified errors in the module for testing. The

    errors parameter can be a logical OR-ed result of the following values or LIN_ALL_ERRORS can be used to enable all of them:

    - LIN_BIT_ERROR - Simulates a bit error

    - LIN_BUS_ERROR - Simulates a physical bus error

    - LIN_CHECKSUM_ERROR - Simulates a checksum error

    - LIN_ISF_ERROR - Simulates an inconsistent synch field error

    Parameters

      - `base`: is the LIN module base address

      - `errors`: is the specified errors to be enabled

    Note

      To disable these errors, use the LIN_disableModuleErrors() function.

    Return

      None.

  void `LIN_disableModuleErrors`(uint32_t base, uint32_t errors)

    Disable Module Errors for Testing

    In LIN mode only, this function disables the specified errors in the module for testing. The

    errors parameter can be a logical OR-ed result of the following values or LIN_ALL_ERRORS can be used to disable all of them:

    - LIN_BIT_ERROR - Simulates a bit error

    - LIN_BUS_ERROR - Simulates a physical bus error

    - LIN_CHECKSUM_ERROR - Simulates a checksum error

    - LIN_ISF_ERROR - Simulates an inconsistent synch field error

    Parameters

      - `base`: is the LIN module base address

      - `errors`: is the specified errors to be disabled

    Return

      None.

  void `LIN_enableAutomaticBaudrate`(uint32_t base)

    Enable Automatic Baudrate Adjustment

    In LIN mode only, this function enables the automatic baudrate adjustment mode during the detection of the Synch Field.

    Parameters

      - `base`: is the LIN module base address

    Note

      The baudrate selection register will be updated automatically by a slave node if this mode is enabled.

    Return

      None.

  void `LIN_disableAutomaticBaudrate`(uint32_t base)

    Disable Automatic Baudrate Adjustment

    In LIN mode only, this function disables the automatic baudrate adjustment mode during the detection of the Synch Field. This results in a fixed baud rate.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_stopExtendedFrame`(uint32_t base)

    Stops LIN Extended Frame Communication

    In LIN mode only, this function stops the extended frame communication. Once stopped, the bit is automatically cleared.

    Parameters

      - `base`: is the LIN module base address

    Note

      This function can only be called during extended frame communication.

    Return

      None.

  void `LIN_setChecksumType`(uint32_t base, LIN_ChecksumType type)

    Set Checksum Type

    In LIN mode only, this function sets the checksum type. The

    type parameter can be one of the following two values:

    - LIN_CHECKSUM_CLASSIC - Checksum Classic

    - LIN_CHECKSUM_ENHANCED - Checksum Enhanced

    Parameters

      - `base`: is the LIN module base address

      - `type`: is the checksum type

    Return

      None.

  void `LIN_setSyncFields`(uint32_t base, uint16_t syncBreak, uint16_t delimiter)

    Set Sync Break Extend and Delimiter

    In LIN mode only, this function sets the 3-bit sync break extend value and the 2-bit sync delimiter compare value.

    Parameters

      - `base`: is the LIN module base address

      - `syncBreak`: is the sync break extend value

      - `delimiter`: is the sync delimiter value

    The break parameter can be a value between 0 to 7. Details:

    - 0 - Sync Break has no additional T-bit

    - 1 - Sync Break has 1 additional T-bit

    - …

    - 7 - Sync Break has 7 additional T-bits

    The delimiter parameter can be a value between 1 to 4. Details:

    - 1 - Delimiter has 1 T-bit

    - 2 - Delimiter has 2 T-bits

    - 3 - Delimiter has 3 T-bits

    - 4 - Delimiter has 4 T-bits

    Return

      None.

  void `LIN_enableSCIMode`(uint32_t base)

    Enable SCI Mode

    This function enables the LIN peripheral to function as a SCI.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_disableSCIMode`(uint32_t base)

    Disable SCI Mode

    This function disables the SCI mode of the LIN peripheral.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_setSCICommMode`(uint32_t base, LIN_SCICommMode mode)

    Set SCI communication mode

    In SCI mode only, this function is used to select between idle-line mode and address-bit mode. The

    mode parameter can have one of the following values:

    - LIN_COMM_SCI_IDLELINE - Idle-line mode.

    - LIN_COMM_SCI_ADDRBIT - Address-bit mode.

    Parameters

      - `base`: is the LIN module base address

      - `mode`: is the selected communication mode

    Return

      None.

  void `LIN_enableSCIParity`(uint32_t base, LIN_SCIParityType parity)

    Enable SCI Parity mode.

    In SCI mode only, this function enables the parity check and sets the parity type. The

    parity parameter can one of the following values:

    - LIN_SCI_PAR_ODD - Sets Odd parity

    - LIN_SCI_PAR_EVEN - Sets Even parity

    Parameters

      - `base`: is the LIN module base address

      - `parity`: is the SCI parity type

    Return

      None.

  void `LIN_disableSCIParity`(uint32_t base)

    Disable SCI Parity mode.

    In SCI mode only, this function disables the parity check.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_setSCIStopBits`(uint32_t base, LIN_SCIStopBits number)

    Set the number of stop bits for SCI

    In SCI mode only, this function sets the number of stop bits transmitted. The

    number parameter can be one of the following values:

    - LIN_SCI_STOP_ONE - Set one stop bit

    - LIN_SCI_STOP_TWO - Set two stop bits

    Parameters

      - `base`: is the LIN module base address

      - `number`: is the number of stop bits

    Return

      None.

  void `LIN_enableSCISleepMode`(uint32_t base)

    Enable SCI Sleep mode.

    In SCI mode only, this function enables the receive sleep mode functionality.

    Parameters

      - `base`: is the LIN module base address

    Note

      The receiver still operates when the sleep mode is enabled, however, RXRDY is updated and SCIRD is loaded with new data only when an address frame is detected.

    Return

      None.

  void `LIN_disableSCISleepMode`(uint32_t base)

    Disable SCI Sleep mode.

    In SCI mode only, this function disables the receive sleep mode functionality.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_enterSCILowPower`(uint32_t base)

    Enter SCI Local Low-Power Mode

    In SCI mode only, this function enters the SCI local low-power mode.

    Parameters

      - `base`: is the LIN module base address

    Note

      If this function is called while the receiver is actively receiving data and the wakeup interrupt is disabled, then the module will delay sleep mode from being entered until completion of reception.

    Return

      None.

  void `LIN_exitSCILowPower`(uint32_t base)

    Exit SCI Local Low-Power Mode

    In SCI mode only, this function exits the SCI local low-power mode.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_setSCICharLength`(uint32_t base, uint16_t numBits)

    Set SCI character length

    In SCI mode only, this function sets the number of bits per character.

    Parameters

      - `base`: is the LIN module base address

      - `numBits`: is the number of bits per character.

    The numBits parameter must be in a range between 1 and 8.

    Return

      None.

  void `LIN_setSCIFrameLength`(uint32_t base, uint16_t length)

    Set SCI Frame Length

    In SCI mode only, this function sets the number of characters in the response field.

    Parameters

      - `base`: is the LIN module base address

      - `length`: is the number of characters

    The length parameter must be in a range between 1 and 8.

    Return

      None.

  bool `LIN_isSCIDataAvailable`(uint32_t base)

    Check if new SCI data is ready to be read

    In SCI mode only, this function checks to see if the Rx ready bit is set indicating that a new data has been received.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if the Rx ready flag is set, else returns false.

  bool `LIN_isSCISpaceAvailable`(uint32_t base)

    Check if Space is available in SCI Transmit Buffer

    In SCI mode only, this function checks to see if the Tx ready flag is set indicating that the Tx buffer(s) is/are ready to get another character.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if the TX ready flag is set, else returns false

  uint16_t `LIN_readSCICharNonBlocking`(uint32_t base, bool emulation)

    Reads a SCI character without Blocking

    In SCI mode only, this function gets the byte of data received. The

    emulation parameter can have one of the following values:

    - true - Emulator is being used, the RXRDY flag won’t be cleared

    - false - Emulator isn’t being used, the RXRDY flag will be cleared automatically on read

    Parameters

      - `base`: is the LIN module base address

      - `emulation`: sets whether the data is being read by an emulator or not

    Note

      1. If the SCI receives data that is fewer than 8 bits in length, the data is left-justified and padded with trailing zeros.

      2. To determine if new data is available to read, use the function LIN_isSCIDataAvailable().

    Return

      Returns the received data.

  uint16_t `LIN_readSCICharBlocking`(uint32_t base, bool emulation)

    Reads a SCI character with Blocking

    In SCI mode only, this function gets the byte of data received. If new data isn’t available, this function will wait until new data arrives. The

    emulation parameter can have one of the following values:

    - true - Emulator is being used, the RXRDY flag won’t be cleared

    - false - Emulator isn’t being used, the RXRDY flag will be cleared automatically on read

    Parameters

      - `base`: is the LIN module base address

      - `emulation`: sets whether the data is being read by an emulator or not

    Note

      If the SCI receives data that is fewer than 8 bits in length, the data is left-justified and padded with trailing zeros.

    Return

      Returns the received data.

  void `LIN_writeSCICharNonBlocking`(uint32_t base, uint16_t data)

    Sends a SCI character without blocking

    In SCI mode only, this function sets the byte of data to be transmitted without blocking.

    Parameters

      - `base`: is the LIN module base address

      - `data`: is the byte of data to be transmitted

    Note

      The transmit ready flag gets set when this buffer is ready to be loaded with another byte of data. Use LIN_isSCISpaceAvailable() to determine if space is available to write another character.

    Return

      None.

  void `LIN_writeSCICharBlocking`(uint32_t base, uint16_t data)

    Sends a SCI character with blocking

    In SCI mode only, this function sets the byte of data to be transmitted with blocking functionality. If the buffer isn’t ready to get new data written to, this function will wait until space is available.

    Parameters

      - `base`: is the LIN module base address

      - `data`: is the byte of data to be transmitted

    Return

      None.

  void `LIN_enableSCIModuleErrors`(uint32_t base, uint32_t errors)

    Enable SCI Module Errors for Testing

    In SCI mode only, this function enables the specified errors in the module for testing. The

    errors parameter can be a logical OR-ed result of the following values or LIN_SCI_ALL_ERRORS can be used to enable all of them:

    - LIN_SCI_FRAME_ERROR - Simulates a frame error

    - LIN_SCI_PARITY_ERROR - Simulates a parity error

    - LIN_SCI_BREAK_ERROR - Simulates a break detect error

    Parameters

      - `base`: is the LIN module base address

      - `errors`: is the specified errors to be enabled

    Note

      To disable these errors, use the LIN_disableSCIModuleErrors() function.

    Return

      None.

  void `LIN_disableSCIModuleErrors`(uint32_t base, uint32_t errors)

    Disable SCI Module Errors for Testing

    In SCI mode only, this function disables the specified errors in the module for testing. The

    errors parameter can be a logical OR-ed result of the following values or LIN_SCI_ALL_ERRORS can be used to enable all of them:

    - LIN_SCI_FRAME_ERROR - Simulates a frame error

    - LIN_SCI_PARITY_ERROR - Simulates a parity error

    - LIN_SCI_BREAK_ERROR - Simulates a break detect error

    Parameters

      - `base`: is the LIN module base address

      - `errors`: is the specified errors to be disabled

    Return

      None.

  void `LIN_enableSCIInterrupt`(uint32_t base, uint32_t intFlags)

    Enable SCI interrupts

    In SCI mode only, this function enables the interrupts for the specified interrupt sources.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of the interrupt sources to be enabled.

    The intFlags parameter can be set to the following value to set all the flag bits:

    - LIN_SCI_INT_ALL - All Interrupts

    To set individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_SCI_INT_BREAK - Break Detect

    - LIN_SCI_INT_WAKEUP - Wakeup

    - LIN_SCI_INT_TX - Transmit Buffer

    - LIN_SCI_INT_RX - Receive Buffer

    - LIN_SCI_INT_TX_DMA - DMA Transmit

    - LIN_SCI_INT_RX_DMA - DMA Receive

    - LIN_SCI_INT_PARITY - Parity Error

    - LIN_SCI_INT_OVERRUN - Overrun Error

    - LIN_SCI_INT_FRAME - Framing Error

    Return

      None.

  void `LIN_disableSCIInterrupt`(uint32_t base, uint32_t intFlags)

    Disable SCI interrupts

    In SCI mode only, this function disables the interrupts for the specified interrupt sources.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of the interrupt sources to be disabled.

    The intFlags parameter can be set to the following value to disable all the flag bits:

    - LIN_SCI_INT_ALL - All Interrupts

    To disable individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_SCI_INT_BREAK - Break Detect

    - LIN_SCI_INT_WAKEUP - Wakeup

    - LIN_SCI_INT_TX - Transmit Buffer

    - LIN_SCI_INT_RX - Receive Buffer

    - LIN_SCI_INT_TX_DMA - DMA Transmit

    - LIN_SCI_INT_RX_DMA - DMA Receive

    - LIN_SCI_INT_PARITY - Parity Error

    - LIN_SCI_INT_OVERRUN - Overrun Error

    - LIN_SCI_INT_FRAME - Framing Error

    Return

      None.

  void `LIN_clearSCIInterruptStatus`(uint32_t base, uint32_t intFlags)

    Clear SCI interrupt status

    In SCI mode only, this function clears the specified status flags.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of the interrupt sources to be cleared.

    The intFlags parameter can be set to the following value to clear all the flag bits:

    - LIN_SCI_INT_ALL - All Interrupts

    To clear individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_SCI_INT_BREAK - Break Detect

    - LIN_SCI_INT_WAKEUP - Wakeup

    - LIN_SCI_INT_TX - Transmit Buffer

    - LIN_SCI_INT_RX - Receive Buffer

    - LIN_SCI_INT_TX_DMA - DMA Transmit

    - LIN_SCI_INT_RX_DMA - DMA Receive

    - LIN_SCI_INT_PARITY - Parity Error

    - LIN_SCI_INT_OVERRUN - Overrun Error

    - LIN_SCI_INT_FRAME - Framing Error

    Return

      None.

  void `LIN_setSCIInterruptLevel0`(uint32_t base, uint32_t intFlags)

    Set SCI interrupt level to 0

    In SCI mode only, this function sets the specified interrupt sources to level 0.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of interrupt sources to be configured

    The intFlags parameter can be set to the following value to set all the flag bits:

    - LIN_SCI_INT_ALL - All Interrupts

    To set individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_SCI_INT_BREAK - Break Detect

    - LIN_SCI_INT_WAKEUP - Wakeup

    - LIN_SCI_INT_TX - Transmit Buffer

    - LIN_SCI_INT_RX - Receive Buffer

    - LIN_SCI_INT_TX_DMA - DMA Transmit

    - LIN_SCI_INT_RX_DMA - DMA Receive

    - LIN_SCI_INT_PARITY - Parity Error

    - LIN_SCI_INT_OVERRUN - Overrun Error

    - LIN_SCI_INT_FRAME - Framing Error

    Return

      None.

  void `LIN_setSCIInterruptLevel1`(uint32_t base, uint32_t intFlags)

    Set SCI interrupt level to 1

    In SCI mode only, this function sets the specified interrupt sources to level 1.

    Parameters

      - `base`: is the LIN module base address

      - `intFlags`: is the bit mask of interrupt sources to be configured

    The intFlags parameter can be set to the following value to set all the flag bits:

    - LIN_SCI_INT_ALL - All Interrupts

    To set individual flags, the intFlags parameter can be the logical OR of any of the following:

    - LIN_SCI_INT_BREAK - Break Detect

    - LIN_SCI_INT_WAKEUP - Wakeup

    - LIN_SCI_INT_TX - Transmit Buffer

    - LIN_SCI_INT_RX - Receive Buffer

    - LIN_SCI_INT_TX_DMA - DMA Transmit

    - LIN_SCI_INT_RX_DMA - DMA Receive

    - LIN_SCI_INT_PARITY - Parity Error

    - LIN_SCI_INT_OVERRUN - Overrun Error

    - LIN_SCI_INT_FRAME - Framing Error

    Return

      None.

  bool `LIN_isSCIReceiverIdle`(uint32_t base)

    Check if SCI Receiver is Idle

    In SCI mode only, this function checks if the receiver is in an idle state.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if the state is idle, else returns false.

  bool `LIN_getSCITxFrameType`(uint32_t base)

    Gets the SCI Transmit Frame Type

    In SCI mode only, this function gets the transmit frame type which can be either data or an address.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if the frame will be an address, and returns false if the frame will be data.

  bool `LIN_getSCIRxFrameType`(uint32_t base)

    Gets the SCI Receiver Frame Type

    In SCI mode only, this function gets the receiver frame type which can be either an address or not an address.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if the frame is an address, and returns false if the frame isn’t an address.

  bool `LIN_isSCIBreakDetected`(uint32_t base)

    Check if SCI Detected a Break Condition

    In SCI mode only, this function checks if the module detected a break condition on the Rx pin.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if break detected, else returns false.

  void `LIN_enableModule`(uint32_t base)

    Enables the LIN module.

    In LIN and SCI mode, this function sets the RESET bit of the SCIGCR0 register. Registers in this module are not writable until this has been done. Additionally, the transmit and receive pin control functionality is enabled.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_disableModule`(uint32_t base)

    Disable the LIN module.

    In LIN and SCI mode, this function clears the RESET bit of the SCIGCR0 register. Registers in this module are not writable when this bit is cleared. Additionally, the transmit and receive pin control functionality is disabled.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_setBaudRatePrescaler`(uint32_t base, uint32_t prescaler, uint32_t divider)

    Set Baud Rate Prescaler

    In LIN and SCI mode, this function is used to set the baudrate based on the

    prescaler and divider values.
    Parameters

      - `base`: is the LIN module base address

      - `prescaler`: is the 24-bit integer prescaler

      - `divider`: is the 4-bit fractional divider

    P = Prescaler

    M = Fractional Divider

    Bitrate = (SYSCLOCK) / ((P + 1 + M/16) * 16)

    Return

      None.

  void `LIN_enableDataTransmitter`(uint32_t base)

    Enable Transmit Data Transfer.

    In LIN and SCI mode, this function enables the transfer of data from SCITD or TDy to the transmit shift register.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_disableDataTransmitter`(uint32_t base)

    Disable Transmit Data Transfer.

    In LIN and SCI mode, this function disables the transfer of data from SCITD or TDy to the transmit shift register.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_enableDataReceiver`(uint32_t base)

    Enable Receive Data Transfer.

    In LIN and SCI mode, this function enables the receiver to transfer data from the shift buffer register to the receive buffer or multi-buffer.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_disableDataReceiver`(uint32_t base)

    Disable Receive Data Transfer.

    In LIN and SCI mode, this function disables the receiver to transfer data from the shift buffer register to the receive buffer or multi-buffer.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_performSoftwareReset`(uint32_t base)

    Perform software reset.

    In LIN and SCI mode, this function will reset the LIN state machine and clear all pending flags. It is required to call this function after a wakeup signal has been sent.

    Parameters

      - `base`: is the LIN module base address

    To enter the reset state separately, use LIN_enterSoftwareReset(). To come out of reset, use LIN_exitSoftwareReset().

    Return

      None.

  void `LIN_enterSoftwareReset`(uint32_t base)

    Put LIN into its reset state.

    In LIN and SCI mode, this function will reset the LIN state machine and clear all pending flags. It is required to call this function after a wakeup signal has been sent. When in this state, changes to the configuration of this module may be made.

    Parameters

      - `base`: is the LIN module base address

    To take LIN out of the reset state and back into the ready state, use LIN_exitSoftwareReset().

    Return

      None.

  void `LIN_exitSoftwareReset`(uint32_t base)

    Put LIN into its ready state.

    In LIN and SCI mode, this function will put LIN into its ready state. Transmission and reception can be done in this state. While in the ready state, configuration of the module should not be changed.

    Parameters

      - `base`: is the LIN module base address

    To put the module into its reset state, use LIN_enterSoftwareReset().

    Return

      None.

  bool `LIN_isBusBusy`(uint32_t base)

    Check if Bus is Busy

    In LIN and SCI mode, this function checks if the receiver bus is busy receiving a frame.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if the bus is busy, else returns false.

  bool `LIN_isTxBufferEmpty`(uint32_t base)

    Check if the Transmit Buffer is Empty

    In LIN and SCI mode, this function checks if the transmit buffer is empty or not.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns true if the Tx buffer is empty, else returns false.

  void `LIN_enableExtLoopback`(uint32_t base, LIN_LoopbackType loopbackType, LIN_AnalogLoopback path)

    Enable External Loopback mode for self test

    In LIN and SCI mode, this function enables the external Loopback mode for self test. The

    loopbackType parameter can be one of the following values:

    - LIN_LOOPBACK_DIGITAL - Digital Loopback

    - LIN_LOOPBACK_ANALOG - Analog Loopback

    Parameters

      - `base`: is the LIN module base address

      - `loopbackType`: is the loopback type (analog or digital)

      - `path`: sets the transmit or receive pin to be included in the communication path (Analog loopback mode only)

    The path parameter is only applicable in analog loopback mode and can be one of the following values:

    - LIN_ANALOG_LOOP_NONE - Default option for digital loopback mode

    - LIN_ANALOG_LOOP_TX - Enables analog loopback through the Tx pin

    - LIN_ANALOG_LOOP_RX - Enables analog loopback through the Rx pin

    Return

      None.

  void `LIN_disableExtLoopback`(uint32_t base)

    Disable External Loopback mode for self test

    In LIN and SCI mode, this function disables the external Loopback mode.

    Parameters

      - `base`: is the LIN module base address

    Note

      This function also resets the analog loopback communication path to the default transmit pin.

    Return

      None.

  void `LIN_enableIntLoopback`(uint32_t base)

    Enable Internal Loopback mode for self test

    In LIN and SCI mode, this function enables the internal Loopback mode for self test.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_disableIntLoopback`(uint32_t base)

    Disable Internal Loopback mode for self test

    In LIN and SCI mode, this function disables the internal Loopback mode for self test.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  uint32_t `LIN_getInterruptStatus`(uint32_t base)

    Get Interrupt Flags Status

    In LIN and SCI mode, this function returns the interrupt status register.

    Parameters

      - `base`: is the LIN module base address

    The following flags can be used to mask the value returned:

    - LIN_FLAG_BREAK - Break Detect Flag (SCI mode only)

    - LIN_FLAG_WAKEUP - Wake-up Flag

    - LIN_FLAG_IDLE - Receiver in Idle State (SCI mode only)

    - LIN_FLAG_BUSY - Busy Flag

    - LIN_FLAG_TO - Bus Idle Timeout Flag (LIN mode only)

    - LIN_FLAG_TOAWUS - Timeout after Wakeup Signal (LIN mode only)

    - LIN_FLAG_TOA3WUS - Timeout after 3 Wakeup Signals (LIN mode only)

    - LIN_FLAG_TXRDY - Transmitter Buffer Ready Flag

    - LIN_FLAG_RXRDY - Receiver Buffer Ready Flag

    - LIN_FLAG_TXWAKE - Transmitter Wakeup Method Select (SCI mode only)

    - LIN_FLAG_TXEMPTY - Transmitter Empty Flag

    - LIN_FLAG_RXWAKE - Receiver Wakeup Detect Flag

    - LIN_FLAG_TXID - Identifier on Transmit Flag (LIN mode only)

    - LIN_FLAG_RXID - Identifier on Receive Flag (LIN mode only)

    - LIN_FLAG_PE - Parity Error Flag

    - LIN_FLAG_OE - Overrun Error Flag

    - LIN_FLAG_FE - Framing Error Flag

    - LIN_FLAG_NRE - No-Response Error Flag (LIN mode only)

    - LIN_FLAG_ISFE - Inconsistent Synch Field Error Flag (LIN mode only)

    - LIN_FLAG_CE - Checksum Error Flag (LIN mode only)

    - LIN_FLAG_PBE - Physical Bus Error Flag (LIN mode only)

    - LIN_FLAG_BE - Bit Error Flag (LIN mode only)

    Return

      Returns the status flag register.

  uint32_t `LIN_getInterruptLevel`(uint32_t base)

    Get the Interrupt Level

    In LIN and SCI mode, this function gets the interrupt level status for all interrupt sources.

    Parameters

      - `base`: is the LIN module base address

    Return

      Returns the value of the interrupt level register.

  uint16_t `LIN_getInterruptLine0Offset`(uint32_t base)

    Gets the Interrupt Vector Offset for Line 0

    In LIN and SCI mode, this function gets the offset for interrupt line 0. A read to the specified line register updates its value to the next highest priority pending interrupt in the flag register and clears the flag corresponding to the offset that was read.

    Parameters

      - `base`: is the LIN module base address

    The following are values that can be returned:

    - LIN_VECT_NONE - No Interrupt

    - LIN_VECT_WAKEUP - Wakeup

    - LIN_VECT_ISFE - Inconsistent-sync-field Error

    - LIN_VECT_PE - Parity Error

    - LIN_VECT_ID - ID Interrupt

    - LIN_VECT_PBE - Physical Bus Error

    - LIN_VECT_FE - Frame Error

    - LIN_VECT_BREAK - Break detect

    - LIN_VECT_CE - Checksum Error

    - LIN_VECT_OE - Overrun Error

    - LIN_VECT_BE - Bit Error

    - LIN_VECT_RX - Receive Interrupt

    - LIN_VECT_TX - Transmit Interrupt

    - LIN_VECT_NRE - No-response Error

    - LIN_VECT_TOAWUS - Timeout after wakeup signal

    - LIN_VECT_TOA3WUS - Timeout after 3 wakeup signals

    - LIN_VECT_TO - Timeout (Bus Idle)

    Note

      The flags for the receive and the transmit interrupts cannot be cleared by reading the corresponding offset vector in this function.

    Return

      Returns the interrupt vector offset for interrupt line 0.

  uint16_t `LIN_getInterruptLine1Offset`(uint32_t base)

    Gets the Interrupt Vector Offset for Line 1

    In LIN and SCI mode, this function gets the offset for interrupt line 1. A read to the specified line register updates its value to the next highest priority pending interrupt in the flag register and clears the flag corresponding to the offset that was read.

    Parameters

      - `base`: is the LIN module base address

    The following are values that can be returned:

    - LIN_VECT_NONE - No Interrupt

    - LIN_VECT_WAKEUP - Wakeup

    - LIN_VECT_ISFE - Inconsistent-sync-field Error

    - LIN_VECT_PE - Parity Error

    - LIN_VECT_ID - ID Interrupt

    - LIN_VECT_PBE - Physical Bus Error

    - LIN_VECT_FE - Frame Error

    - LIN_VECT_BREAK - Break detect

    - LIN_VECT_CE - Checksum Error

    - LIN_VECT_OE - Overrun Error

    - LIN_VECT_BE - Bit Error

    - LIN_VECT_RX - Receive Interrupt

    - LIN_VECT_TX - Transmit Interrupt

    - LIN_VECT_NRE - No-response Error

    - LIN_VECT_TOAWUS - Timeout after wakeup signal

    - LIN_VECT_TOA3WUS - Timeout after 3 wakeup signals

    - LIN_VECT_TO - Timeout (Bus Idle)

    Note

      The flags for the receive and the transmit interrupts cannot be cleared by reading the corresponding offset vector in this function.

    Return

      Returns the interrupt vector offset for interrupt line 1.

  void `LIN_enableMultibufferMode`(uint32_t base)

    Enable Multi-buffer Mode

    In LIN and SCI mode, this function enables the multi-buffer mode.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_disableMultibufferMode`(uint32_t base)

    Disable Multi-buffer Mode

    In LIN and SCI mode, this function disables the multi-buffer mode.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_setTransmitDelay`(uint32_t base, uint16_t delay)

    Set Transmit Pin Delay

    In LIN and SCI mode, this function sets the delay by which the value on the transmit pin is delayed so that the value on the receive pin is asynchronous.

    Parameters

      - `base`: is the LIN module base address

      - `delay`: is number of clock delays for the Tx pin (0 to 7)

    Note

      This is not applicable to the Start bit.

    Return

      None.

  void `LIN_setPinSampleMask`(uint32_t base, LIN_PinSampleMask mask)

    Set Pin Sample Mask

    In LIN and SCI mode, this function sets sample number at which the transmit pin value that is being transmitted will be inverted to verify the receive pin samples correctly with the majority detection circuitry. The

    mask parameter can be one of the following values:

    - LIN_PINMASK_NONE - No mask

    - LIN_PINMASK_CENTER - Invert Tx Pin value at T-bit center

    - LIN_PINMASK_CENTER_SCLK - Invert Tx Pin value at T-bit center + SCLK

    - LIN_PINMASK_CENTER_2SCLK - Invert Tx Pin value at T-bit center + 2 SCLK

    Parameters

      - `base`: is the LIN module base address

      - `mask`: is the pin sample mask to be set

    Return

      None.

  void `LIN_setDebugSuspendMode`(uint32_t base, LIN_DebugMode mode)

    Set the Debug Suspended Mode

    In LIN and SCI mode, this function sets how the module operates when the program is suspended and being debugged with an emulator. The

    mode parameter can be one of the following values:

    - LIN_DEBUG_FROZEN - The module state machine is frozen; transmissions and LIN counters are halted until debug mode is exited.

    - LIN_DEBUG_COMPLETE - The module continues to operate until the current transmit and receive functions are complete.

    Parameters

      - `base`: is the LIN module base address

      - `mode`: is the debug mode

    Return

      None.

  void `LIN_enableGlobalInterrupt`(uint32_t base, LIN_InterruptLine line)

    Enables a LIN global interrupt.

    In LIN and SCI mode, this function globally enables an interrupt corresponding to a specified interrupt line. The

    line parameter can be one of the following enumerated values:
    Parameters

      - `base`: is the LIN module base address

      - `line`: is specified interrupt vector line

    - LIN_INTERRUPT_LINE0 - Interrupt Vector Line 0

    - LIN_INTERRUPT_LINE1 - Interrupt Vector Line 1

    Return

      None.

  void `LIN_disableGlobalInterrupt`(uint32_t base, LIN_InterruptLine line)

    Disables a LIN global interrupt.

    In LIN and SCI mode, this function globally disables an interrupt corresponding to a specified interrupt line. The

    line parameter can be one of the following enumerated values:
    Parameters

      - `base`: is the LIN module base address

      - `line`: is specified interrupt vector line

    - LIN_INTERRUPT_LINE0 - Interrupt Vector Line 0

    - LIN_INTERRUPT_LINE1 - Interrupt Vector Line 1

    Return

      None.

  void `LIN_clearGlobalInterruptStatus`(uint32_t base, LIN_InterruptLine line)

    Clears a LIN global interrupt flag.

    In LIN and SCI mode, this function clears the global interrupt flag that corresponds to a specified interrupt line. The

    line parameter can be one of the following enumerated values:
    Parameters

      - `base`: is the LIN module base address

      - `line`: is specified interrupt vector line

    - LIN_INTERRUPT_LINE0 - Interrupt Vector Line 0

    - LIN_INTERRUPT_LINE1 - Interrupt Vector Line 1

    Return

      None.

  bool `LIN_getGlobalInterruptStatus`(uint32_t base, LIN_InterruptLine line)

    Returns a LIN global interrupt flag status.

    In LIN and SCI mode, this function returns the status of a global interrupt flag that corresponds to a specified interrupt line. The

    line parameter can be one of the following enumerated values:
    Parameters

      - `base`: is the LIN module base address

      - `line`: is specified interrupt vector line

    - LIN_INTERRUPT_LINE0 - Interrupt Vector Line 0

    - LIN_INTERRUPT_LINE1 - Interrupt Vector Line 1

    Return

      Returns true if the interrupt flag is set. Return false if not.

  bool `LIN_getPinStatus`(uint32_t base, LIN_PinType pin)

    Get the Status of LIN TX/RX Pin status.

    In LIN and SCI mode, this function indicates the current status of LINTX and LINRX pins. the

    pin parameter can be either LIN_PINTYPE_TX or LIN_PINTYPE_RX.
    Parameters

      - `base`: is the LIN module base address

      - `pin`: is the type of pin that is being read.

    Return

      Returns true if the pin is high else false if low.

  void `LIN_initModule`(uint32_t base)

    Initializes the LIN Driver

    This function initializes the LIN module.

    Parameters

      - `base`: is the LIN module base address

    Return

      None.

  void `LIN_sendData`(uint32_t base, uint16_t *data)

    Send Data

    In LIN mode only, this function sends a block of data pointed to by ‘data’. The number of data to transmit must be set with

    LIN_setFrameLength() before.
    Parameters

      - `base`: is the LIN module base address

      - `data`: is the pointer to data to send

    Return

      None.

  void `LIN_getData`(uint32_t base, uint16_t *const data)

    Read received data

    In LIN mode only, this function reads a block of bytes and place it into the data buffer pointed to by ‘data’.

    Parameters

      - `base`: is the LIN module base address

      - `data`: is the pointer to the data buffer

    Return

      None.

The following describes important details and recommendations when using the LIN API.

Once system control enables the LIN module, LIN_initModule() needs to be called with the desired LIN module base to initialize the LIN with a set of default values and settings. Such settings include putting LIN in “LIN mode” as master, setting up the frame and timing values, and preparing the module for external communication.

LIN has the ability to operate as a SCI module instead of LIN when in “SCI mode”. Use the LIN_enableSCIMode() function to switch to “SCI mode”. The API is divided into three sets of functions: LIN only, SCI only, and both. The SCI-only functions state in their descriptions “SCI mode only” and have “SCI” in their function names such as =LIN_setSCICommMode(). They can only be used when operating in SCI mode. The LIN-only functions state in their descriptions “LIN mode only” and can only be used when operating in LIN mode. The functions that state in their descriptions “LIN and SCI mode” can be used regardless of which operating mode the module is in.

The code for this module is contained in driverlib/lin.c, with driverlib/lin.h containing the API declarations for use by applications.