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.

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.

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.