Data Structures | Macros | Typedefs | Functions
UART

eUSCI Universal Asynchronous Receiver/Transmitter (UART) serial communication module. More...

Data Structures

struct  _UART_config
 Configuration structure for compare mode in the UART module. See UART_initModule for parameter documentation. More...
 

Macros

#define DEFAULT_SYNC   0x00
 
#define EUSCI_A_UART_AUTOMATICBAUDRATE_SYNC   0x55
 
#define EUSCI_A_UART_NO_PARITY   0x00
 
#define EUSCI_A_UART_ODD_PARITY   0x01
 
#define EUSCI_A_UART_EVEN_PARITY   0x02
 
#define EUSCI_A_UART_MSB_FIRST   UCMSB
 
#define EUSCI_A_UART_LSB_FIRST   0x00
 
#define EUSCI_A_UART_MODE   UCMODE_0
 
#define EUSCI_A_UART_IDLE_LINE_MULTI_PROCESSOR_MODE   UCMODE_1
 
#define EUSCI_A_UART_ADDRESS_BIT_MULTI_PROCESSOR_MODE   UCMODE_2
 
#define EUSCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE   UCMODE_3
 
#define EUSCI_A_UART_CLOCKSOURCE_SMCLK   UCSSEL__SMCLK
 
#define EUSCI_A_UART_CLOCKSOURCE_ACLK   UCSSEL__ACLK
 
#define EUSCI_A_UART_ONE_STOP_BIT   0x00
 
#define EUSCI_A_UART_TWO_STOP_BITS   UCSPB
 
#define EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION   0x01
 
#define EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION   0x00
 
#define EUSCI_A_UART_RECEIVE_INTERRUPT   UCRXIE
 
#define EUSCI_A_UART_TRANSMIT_INTERRUPT   UCTXIE
 
#define EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT   UCRXEIE
 
#define EUSCI_A_UART_BREAKCHAR_INTERRUPT   UCBRKIE
 
#define EUSCI_A_UART_STARTBIT_INTERRUPT   UCSTTIE
 
#define EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT   UCTXCPTIE
 
#define EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG   UCRXIFG
 
#define EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG   UCTXIFG
 
#define EUSCI_A_UART_STARTBIT_INTERRUPT_FLAG   UCSTTIFG
 
#define EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT_FLAG   UCTXCPTIFG
 
#define EUSCI_A_UART_LISTEN_ENABLE   UCLISTEN
 
#define EUSCI_A_UART_FRAMING_ERROR   UCFE
 
#define EUSCI_A_UART_OVERRUN_ERROR   UCOE
 
#define EUSCI_A_UART_PARITY_ERROR   UCPE
 
#define EUSCI_A_UART_BREAK_DETECT   UCBRK
 
#define EUSCI_A_UART_RECEIVE_ERROR   UCRXERR
 
#define EUSCI_A_UART_ADDRESS_RECEIVED   UCADDR
 
#define EUSCI_A_UART_IDLELINE   UCIDLE
 
#define EUSCI_A_UART_BUSY   UCBUSY
 
#define EUSCI_A_UART_DEGLITCH_TIME_2ns   0x00
 
#define EUSCI_A_UART_DEGLITCH_TIME_50ns   UCGLIT0
 
#define EUSCI_A_UART_DEGLITCH_TIME_100ns   UCGLIT1
 
#define EUSCI_A_UART_DEGLITCH_TIME_200ns   (UCGLIT0 + UCGLIT1)
 
#define EUSCI_A_UART_transmitData   UART_transmitData
 
#define EUSCI_A_UART_receiveData   UART_receiveData
 
#define EUSCI_A_UART_enableInterrupt   UART_enableInterrupt
 
#define EUSCI_A_UART_disableInterrupt   UART_disableInterrupt
 
#define EUSCI_A_UART_getInterruptStatus   UART_getInterruptStatus
 
#define EUSCI_A_UART_clearInterruptFlag   UART_clearInterruptFlag
 
#define EUSCI_A_UART_enable   UART_enableModule
 
#define EUSCI_A_UART_disable   UART_disableModule
 
#define EUSCI_A_UART_queryStatusFlags   UART_queryStatusFlags
 
#define EUSCI_A_UART_setDormant   UART_setDormant
 
#define EUSCI_A_UART_resetDormant   UART_resetDormant
 
#define EUSCI_A_UART_transmitAddress   UART_transmitAddress
 
#define EUSCI_A_UART_transmitBreak   UART_transmitBreak
 
#define EUSCI_A_UART_getReceiveBufferAddressForDMA   UART_getReceiveBufferAddressForDMA
 
#define EUSCI_A_UART_getTransmitBufferAddressForDMA   UART_getTransmitBufferAddressForDMA
 
#define EUSCI_A_UART_selectDeglitchTime   UART_selectDeglitchTime
 

Typedefs

typedef struct _UART_config UART_Config
 Type definition for _UART_config structure. More...
 

Functions

bool UART_initModule (uint32_t moduleInstance, const UART_Config *config)
 
void UART_transmitData (uint32_t moduleInstance, uint_fast8_t transmitData)
 
uint8_t UART_receiveData (uint32_t moduleInstance)
 
void UART_enableModule (uint32_t moduleInstance)
 
void UART_disableModule (uint32_t moduleInstance)
 
uint_fast8_t UART_queryStatusFlags (uint32_t moduleInstance, uint_fast8_t mask)
 
void UART_setDormant (uint32_t moduleInstance)
 
void UART_resetDormant (uint32_t moduleInstance)
 
void UART_transmitAddress (uint32_t moduleInstance, uint_fast8_t transmitAddress)
 
void UART_transmitBreak (uint32_t moduleInstance)
 
uint32_t UART_getReceiveBufferAddressForDMA (uint32_t moduleInstance)
 
uint32_t UART_getTransmitBufferAddressForDMA (uint32_t moduleInstance)
 
void UART_selectDeglitchTime (uint32_t moduleInstance, uint32_t deglitchTime)
 
void UART_enableInterrupt (uint32_t moduleInstance, uint_fast8_t mask)
 
void UART_disableInterrupt (uint32_t moduleInstance, uint_fast8_t mask)
 
uint_fast8_t UART_getInterruptStatus (uint32_t moduleInstance, uint8_t mask)
 
uint_fast8_t UART_getEnabledInterruptStatus (uint32_t moduleInstance)
 
void UART_clearInterruptFlag (uint32_t moduleInstance, uint_fast8_t mask)
 
void UART_registerInterrupt (uint32_t moduleInstance, void(*intHandler)(void))
 
void UART_unregisterInterrupt (uint32_t moduleInstance)
 

Detailed Description

eUSCI Universal Asynchronous Receiver/Transmitter (UART) serial communication module.


Module Operation


The MSPWare library for UART mode features include:

The modes of operations supported by the UART and the library include

In UART mode, the USCI transmits and receives characters at a bit rate asynchronous to another device. Timing for each character is based on the selected baud rate of the USCI. The transmit and receive functions use the same baud-rate frequency.


Programming Example


The DriverLib package contains a variety of different code examples that demonstrate the usage of the UART module. These code examples are accessible under the examples/ folder of the MSPWare release as well as through TI Resource Explorer if using Code Composer Studio. These code examples provide a comprehensive list of use cases as well as practical applications involving each module.

Below is a very brief code example showing how to configure and enable the UART module. In the case of this example, we assume the MCLK is operating off of the DCO and the DCO is tuned to 8MHz. This makes the configuration parameters so that the baud rate is 9600.

Below is an example of the UART configuration parameter:

This code snippet is the actual configuration of the UART module using the DriverLib APIs:

Macro Definition Documentation

#define DEFAULT_SYNC   0x00

Referenced by UART_transmitBreak().

#define EUSCI_A_UART_AUTOMATICBAUDRATE_SYNC   0x55

Referenced by UART_transmitBreak().

#define EUSCI_A_UART_NO_PARITY   0x00

Referenced by UART_initModule().

#define EUSCI_A_UART_ODD_PARITY   0x01

Referenced by UART_initModule().

#define EUSCI_A_UART_EVEN_PARITY   0x02

Referenced by UART_initModule().

#define EUSCI_A_UART_MSB_FIRST   UCMSB

Referenced by UART_initModule().

#define EUSCI_A_UART_LSB_FIRST   0x00

Referenced by UART_initModule().

#define EUSCI_A_UART_MODE   UCMODE_0

Referenced by UART_initModule().

#define EUSCI_A_UART_IDLE_LINE_MULTI_PROCESSOR_MODE   UCMODE_1

Referenced by UART_initModule().

#define EUSCI_A_UART_ADDRESS_BIT_MULTI_PROCESSOR_MODE   UCMODE_2

Referenced by UART_initModule().

#define EUSCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE   UCMODE_3
#define EUSCI_A_UART_CLOCKSOURCE_SMCLK   UCSSEL__SMCLK

Referenced by UART_initModule().

#define EUSCI_A_UART_CLOCKSOURCE_ACLK   UCSSEL__ACLK

Referenced by UART_initModule().

#define EUSCI_A_UART_ONE_STOP_BIT   0x00

Referenced by UART_initModule().

#define EUSCI_A_UART_TWO_STOP_BITS   UCSPB

Referenced by UART_initModule().

#define EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION   0x01
#define EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION   0x00
#define EUSCI_A_UART_RECEIVE_INTERRUPT   UCRXIE
#define EUSCI_A_UART_TRANSMIT_INTERRUPT   UCTXIE
#define EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT   UCRXEIE
#define EUSCI_A_UART_BREAKCHAR_INTERRUPT   UCBRKIE
#define EUSCI_A_UART_STARTBIT_INTERRUPT   UCSTTIE
#define EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT   UCTXCPTIE
#define EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG   UCRXIFG
#define EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG   UCTXIFG
#define EUSCI_A_UART_STARTBIT_INTERRUPT_FLAG   UCSTTIFG
#define EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT_FLAG   UCTXCPTIFG
#define EUSCI_A_UART_LISTEN_ENABLE   UCLISTEN

Referenced by UART_queryStatusFlags().

#define EUSCI_A_UART_FRAMING_ERROR   UCFE

Referenced by UART_queryStatusFlags().

#define EUSCI_A_UART_OVERRUN_ERROR   UCOE

Referenced by UART_queryStatusFlags().

#define EUSCI_A_UART_PARITY_ERROR   UCPE

Referenced by UART_queryStatusFlags().

#define EUSCI_A_UART_BREAK_DETECT   UCBRK

Referenced by UART_queryStatusFlags().

#define EUSCI_A_UART_RECEIVE_ERROR   UCRXERR

Referenced by UART_queryStatusFlags().

#define EUSCI_A_UART_ADDRESS_RECEIVED   UCADDR

Referenced by UART_queryStatusFlags().

#define EUSCI_A_UART_IDLELINE   UCIDLE

Referenced by UART_queryStatusFlags().

#define EUSCI_A_UART_BUSY   UCBUSY

Referenced by UART_queryStatusFlags().

#define EUSCI_A_UART_DEGLITCH_TIME_2ns   0x00

Referenced by UART_selectDeglitchTime().

#define EUSCI_A_UART_DEGLITCH_TIME_50ns   UCGLIT0

Referenced by UART_selectDeglitchTime().

#define EUSCI_A_UART_DEGLITCH_TIME_100ns   UCGLIT1

Referenced by UART_selectDeglitchTime().

#define EUSCI_A_UART_DEGLITCH_TIME_200ns   (UCGLIT0 + UCGLIT1)

Referenced by UART_selectDeglitchTime().

#define EUSCI_A_UART_transmitData   UART_transmitData
#define EUSCI_A_UART_receiveData   UART_receiveData
#define EUSCI_A_UART_enableInterrupt   UART_enableInterrupt
#define EUSCI_A_UART_disableInterrupt   UART_disableInterrupt
#define EUSCI_A_UART_getInterruptStatus   UART_getInterruptStatus
#define EUSCI_A_UART_clearInterruptFlag   UART_clearInterruptFlag
#define EUSCI_A_UART_enable   UART_enableModule
#define EUSCI_A_UART_disable   UART_disableModule
#define EUSCI_A_UART_queryStatusFlags   UART_queryStatusFlags
#define EUSCI_A_UART_setDormant   UART_setDormant
#define EUSCI_A_UART_resetDormant   UART_resetDormant
#define EUSCI_A_UART_transmitAddress   UART_transmitAddress
#define EUSCI_A_UART_transmitBreak   UART_transmitBreak
#define EUSCI_A_UART_getReceiveBufferAddressForDMA   UART_getReceiveBufferAddressForDMA
#define EUSCI_A_UART_getTransmitBufferAddressForDMA   UART_getTransmitBufferAddressForDMA
#define EUSCI_A_UART_selectDeglitchTime   UART_selectDeglitchTime

Typedef Documentation

Type definition for _UART_config structure.

Function Documentation

bool UART_initModule ( uint32_t  moduleInstance,
const UART_Config config 
)

Initialization routine for the UART block. The values to be written into the UCAxBRW and UCAxMCTLW registers should be pre-computed and passed into the initialization function

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
configConfiguration structure for the UART module

Configuration options for UART_Config structure.



It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode.

Parameters
selectClockSourceselects Clock source. Valid values are
  • EUSCI_A_UART_CLOCKSOURCE_SMCLK
  • EUSCI_A_UART_CLOCKSOURCE_ACLK
clockPrescalaris the value to be written into UCBRx bits
firstModRegis First modulation stage register setting. This value is a pre-calculated value which can be obtained from the Device User Guide.This value is written into UCBRFx bits of UCAxMCTLW.
secondModRegis Second modulation stage register setting. This value is a pre-calculated value which can be obtained from the Device User Guide. This value is written into UCBRSx bits of UCAxMCTLW.
parityis the desired parity. Valid values are
  • EUSCI_A_UART_NO_PARITY [Default Value],
  • EUSCI_A_UART_ODD_PARITY,
  • EUSCI_A_UART_EVEN_PARITY
msborLsbFirstcontrols direction of receive and transmit shift register. Valid values are
  • EUSCI_A_UART_MSB_FIRST
  • EUSCI_A_UART_LSB_FIRST [Default Value]
numberofStopBitsindicates one/two STOP bits Valid values are
  • EUSCI_A_UART_ONE_STOP_BIT [Default Value]
  • EUSCI_A_UART_TWO_STOP_BITS
uartModeselects the mode of operation Valid values are
  • EUSCI_A_UART_MODE [Default Value],
  • EUSCI_A_UART_IDLE_LINE_MULTI_PROCESSOR_MODE,
  • EUSCI_A_UART_ADDRESS_BIT_MULTI_PROCESSOR_MODE,
  • EUSCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE
overSamplingindicates low frequency or oversampling baud generation Valid values are
  • EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION
  • EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION

Upon successful initialization of the UART block, this function will have initialized the module, but the UART block still remains disabled and must be enabled with UART_enableModule()

Refer to this calculator for help on calculating values for the parameters.

Modified bits are UCPEN, UCPAR, UCMSB, UC7BIT, UCSPB, UCMODEx, UCSYNC bits of UCAxCTL0 and UCSSELx, UCSWRST bits of UCAxCTL1

Returns
true or STATUS_FAIL of the initialization process

References ASSERT, _UART_config::clockPrescalar, EUSCI_A_CMSIS, EUSCI_A_UART_ADDRESS_BIT_MULTI_PROCESSOR_MODE, EUSCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE, EUSCI_A_UART_CLOCKSOURCE_ACLK, EUSCI_A_UART_CLOCKSOURCE_SMCLK, EUSCI_A_UART_EVEN_PARITY, EUSCI_A_UART_IDLE_LINE_MULTI_PROCESSOR_MODE, EUSCI_A_UART_LSB_FIRST, EUSCI_A_UART_MODE, EUSCI_A_UART_MSB_FIRST, EUSCI_A_UART_NO_PARITY, EUSCI_A_UART_ODD_PARITY, EUSCI_A_UART_ONE_STOP_BIT, EUSCI_A_UART_TWO_STOP_BITS, _UART_config::firstModReg, _UART_config::msborLsbFirst, _UART_config::numberofStopBits, _UART_config::overSampling, _UART_config::parity, _UART_config::secondModReg, _UART_config::selectClockSource, and _UART_config::uartMode.

void UART_transmitData ( uint32_t  moduleInstance,
uint_fast8_t  transmitData 
)

Transmits a byte from the UART Module.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode
transmitDatadata to be transmitted from the UART module

This function will place the supplied data into UART transmit data register to start transmission

Modified register is UCAxTXBUF

Returns
None.

References EUSCI_A_CMSIS.

uint8_t UART_receiveData ( uint32_t  moduleInstance)

Receives a byte that has been sent to the UART Module.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode

This function reads a byte of data from the UART receive data Register.

Modified register is UCAxRXBUF

Returns
Returns the byte received from by the UART module, cast as an uint8_t.

References EUSCI_A_CMSIS.

void UART_enableModule ( uint32_t  moduleInstance)

Enables the UART block.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode

This will enable operation of the UART block.

Modified register is UCAxCTL1

Returns
None.

References EUSCI_A_CMSIS.

void UART_disableModule ( uint32_t  moduleInstance)

Disables the UART block.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode

This will disable operation of the UART block.

Modified register is UCAxCTL1

Returns
None.

References EUSCI_A_CMSIS.

uint_fast8_t UART_queryStatusFlags ( uint32_t  moduleInstance,
uint_fast8_t  mask 
)

Gets the current UART status flags.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode
maskis the masked interrupt flag status to be returned.

This returns the status for the UART module based on which flag is passed. mask parameter can be either any of the following selection.

  • EUSCI_A_UART_LISTEN_ENABLE
  • EUSCI_A_UART_FRAMING_ERROR
  • EUSCI_A_UART_OVERRUN_ERROR
  • EUSCI_A_UART_PARITY_ERROR
  • eUARTBREAK_DETECT
  • EUSCI_A_UART_RECEIVE_ERROR
  • EUSCI_A_UART_ADDRESS_RECEIVED
  • EUSCI_A_UART_IDLELINE
  • EUSCI_A_UART_BUSY

Modified register is UCAxSTAT

Returns
the masked status flag

References ASSERT, EUSCI_A_CMSIS, EUSCI_A_UART_ADDRESS_RECEIVED, EUSCI_A_UART_BREAK_DETECT, EUSCI_A_UART_BUSY, EUSCI_A_UART_FRAMING_ERROR, EUSCI_A_UART_IDLELINE, EUSCI_A_UART_LISTEN_ENABLE, EUSCI_A_UART_OVERRUN_ERROR, EUSCI_A_UART_PARITY_ERROR, and EUSCI_A_UART_RECEIVE_ERROR.

void UART_setDormant ( uint32_t  moduleInstance)

Sets the UART module in dormant mode

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode

Puts USCI in sleep mode Only characters that are preceded by an idle-line or with address bit set UCRXIFG. In UART mode with automatic baud-rate detection, only the combination of a break and synch field sets UCRXIFG.

Modified register is UCAxCTL1

Returns
None.

References EUSCI_A_CMSIS.

void UART_resetDormant ( uint32_t  moduleInstance)

Re-enables UART module from dormant mode

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode

Not dormant. All received characters set UCRXIFG.

Modified bits are UCDORM of UCAxCTL1 register.

Returns
None.

References EUSCI_A_CMSIS.

void UART_transmitAddress ( uint32_t  moduleInstance,
uint_fast8_t  transmitAddress 
)

Transmits the next byte to be transmitted marked as address depending on selected multiprocessor mode

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode
transmitAddressis the next byte to be transmitted

Modified register is UCAxCTL1, UCAxTXBUF

Returns
None.

References EUSCI_A_CMSIS.

void UART_transmitBreak ( uint32_t  moduleInstance)

Transmit break. Transmits a break with the next write to the transmit buffer. In UART mode with automatic baud-rate detection, EUSCI_A_UART_AUTOMATICBAUDRATE_SYNC(0x55) must be written into UCAxTXBUF to generate the required break/synch fields. Otherwise, DEFAULT_SYNC(0x00) must be written into the transmit buffer. Also ensures module is ready for transmitting the next data

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such asEUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode

Modified register is UCAxCTL1, UCAxTXBUF

Returns
None.

References DEFAULT_SYNC, EUSCI_A_CMSIS, EUSCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE, and EUSCI_A_UART_AUTOMATICBAUDRATE_SYNC.

uint32_t UART_getReceiveBufferAddressForDMA ( uint32_t  moduleInstance)

Returns the address of the RX Buffer of the UART for the DMA module.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode

Returns the address of the UART RX Buffer. This can be used in conjunction with the DMA to store the received data directly to memory.

Returns
None

References OFS_UCAxRXBUF.

uint32_t UART_getTransmitBufferAddressForDMA ( uint32_t  moduleInstance)

Returns the address of the TX Buffer of the UART for the DMA module.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode

Returns the address of the UART TX Buffer. This can be used in conjunction with the DMA to obtain transmitted data directly from memory.

Returns
None

References OFS_UCAxTXBUF.

void UART_selectDeglitchTime ( uint32_t  moduleInstance,
uint32_t  deglitchTime 
)

Sets the deglitch time

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode
deglitchTimeis the selected deglitch time Valid values are
  • EUSCI_A_UART_DEGLITCH_TIME_2ns
  • EUSCI_A_UART_DEGLITCH_TIME_50ns
  • EUSCI_A_UART_DEGLITCH_TIME_100ns
  • EUSCI_A_UART_DEGLITCH_TIME_200ns

Returns the address of the UART TX Buffer. This can be used in conjunction with the DMA to obtain transmitted data directly from memory.

Returns
None

References ASSERT, EUSCI_A_CMSIS, EUSCI_A_UART_DEGLITCH_TIME_100ns, EUSCI_A_UART_DEGLITCH_TIME_200ns, EUSCI_A_UART_DEGLITCH_TIME_2ns, EUSCI_A_UART_DEGLITCH_TIME_50ns, UCGLIT0, and UCGLIT1.

void UART_enableInterrupt ( uint32_t  moduleInstance,
uint_fast8_t  mask 
)

Enables individual UART interrupt sources.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode
maskis the bit mask of the interrupt sources to be enabled.

Enables the indicated UART interrupt sources. The interrupt flag is first and then the corresponding interrupt is enabled. Only the sources that are enabled can be reflected to the processor interrupt; disabled sources have no effect on the processor.

The mask parameter is the logical OR of any of the following:

  • EUSCI_A_UART_RECEIVE_INTERRUPT -Receive interrupt
  • EUSCI_A_UART_TRANSMIT_INTERRUPT - Transmit interrupt
  • EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT - Receive erroneous-character interrupt enable
  • EUSCI_A_UART_BREAKCHAR_INTERRUPT - Receive break character interrupt enable

Modified register is UCAxIFG, UCAxIE and UCAxCTL1

Returns
None.

References ASSERT, EUSCI_A_CMSIS, EUSCI_A_UART_BREAKCHAR_INTERRUPT, EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT, EUSCI_A_UART_RECEIVE_INTERRUPT, EUSCI_A_UART_STARTBIT_INTERRUPT, EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT, and EUSCI_A_UART_TRANSMIT_INTERRUPT.

void UART_disableInterrupt ( uint32_t  moduleInstance,
uint_fast8_t  mask 
)

Disables individual UART interrupt sources.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode
maskis the bit mask of the interrupt sources to be disabled.

Disables the indicated UART interrupt sources. Only the sources that are enabled can be reflected to the processor interrupt; disabled sources have no effect on the processor.

The mask parameter is the logical OR of any of the following:

  • EUSCI_A_UART_RECEIVE_INTERRUPT -Receive interrupt
  • EUSCI_A_UART_TRANSMIT_INTERRUPT - Transmit interrupt
  • EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT - Receive erroneous-character interrupt enable
  • EUSCI_A_UART_BREAKCHAR_INTERRUPT - Receive break character interrupt enable

Modified register is UCAxIFG, UCAxIE and UCAxCTL1

Returns
None.

References ASSERT, EUSCI_A_CMSIS, EUSCI_A_UART_BREAKCHAR_INTERRUPT, EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT, EUSCI_A_UART_RECEIVE_INTERRUPT, EUSCI_A_UART_STARTBIT_INTERRUPT, EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT, and EUSCI_A_UART_TRANSMIT_INTERRUPT.

uint_fast8_t UART_getInterruptStatus ( uint32_t  moduleInstance,
uint8_t  mask 
)

Gets the current UART interrupt status.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode
maskis the masked interrupt flag status to be returned. Mask value is the logical OR of any of the following:
  • EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG
  • EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG
  • EUSCI_A_UART_STARTBIT_INTERRUPT_FLAG
  • EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT_FLAG
Returns
The current interrupt status as an ORed bit mask:
  • EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG -Receive interrupt flag
  • EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG - Transmit interrupt flag

References ASSERT, EUSCI_A_CMSIS, EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG, EUSCI_A_UART_STARTBIT_INTERRUPT_FLAG, EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT_FLAG, and EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG.

Referenced by UART_getEnabledInterruptStatus().

uint_fast8_t UART_getEnabledInterruptStatus ( uint32_t  moduleInstance)

Gets the current UART interrupt status masked with the enabled interrupts. This function is useful to call in ISRs to get a list of pending interrupts that are actually enabled and could have caused the ISR.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode
Returns
The current interrupt status as an ORed bit mask:
  • EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG -Receive interrupt flag
  • EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG - Transmit interrupt flag

References EUSCI_A_CMSIS, EUSCI_A_UART_BREAKCHAR_INTERRUPT, EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT, EUSCI_A_UART_RECEIVE_INTERRUPT, EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG, EUSCI_A_UART_TRANSMIT_INTERRUPT, EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG, and UART_getInterruptStatus().

void UART_clearInterruptFlag ( uint32_t  moduleInstance,
uint_fast8_t  mask 
)

Clears UART interrupt sources.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode
maskis a bit mask of the interrupt sources to be cleared.

The UART interrupt source is cleared, so that it no longer asserts. The highest interrupt flag is automatically cleared when an interrupt vector generator is used.

The mask parameter has the same definition as the mask parameter to EUSCI_A_UART_enableInterrupt().

Modified register is UCAxIFG

Returns
None.

References ASSERT, EUSCI_A_CMSIS, EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG, EUSCI_A_UART_STARTBIT_INTERRUPT_FLAG, EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT_FLAG, and EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG.

void UART_registerInterrupt ( uint32_t  moduleInstance,
void(*)(void)  intHandler 
)

Registers an interrupt handler for UART interrupts.

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode.
intHandleris a pointer to the function to be called when the timer capture compare interrupt occurs.

This function registers the handler to be called when an UART interrupt occurs. This function enables the global interrupt in the interrupt controller; specific UART interrupts must be enabled via UART_enableInterrupt(). It is the interrupt handler's responsibility to clear the interrupt source via UART_clearInterruptFlag().

Returns
None.

References ASSERT, Interrupt_enableInterrupt(), and Interrupt_registerInterrupt().

void UART_unregisterInterrupt ( uint32_t  moduleInstance)

Unregisters the interrupt handler for the UART module

Parameters
moduleInstanceis the instance of the eUSCI A (UART) module. Valid parameters vary from part to part, but can include:
  • EUSCI_A0_MODULE
  • EUSCI_A1_MODULE
  • EUSCI_A2_MODULE
  • EUSCI_A3_MODULE
    It is important to note that for eUSCI modules, only "A" modules such as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the UART mode.

This function unregisters the handler to be called when timer interrupt occurs. This function also masks off the interrupt in the interrupt controller so that the interrupt handler no longer is called.

See also
Interrupt_registerInterrupt() for important information about registering interrupt handlers.
Returns
None.

References ASSERT, Interrupt_disableInterrupt(), and Interrupt_unregisterInterrupt().


Copyright 2014, Texas Instruments Incorporated