1*5fd0122aSMatthias Ringwald /* --COPYRIGHT--,BSD 2*5fd0122aSMatthias Ringwald * Copyright (c) 2017, Texas Instruments Incorporated 3*5fd0122aSMatthias Ringwald * All rights reserved. 4*5fd0122aSMatthias Ringwald * 5*5fd0122aSMatthias Ringwald * Redistribution and use in source and binary forms, with or without 6*5fd0122aSMatthias Ringwald * modification, are permitted provided that the following conditions 7*5fd0122aSMatthias Ringwald * are met: 8*5fd0122aSMatthias Ringwald * 9*5fd0122aSMatthias Ringwald * * Redistributions of source code must retain the above copyright 10*5fd0122aSMatthias Ringwald * notice, this list of conditions and the following disclaimer. 11*5fd0122aSMatthias Ringwald * 12*5fd0122aSMatthias Ringwald * * Redistributions in binary form must reproduce the above copyright 13*5fd0122aSMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 14*5fd0122aSMatthias Ringwald * documentation and/or other materials provided with the distribution. 15*5fd0122aSMatthias Ringwald * 16*5fd0122aSMatthias Ringwald * * Neither the name of Texas Instruments Incorporated nor the names of 17*5fd0122aSMatthias Ringwald * its contributors may be used to endorse or promote products derived 18*5fd0122aSMatthias Ringwald * from this software without specific prior written permission. 19*5fd0122aSMatthias Ringwald * 20*5fd0122aSMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21*5fd0122aSMatthias Ringwald * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22*5fd0122aSMatthias Ringwald * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23*5fd0122aSMatthias Ringwald * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24*5fd0122aSMatthias Ringwald * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25*5fd0122aSMatthias Ringwald * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26*5fd0122aSMatthias Ringwald * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27*5fd0122aSMatthias Ringwald * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28*5fd0122aSMatthias Ringwald * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29*5fd0122aSMatthias Ringwald * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30*5fd0122aSMatthias Ringwald * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*5fd0122aSMatthias Ringwald * --/COPYRIGHT--*/ 32*5fd0122aSMatthias Ringwald #ifndef UART_H_ 33*5fd0122aSMatthias Ringwald #define UART_H_ 34*5fd0122aSMatthias Ringwald 35*5fd0122aSMatthias Ringwald //***************************************************************************** 36*5fd0122aSMatthias Ringwald // 37*5fd0122aSMatthias Ringwald //! \addtogroup uart_api 38*5fd0122aSMatthias Ringwald //! @{ 39*5fd0122aSMatthias Ringwald // 40*5fd0122aSMatthias Ringwald //***************************************************************************** 41*5fd0122aSMatthias Ringwald 42*5fd0122aSMatthias Ringwald //***************************************************************************** 43*5fd0122aSMatthias Ringwald // 44*5fd0122aSMatthias Ringwald // If building with a C++ compiler, make all of the definitions in this header 45*5fd0122aSMatthias Ringwald // have a C binding. 46*5fd0122aSMatthias Ringwald // 47*5fd0122aSMatthias Ringwald //***************************************************************************** 48*5fd0122aSMatthias Ringwald #ifdef __cplusplus 49*5fd0122aSMatthias Ringwald extern "C" 50*5fd0122aSMatthias Ringwald { 51*5fd0122aSMatthias Ringwald #endif 52*5fd0122aSMatthias Ringwald 53*5fd0122aSMatthias Ringwald #include <stdint.h> 54*5fd0122aSMatthias Ringwald #include <stdbool.h> 55*5fd0122aSMatthias Ringwald 56*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/inc/msp.h> 57*5fd0122aSMatthias Ringwald #include <ti/devices/msp432p4xx/driverlib/eusci.h> 58*5fd0122aSMatthias Ringwald 59*5fd0122aSMatthias Ringwald #define DEFAULT_SYNC 0x00 60*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_AUTOMATICBAUDRATE_SYNC 0x55 61*5fd0122aSMatthias Ringwald 62*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_NO_PARITY 0x00 63*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_ODD_PARITY 0x01 64*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_EVEN_PARITY 0x02 65*5fd0122aSMatthias Ringwald 66*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_8_BIT_LEN 0x00 67*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_7_BIT_LEN 0x01 68*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_MSB_FIRST EUSCI_A_CTLW0_MSB 69*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_LSB_FIRST 0x00 70*5fd0122aSMatthias Ringwald 71*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_MODE EUSCI_A_CTLW0_MODE_0 72*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_IDLE_LINE_MULTI_PROCESSOR_MODE EUSCI_A_CTLW0_MODE_1 73*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_ADDRESS_BIT_MULTI_PROCESSOR_MODE EUSCI_A_CTLW0_MODE_2 74*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE EUSCI_A_CTLW0_MODE_3 75*5fd0122aSMatthias Ringwald 76*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_CLOCKSOURCE_SMCLK EUSCI_A_CTLW0_SSEL__SMCLK 77*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_CLOCKSOURCE_ACLK EUSCI_A_CTLW0_SSEL__ACLK 78*5fd0122aSMatthias Ringwald 79*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_ONE_STOP_BIT 0x00 80*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_TWO_STOP_BITS EUSCI_A_CTLW0_SPB 81*5fd0122aSMatthias Ringwald 82*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION 0x01 83*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION 0x00 84*5fd0122aSMatthias Ringwald 85*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_RECEIVE_INTERRUPT EUSCI_A_IE_RXIE 86*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_TRANSMIT_INTERRUPT EUSCI_A_IE_TXIE 87*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT EUSCI_A_CTLW0_RXEIE 88*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_BREAKCHAR_INTERRUPT EUSCI_A_CTLW0_BRKIE 89*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_STARTBIT_INTERRUPT EUSCI_A_IE_STTIE 90*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT EUSCI_B_IE_STPIE 91*5fd0122aSMatthias Ringwald 92*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG EUSCI_A_IFG_RXIFG 93*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG EUSCI_A_IFG_TXIFG 94*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_STARTBIT_INTERRUPT_FLAG EUSCI_A_IFG_STTIFG 95*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT_FLAG EUSCI_A_IFG_TXCPTIFG 96*5fd0122aSMatthias Ringwald 97*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_LISTEN_ENABLE EUSCI_A_STATW_LISTEN 98*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_FRAMING_ERROR EUSCI_A_STATW_FE 99*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_OVERRUN_ERROR EUSCI_A_STATW_OE 100*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_PARITY_ERROR EUSCI_A_STATW_PE 101*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_BREAK_DETECT EUSCI_A_STATW_BRK 102*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_RECEIVE_ERROR EUSCI_A_STATW_RXERR 103*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_ADDRESS_RECEIVED EUSCI_A_STATW_ADDR_IDLE 104*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_IDLELINE EUSCI_A_STATW_ADDR_IDLE 105*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_BUSY EUSCI_A_STATW_BUSY 106*5fd0122aSMatthias Ringwald 107*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_DEGLITCH_TIME_2ns 0x00 108*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_DEGLITCH_TIME_50ns 0x0001 109*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_DEGLITCH_TIME_100ns 0x0002 110*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_DEGLITCH_TIME_200ns (0x0001 + 0x0002) 111*5fd0122aSMatthias Ringwald 112*5fd0122aSMatthias Ringwald //***************************************************************************** 113*5fd0122aSMatthias Ringwald // 114*5fd0122aSMatthias Ringwald //! ypedef eUSCI_eUSCI_UART_ConfigV1 115*5fd0122aSMatthias Ringwald //! \brief Type definition for \link _eUSCI_UART_Config \endlink 116*5fd0122aSMatthias Ringwald //! structure 117*5fd0122aSMatthias Ringwald //! 118*5fd0122aSMatthias Ringwald //! \struct _eUSCI_eUSCI_UART_ConfigV1 119*5fd0122aSMatthias Ringwald //! \brief Configuration structure for compare mode in the \b UART module. See 120*5fd0122aSMatthias Ringwald //! \link UART_initModule \endlink for parameter 121*5fd0122aSMatthias Ringwald //! documentation. 122*5fd0122aSMatthias Ringwald // 123*5fd0122aSMatthias Ringwald //***************************************************************************** 124*5fd0122aSMatthias Ringwald typedef struct _eUSCI_eUSCI_UART_ConfigV1 125*5fd0122aSMatthias Ringwald { 126*5fd0122aSMatthias Ringwald uint_fast8_t selectClockSource; 127*5fd0122aSMatthias Ringwald uint_fast16_t clockPrescalar; 128*5fd0122aSMatthias Ringwald uint_fast8_t firstModReg; 129*5fd0122aSMatthias Ringwald uint_fast8_t secondModReg; 130*5fd0122aSMatthias Ringwald uint_fast8_t parity; 131*5fd0122aSMatthias Ringwald uint_fast16_t msborLsbFirst; 132*5fd0122aSMatthias Ringwald uint_fast16_t numberofStopBits; 133*5fd0122aSMatthias Ringwald uint_fast16_t uartMode; 134*5fd0122aSMatthias Ringwald uint_fast8_t overSampling; 135*5fd0122aSMatthias Ringwald uint_fast16_t dataLength; 136*5fd0122aSMatthias Ringwald } eUSCI_UART_ConfigV1; 137*5fd0122aSMatthias Ringwald 138*5fd0122aSMatthias Ringwald //***************************************************************************** 139*5fd0122aSMatthias Ringwald // 140*5fd0122aSMatthias Ringwald //! Initialization routine for the UART block. The values to be written 141*5fd0122aSMatthias Ringwald //! into the UCAxBRW and UCAxMCTLW registers should be pre-computed and passed 142*5fd0122aSMatthias Ringwald //! into the initialization function 143*5fd0122aSMatthias Ringwald //! 144*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 145*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 146*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 147*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 148*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 149*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 150*5fd0122aSMatthias Ringwald //! \param config Configuration structure for the UART module 151*5fd0122aSMatthias Ringwald //! 152*5fd0122aSMatthias Ringwald //! <hr> 153*5fd0122aSMatthias Ringwald //! <b>Configuration options for \link eUSCI_UART_ConfigV1 \endlink 154*5fd0122aSMatthias Ringwald //! structure.</b> 155*5fd0122aSMatthias Ringwald //! <hr> 156*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 157*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 158*5fd0122aSMatthias Ringwald //! UART mode. 159*5fd0122aSMatthias Ringwald //! \param selectClockSource selects Clock source. Valid values are 160*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_CLOCKSOURCE_SMCLK 161*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_CLOCKSOURCE_ACLK 162*5fd0122aSMatthias Ringwald //! \param clockPrescalar is the value to be written into UCBRx bits 163*5fd0122aSMatthias Ringwald //! \param firstModReg is First modulation stage register setting. This 164*5fd0122aSMatthias Ringwald //! value is a pre-calculated value which can be obtained from the Device 165*5fd0122aSMatthias Ringwald //! User Guide.This value is written into UCBRFx bits of UCAxMCTLW. 166*5fd0122aSMatthias Ringwald //! \param secondModReg is Second modulation stage register setting. 167*5fd0122aSMatthias Ringwald //! This value is a pre-calculated value which can be obtained from the 168*5fd0122aSMatthias Ringwald //! Device User Guide. This value is written into UCBRSx bits of 169*5fd0122aSMatthias Ringwald //! UCAxMCTLW. 170*5fd0122aSMatthias Ringwald //! \param parity is the desired parity. Valid values are 171*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_NO_PARITY [Default Value], 172*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_ODD_PARITY, 173*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_EVEN_PARITY 174*5fd0122aSMatthias Ringwald //! \param msborLsbFirst controls direction of receive and transmit shift 175*5fd0122aSMatthias Ringwald //! register. Valid values are 176*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_MSB_FIRST 177*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_LSB_FIRST [Default Value] 178*5fd0122aSMatthias Ringwald //! \param numberofStopBits indicates one/two STOP bits 179*5fd0122aSMatthias Ringwald //! Valid values are 180*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_ONE_STOP_BIT [Default Value] 181*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_TWO_STOP_BITS 182*5fd0122aSMatthias Ringwald //! \param uartMode selects the mode of operation 183*5fd0122aSMatthias Ringwald //! Valid values are 184*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_MODE [Default Value], 185*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_IDLE_LINE_MULTI_PROCESSOR_MODE, 186*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_ADDRESS_BIT_MULTI_PROCESSOR_MODE, 187*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE 188*5fd0122aSMatthias Ringwald //! \param overSampling indicates low frequency or oversampling baud 189*5fd0122aSMatthias Ringwald //! generation 190*5fd0122aSMatthias Ringwald //! Valid values are 191*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION 192*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION 193*5fd0122aSMatthias Ringwald //! \param dataLength indicates Character length. Selects 7-bit or 8-bit character length. 194*5fd0122aSMatthias Ringwald //! Valid values are 195*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_8_BIT_LEN 196*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_7_BIT_LEN 197*5fd0122aSMatthias Ringwald //! 198*5fd0122aSMatthias Ringwald //! Upon successful initialization of the UART block, this function 199*5fd0122aSMatthias Ringwald //! will have initialized the module, but the UART block still remains 200*5fd0122aSMatthias Ringwald //! disabled and must be enabled with UART_enableModule() 201*5fd0122aSMatthias Ringwald //! 202*5fd0122aSMatthias Ringwald //! Refer to 203*5fd0122aSMatthias Ringwald //! <a href="http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430BaudRateConverter/index.html"> 204*5fd0122aSMatthias Ringwald //! this calculator </a> for help on calculating values for the parameters. 205*5fd0122aSMatthias Ringwald //! 206*5fd0122aSMatthias Ringwald //! Modified bits are \b UCPEN, \b UCPAR, \b UCMSB, \b UC7BIT, \b UCSPB, 207*5fd0122aSMatthias Ringwald //! \b UCMODEx, \b UCSYNC bits of \b UCAxCTL0 and \b UCSSELx, 208*5fd0122aSMatthias Ringwald //! \b UCSWRST bits of \b UCAxCTL1 209*5fd0122aSMatthias Ringwald //! 210*5fd0122aSMatthias Ringwald //! \return true or 211*5fd0122aSMatthias Ringwald //! false of the initialization process 212*5fd0122aSMatthias Ringwald // 213*5fd0122aSMatthias Ringwald //***************************************************************************** 214*5fd0122aSMatthias Ringwald extern bool UART_initModule(uint32_t moduleInstance, 215*5fd0122aSMatthias Ringwald const eUSCI_UART_ConfigV1 *config); 216*5fd0122aSMatthias Ringwald 217*5fd0122aSMatthias Ringwald //***************************************************************************** 218*5fd0122aSMatthias Ringwald // 219*5fd0122aSMatthias Ringwald //! Transmits a byte from the UART Module. 220*5fd0122aSMatthias Ringwald //! 221*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 222*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 223*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 224*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 225*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 226*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 227*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 228*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 229*5fd0122aSMatthias Ringwald //! UART mode 230*5fd0122aSMatthias Ringwald //! \param transmitData data to be transmitted from the UART module 231*5fd0122aSMatthias Ringwald //! 232*5fd0122aSMatthias Ringwald //! This function will place the supplied data into UART transmit data register 233*5fd0122aSMatthias Ringwald //! to start transmission 234*5fd0122aSMatthias Ringwald //! 235*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxTXBUF 236*5fd0122aSMatthias Ringwald //! \return None. 237*5fd0122aSMatthias Ringwald // 238*5fd0122aSMatthias Ringwald //***************************************************************************** 239*5fd0122aSMatthias Ringwald extern void UART_transmitData(uint32_t moduleInstance, 240*5fd0122aSMatthias Ringwald uint_fast8_t transmitData); 241*5fd0122aSMatthias Ringwald 242*5fd0122aSMatthias Ringwald //***************************************************************************** 243*5fd0122aSMatthias Ringwald // 244*5fd0122aSMatthias Ringwald //! Receives a byte that has been sent to the UART Module. 245*5fd0122aSMatthias Ringwald //! 246*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 247*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 248*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 249*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 250*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 251*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 252*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 253*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 254*5fd0122aSMatthias Ringwald //! UART mode 255*5fd0122aSMatthias Ringwald //! 256*5fd0122aSMatthias Ringwald //! This function reads a byte of data from the UART receive data Register. 257*5fd0122aSMatthias Ringwald //! 258*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxRXBUF 259*5fd0122aSMatthias Ringwald //! 260*5fd0122aSMatthias Ringwald //! \return Returns the byte received from by the UART module, cast as an 261*5fd0122aSMatthias Ringwald //! uint8_t. 262*5fd0122aSMatthias Ringwald // 263*5fd0122aSMatthias Ringwald //***************************************************************************** 264*5fd0122aSMatthias Ringwald extern uint8_t UART_receiveData(uint32_t moduleInstance); 265*5fd0122aSMatthias Ringwald 266*5fd0122aSMatthias Ringwald //***************************************************************************** 267*5fd0122aSMatthias Ringwald // 268*5fd0122aSMatthias Ringwald //! Enables the UART block. 269*5fd0122aSMatthias Ringwald //! 270*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 271*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 272*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 273*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 274*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 275*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 276*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 277*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 278*5fd0122aSMatthias Ringwald //! UART mode 279*5fd0122aSMatthias Ringwald //! 280*5fd0122aSMatthias Ringwald //! This will enable operation of the UART block. 281*5fd0122aSMatthias Ringwald //! 282*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxCTL1 283*5fd0122aSMatthias Ringwald //! 284*5fd0122aSMatthias Ringwald //! \return None. 285*5fd0122aSMatthias Ringwald // 286*5fd0122aSMatthias Ringwald //***************************************************************************** 287*5fd0122aSMatthias Ringwald extern void UART_enableModule(uint32_t moduleInstance); 288*5fd0122aSMatthias Ringwald 289*5fd0122aSMatthias Ringwald //***************************************************************************** 290*5fd0122aSMatthias Ringwald // 291*5fd0122aSMatthias Ringwald //! Disables the UART block. 292*5fd0122aSMatthias Ringwald //! 293*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 294*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 295*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 296*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 297*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 298*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 299*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 300*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 301*5fd0122aSMatthias Ringwald //! UART mode 302*5fd0122aSMatthias Ringwald //! 303*5fd0122aSMatthias Ringwald //! This will disable operation of the UART block. 304*5fd0122aSMatthias Ringwald //! 305*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxCTL1 306*5fd0122aSMatthias Ringwald //! 307*5fd0122aSMatthias Ringwald //! \return None. 308*5fd0122aSMatthias Ringwald // 309*5fd0122aSMatthias Ringwald //***************************************************************************** 310*5fd0122aSMatthias Ringwald extern void UART_disableModule(uint32_t moduleInstance); 311*5fd0122aSMatthias Ringwald 312*5fd0122aSMatthias Ringwald //***************************************************************************** 313*5fd0122aSMatthias Ringwald // 314*5fd0122aSMatthias Ringwald //! Gets the current UART status flags. 315*5fd0122aSMatthias Ringwald //! 316*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 317*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 318*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 319*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 320*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 321*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 322*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 323*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 324*5fd0122aSMatthias Ringwald //! UART mode 325*5fd0122aSMatthias Ringwald //! \param mask is the masked interrupt flag status to be returned. 326*5fd0122aSMatthias Ringwald //! 327*5fd0122aSMatthias Ringwald //! This returns the status for the UART module based on which 328*5fd0122aSMatthias Ringwald //! flag is passed. mask parameter can be either any of the following 329*5fd0122aSMatthias Ringwald //! selection. 330*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_LISTEN_ENABLE 331*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_FRAMING_ERROR 332*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_OVERRUN_ERROR 333*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_PARITY_ERROR 334*5fd0122aSMatthias Ringwald //! - \b eUARTBREAK_DETECT 335*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_RECEIVE_ERROR 336*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_ADDRESS_RECEIVED 337*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_IDLELINE 338*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_BUSY 339*5fd0122aSMatthias Ringwald //! 340*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxSTAT 341*5fd0122aSMatthias Ringwald //! 342*5fd0122aSMatthias Ringwald //! \return the masked status flag 343*5fd0122aSMatthias Ringwald // 344*5fd0122aSMatthias Ringwald //***************************************************************************** 345*5fd0122aSMatthias Ringwald extern uint_fast8_t UART_queryStatusFlags(uint32_t moduleInstance, 346*5fd0122aSMatthias Ringwald uint_fast8_t mask); 347*5fd0122aSMatthias Ringwald 348*5fd0122aSMatthias Ringwald //***************************************************************************** 349*5fd0122aSMatthias Ringwald // 350*5fd0122aSMatthias Ringwald //! Sets the UART module in dormant mode 351*5fd0122aSMatthias Ringwald //! 352*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 353*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 354*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 355*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 356*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 357*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 358*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 359*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 360*5fd0122aSMatthias Ringwald //! UART mode 361*5fd0122aSMatthias Ringwald //! 362*5fd0122aSMatthias Ringwald //! Puts USCI in sleep mode 363*5fd0122aSMatthias Ringwald //! Only characters that are preceded by an idle-line or with address bit set 364*5fd0122aSMatthias Ringwald //! UCRXIFG. In UART mode with automatic baud-rate detection, only the 365*5fd0122aSMatthias Ringwald //! combination of a break and synch field sets UCRXIFG. 366*5fd0122aSMatthias Ringwald //! 367*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxCTL1 368*5fd0122aSMatthias Ringwald //! 369*5fd0122aSMatthias Ringwald //! \return None. 370*5fd0122aSMatthias Ringwald // 371*5fd0122aSMatthias Ringwald //***************************************************************************** 372*5fd0122aSMatthias Ringwald extern void UART_setDormant(uint32_t moduleInstance); 373*5fd0122aSMatthias Ringwald 374*5fd0122aSMatthias Ringwald //***************************************************************************** 375*5fd0122aSMatthias Ringwald // 376*5fd0122aSMatthias Ringwald //! Re-enables UART module from dormant mode 377*5fd0122aSMatthias Ringwald //! 378*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 379*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 380*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 381*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 382*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 383*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 384*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 385*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 386*5fd0122aSMatthias Ringwald //! UART mode 387*5fd0122aSMatthias Ringwald //! 388*5fd0122aSMatthias Ringwald //! Not dormant. All received characters set UCRXIFG. 389*5fd0122aSMatthias Ringwald //! 390*5fd0122aSMatthias Ringwald //! Modified bits are \b UCDORM of \b UCAxCTL1 register. 391*5fd0122aSMatthias Ringwald //! 392*5fd0122aSMatthias Ringwald //! \return None. 393*5fd0122aSMatthias Ringwald // 394*5fd0122aSMatthias Ringwald //***************************************************************************** 395*5fd0122aSMatthias Ringwald extern void UART_resetDormant(uint32_t moduleInstance); 396*5fd0122aSMatthias Ringwald 397*5fd0122aSMatthias Ringwald //***************************************************************************** 398*5fd0122aSMatthias Ringwald // 399*5fd0122aSMatthias Ringwald //! Transmits the next byte to be transmitted marked as address depending on 400*5fd0122aSMatthias Ringwald //! selected multiprocessor mode 401*5fd0122aSMatthias Ringwald //! 402*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 403*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 404*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 405*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 406*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 407*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 408*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 409*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 410*5fd0122aSMatthias Ringwald //! UART mode 411*5fd0122aSMatthias Ringwald //! \param transmitAddress is the next byte to be transmitted 412*5fd0122aSMatthias Ringwald //! 413*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxCTL1, \b UCAxTXBUF 414*5fd0122aSMatthias Ringwald //! 415*5fd0122aSMatthias Ringwald //! \return None. 416*5fd0122aSMatthias Ringwald // 417*5fd0122aSMatthias Ringwald //***************************************************************************** 418*5fd0122aSMatthias Ringwald extern void UART_transmitAddress(uint32_t moduleInstance, 419*5fd0122aSMatthias Ringwald uint_fast8_t transmitAddress); 420*5fd0122aSMatthias Ringwald 421*5fd0122aSMatthias Ringwald //***************************************************************************** 422*5fd0122aSMatthias Ringwald // 423*5fd0122aSMatthias Ringwald //! Transmit break. Transmits a break with the next write to the transmit 424*5fd0122aSMatthias Ringwald //! buffer. In UART mode with automatic baud-rate detection, 425*5fd0122aSMatthias Ringwald //! EUSCI_A_UART_AUTOMATICBAUDRATE_SYNC(0x55) must be written into UCAxTXBUF to 426*5fd0122aSMatthias Ringwald //! generate the required break/synch fields. 427*5fd0122aSMatthias Ringwald //! Otherwise, DEFAULT_SYNC(0x00) must be written into the transmit buffer. 428*5fd0122aSMatthias Ringwald //! Also ensures module is ready for transmitting the next data 429*5fd0122aSMatthias Ringwald //! 430*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 431*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 432*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 433*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 434*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 435*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 436*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 437*5fd0122aSMatthias Ringwald //! asEUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 438*5fd0122aSMatthias Ringwald //! UART mode 439*5fd0122aSMatthias Ringwald //! 440*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxCTL1, \b UCAxTXBUF 441*5fd0122aSMatthias Ringwald //! 442*5fd0122aSMatthias Ringwald //! \return None. 443*5fd0122aSMatthias Ringwald // 444*5fd0122aSMatthias Ringwald //***************************************************************************** 445*5fd0122aSMatthias Ringwald extern void UART_transmitBreak(uint32_t moduleInstance); 446*5fd0122aSMatthias Ringwald 447*5fd0122aSMatthias Ringwald //***************************************************************************** 448*5fd0122aSMatthias Ringwald // 449*5fd0122aSMatthias Ringwald //! Returns the address of the RX Buffer of the UART for the DMA module. 450*5fd0122aSMatthias Ringwald //! 451*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 452*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 453*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 454*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 455*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 456*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 457*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 458*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 459*5fd0122aSMatthias Ringwald //! UART mode 460*5fd0122aSMatthias Ringwald //! 461*5fd0122aSMatthias Ringwald //! Returns the address of the UART RX Buffer. This can be used in conjunction 462*5fd0122aSMatthias Ringwald //! with the DMA to store the received data directly to memory. 463*5fd0122aSMatthias Ringwald //! 464*5fd0122aSMatthias Ringwald //! \return None 465*5fd0122aSMatthias Ringwald // 466*5fd0122aSMatthias Ringwald //***************************************************************************** 467*5fd0122aSMatthias Ringwald extern uint32_t UART_getReceiveBufferAddressForDMA(uint32_t moduleInstance); 468*5fd0122aSMatthias Ringwald 469*5fd0122aSMatthias Ringwald //***************************************************************************** 470*5fd0122aSMatthias Ringwald // 471*5fd0122aSMatthias Ringwald //! Returns the address of the TX Buffer of the UART for the DMA module. 472*5fd0122aSMatthias Ringwald //! 473*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 474*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 475*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 476*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 477*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 478*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 479*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 480*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 481*5fd0122aSMatthias Ringwald //! UART mode 482*5fd0122aSMatthias Ringwald //! 483*5fd0122aSMatthias Ringwald //! Returns the address of the UART TX Buffer. This can be used in conjunction 484*5fd0122aSMatthias Ringwald //! with the DMA to obtain transmitted data directly from memory. 485*5fd0122aSMatthias Ringwald //! 486*5fd0122aSMatthias Ringwald //! \return None 487*5fd0122aSMatthias Ringwald // 488*5fd0122aSMatthias Ringwald //***************************************************************************** 489*5fd0122aSMatthias Ringwald extern uint32_t UART_getTransmitBufferAddressForDMA(uint32_t moduleInstance); 490*5fd0122aSMatthias Ringwald 491*5fd0122aSMatthias Ringwald //***************************************************************************** 492*5fd0122aSMatthias Ringwald // 493*5fd0122aSMatthias Ringwald //! Sets the deglitch time 494*5fd0122aSMatthias Ringwald //! 495*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 496*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 497*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 498*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 499*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 500*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 501*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 502*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 503*5fd0122aSMatthias Ringwald //! UART mode 504*5fd0122aSMatthias Ringwald //! \param deglitchTime is the selected deglitch time 505*5fd0122aSMatthias Ringwald //! Valid values are 506*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_DEGLITCH_TIME_2ns 507*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_DEGLITCH_TIME_50ns 508*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_DEGLITCH_TIME_100ns 509*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_DEGLITCH_TIME_200ns 510*5fd0122aSMatthias Ringwald //! 511*5fd0122aSMatthias Ringwald //! 512*5fd0122aSMatthias Ringwald //! Returns the address of the UART TX Buffer. This can be used in conjunction 513*5fd0122aSMatthias Ringwald //! with the DMA to obtain transmitted data directly from memory. 514*5fd0122aSMatthias Ringwald //! 515*5fd0122aSMatthias Ringwald //! \return None 516*5fd0122aSMatthias Ringwald // 517*5fd0122aSMatthias Ringwald //***************************************************************************** 518*5fd0122aSMatthias Ringwald extern void UART_selectDeglitchTime(uint32_t moduleInstance, 519*5fd0122aSMatthias Ringwald uint32_t deglitchTime); 520*5fd0122aSMatthias Ringwald 521*5fd0122aSMatthias Ringwald //***************************************************************************** 522*5fd0122aSMatthias Ringwald // 523*5fd0122aSMatthias Ringwald //! Enables individual UART interrupt sources. 524*5fd0122aSMatthias Ringwald //! 525*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 526*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 527*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 528*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 529*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 530*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 531*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 532*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 533*5fd0122aSMatthias Ringwald //! UART mode 534*5fd0122aSMatthias Ringwald //! \param mask is the bit mask of the interrupt sources to be enabled. 535*5fd0122aSMatthias Ringwald //! 536*5fd0122aSMatthias Ringwald //! Enables the indicated UART interrupt sources. The interrupt flag is first 537*5fd0122aSMatthias Ringwald //! and then the corresponding interrupt is enabled. Only the sources that 538*5fd0122aSMatthias Ringwald //! are enabled can be reflected to the processor interrupt; disabled sources 539*5fd0122aSMatthias Ringwald //! have no effect on the processor. 540*5fd0122aSMatthias Ringwald //! 541*5fd0122aSMatthias Ringwald //! The mask parameter is the logical OR of any of the following: 542*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_RECEIVE_INTERRUPT -Receive interrupt 543*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_TRANSMIT_INTERRUPT - Transmit interrupt 544*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT - Receive 545*5fd0122aSMatthias Ringwald //! erroneous-character interrupt enable 546*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_BREAKCHAR_INTERRUPT - Receive break character interrupt 547*5fd0122aSMatthias Ringwald //! enable 548*5fd0122aSMatthias Ringwald //! 549*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxIFG, \b UCAxIE and \b UCAxCTL1 550*5fd0122aSMatthias Ringwald //! 551*5fd0122aSMatthias Ringwald //! \return None. 552*5fd0122aSMatthias Ringwald // 553*5fd0122aSMatthias Ringwald //***************************************************************************** 554*5fd0122aSMatthias Ringwald extern void UART_enableInterrupt(uint32_t moduleInstance, uint_fast8_t mask); 555*5fd0122aSMatthias Ringwald 556*5fd0122aSMatthias Ringwald //***************************************************************************** 557*5fd0122aSMatthias Ringwald // 558*5fd0122aSMatthias Ringwald //! Disables individual UART interrupt sources. 559*5fd0122aSMatthias Ringwald //! 560*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 561*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 562*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 563*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 564*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 565*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 566*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 567*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 568*5fd0122aSMatthias Ringwald //! UART mode 569*5fd0122aSMatthias Ringwald //! \param mask is the bit mask of the interrupt sources to be 570*5fd0122aSMatthias Ringwald //! disabled. 571*5fd0122aSMatthias Ringwald //! 572*5fd0122aSMatthias Ringwald //! Disables the indicated UART interrupt sources. Only the sources that 573*5fd0122aSMatthias Ringwald //! are enabled can be reflected to the processor interrupt; disabled sources 574*5fd0122aSMatthias Ringwald //! have no effect on the processor. 575*5fd0122aSMatthias Ringwald //! 576*5fd0122aSMatthias Ringwald //! The mask parameter is the logical OR of any of the following: 577*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_RECEIVE_INTERRUPT -Receive interrupt 578*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_TRANSMIT_INTERRUPT - Transmit interrupt 579*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_RECEIVE_ERRONEOUSCHAR_INTERRUPT - Receive 580*5fd0122aSMatthias Ringwald //! erroneous-character interrupt enable 581*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_BREAKCHAR_INTERRUPT - Receive break character interrupt 582*5fd0122aSMatthias Ringwald //! enable 583*5fd0122aSMatthias Ringwald //! 584*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxIFG, \b UCAxIE and \b UCAxCTL1 585*5fd0122aSMatthias Ringwald //! \return None. 586*5fd0122aSMatthias Ringwald // 587*5fd0122aSMatthias Ringwald //***************************************************************************** 588*5fd0122aSMatthias Ringwald extern void UART_disableInterrupt(uint32_t moduleInstance, uint_fast8_t mask); 589*5fd0122aSMatthias Ringwald 590*5fd0122aSMatthias Ringwald //***************************************************************************** 591*5fd0122aSMatthias Ringwald // 592*5fd0122aSMatthias Ringwald //! Gets the current UART interrupt status. 593*5fd0122aSMatthias Ringwald //! 594*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 595*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 596*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 597*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 598*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 599*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 600*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 601*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 602*5fd0122aSMatthias Ringwald //! UART mode 603*5fd0122aSMatthias Ringwald //! \param mask is the masked interrupt flag status to be returned. 604*5fd0122aSMatthias Ringwald //! Mask value is the logical OR of any of the following: 605*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG 606*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG 607*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_STARTBIT_INTERRUPT_FLAG 608*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT_FLAG 609*5fd0122aSMatthias Ringwald //! 610*5fd0122aSMatthias Ringwald //! 611*5fd0122aSMatthias Ringwald //! \return The current interrupt status as an ORed bit mask: 612*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG -Receive interrupt flag 613*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG - Transmit interrupt flag 614*5fd0122aSMatthias Ringwald // 615*5fd0122aSMatthias Ringwald //***************************************************************************** 616*5fd0122aSMatthias Ringwald extern uint_fast8_t UART_getInterruptStatus(uint32_t moduleInstance, 617*5fd0122aSMatthias Ringwald uint8_t mask); 618*5fd0122aSMatthias Ringwald 619*5fd0122aSMatthias Ringwald //***************************************************************************** 620*5fd0122aSMatthias Ringwald // 621*5fd0122aSMatthias Ringwald //! Gets the current UART interrupt status masked with the enabled interrupts. 622*5fd0122aSMatthias Ringwald //! This function is useful to call in ISRs to get a list of pending 623*5fd0122aSMatthias Ringwald //! interrupts that are actually enabled and could have caused 624*5fd0122aSMatthias Ringwald //! the ISR. 625*5fd0122aSMatthias Ringwald 626*5fd0122aSMatthias Ringwald //! 627*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 628*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 629*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 630*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 631*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 632*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 633*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 634*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 635*5fd0122aSMatthias Ringwald //! UART mode 636*5fd0122aSMatthias Ringwald //! 637*5fd0122aSMatthias Ringwald //! \return The current interrupt status as an ORed bit mask: 638*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG -Receive interrupt flag 639*5fd0122aSMatthias Ringwald //! - \b EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG - Transmit interrupt flag 640*5fd0122aSMatthias Ringwald // 641*5fd0122aSMatthias Ringwald //***************************************************************************** 642*5fd0122aSMatthias Ringwald extern uint_fast8_t UART_getEnabledInterruptStatus(uint32_t moduleInstance); 643*5fd0122aSMatthias Ringwald 644*5fd0122aSMatthias Ringwald //***************************************************************************** 645*5fd0122aSMatthias Ringwald // 646*5fd0122aSMatthias Ringwald //! Clears UART interrupt sources. 647*5fd0122aSMatthias Ringwald //! 648*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 649*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 650*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 651*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 652*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 653*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 654*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 655*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 656*5fd0122aSMatthias Ringwald //! UART mode 657*5fd0122aSMatthias Ringwald //! \param mask is a bit mask of the interrupt sources to be cleared. 658*5fd0122aSMatthias Ringwald //! 659*5fd0122aSMatthias Ringwald //! The UART interrupt source is cleared, so that it no longer asserts. 660*5fd0122aSMatthias Ringwald //! The highest interrupt flag is automatically cleared when an interrupt vector 661*5fd0122aSMatthias Ringwald //! generator is used. 662*5fd0122aSMatthias Ringwald //! 663*5fd0122aSMatthias Ringwald //! The mask parameter has the same definition as the mask parameter to 664*5fd0122aSMatthias Ringwald //! EUSCI_A_UART_enableInterrupt(). 665*5fd0122aSMatthias Ringwald //! 666*5fd0122aSMatthias Ringwald //! Modified register is \b UCAxIFG 667*5fd0122aSMatthias Ringwald //! 668*5fd0122aSMatthias Ringwald //! \return None. 669*5fd0122aSMatthias Ringwald // 670*5fd0122aSMatthias Ringwald //***************************************************************************** 671*5fd0122aSMatthias Ringwald extern void UART_clearInterruptFlag(uint32_t moduleInstance, uint_fast8_t mask); 672*5fd0122aSMatthias Ringwald 673*5fd0122aSMatthias Ringwald //***************************************************************************** 674*5fd0122aSMatthias Ringwald // 675*5fd0122aSMatthias Ringwald //! Registers an interrupt handler for UART interrupts. 676*5fd0122aSMatthias Ringwald //! 677*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 678*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 679*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 680*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 681*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 682*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 683*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 684*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 685*5fd0122aSMatthias Ringwald //! UART mode. 686*5fd0122aSMatthias Ringwald //! 687*5fd0122aSMatthias Ringwald //! \param intHandler is a pointer to the function to be called when the 688*5fd0122aSMatthias Ringwald //! timer capture compare interrupt occurs. 689*5fd0122aSMatthias Ringwald //! 690*5fd0122aSMatthias Ringwald //! This function registers the handler to be called when an UART 691*5fd0122aSMatthias Ringwald //! interrupt occurs. This function enables the global interrupt in the 692*5fd0122aSMatthias Ringwald //! interrupt controller; specific UART interrupts must be enabled 693*5fd0122aSMatthias Ringwald //! via UART_enableInterrupt(). It is the interrupt handler's responsibility to 694*5fd0122aSMatthias Ringwald //! clear the interrupt source via UART_clearInterruptFlag(). 695*5fd0122aSMatthias Ringwald //! 696*5fd0122aSMatthias Ringwald //! \return None. 697*5fd0122aSMatthias Ringwald // 698*5fd0122aSMatthias Ringwald //***************************************************************************** 699*5fd0122aSMatthias Ringwald extern void UART_registerInterrupt(uint32_t moduleInstance, 700*5fd0122aSMatthias Ringwald void (*intHandler)(void)); 701*5fd0122aSMatthias Ringwald 702*5fd0122aSMatthias Ringwald //***************************************************************************** 703*5fd0122aSMatthias Ringwald // 704*5fd0122aSMatthias Ringwald //! Unregisters the interrupt handler for the UART module 705*5fd0122aSMatthias Ringwald //! 706*5fd0122aSMatthias Ringwald //! \param moduleInstance is the instance of the eUSCI A (UART) module. 707*5fd0122aSMatthias Ringwald //! Valid parameters vary from part to part, but can include: 708*5fd0122aSMatthias Ringwald //! - \b EUSCI_A0_BASE 709*5fd0122aSMatthias Ringwald //! - \b EUSCI_A1_BASE 710*5fd0122aSMatthias Ringwald //! - \b EUSCI_A2_BASE 711*5fd0122aSMatthias Ringwald //! - \b EUSCI_A3_BASE 712*5fd0122aSMatthias Ringwald //! <br> It is important to note that for eUSCI modules, only "A" modules such 713*5fd0122aSMatthias Ringwald //! as EUSCI_A0 can be used. "B" modules such as EUSCI_B0 do not support the 714*5fd0122aSMatthias Ringwald //! UART mode. 715*5fd0122aSMatthias Ringwald //! 716*5fd0122aSMatthias Ringwald //! This function unregisters the handler to be called when timer 717*5fd0122aSMatthias Ringwald //! interrupt occurs. This function also masks off the interrupt in the 718*5fd0122aSMatthias Ringwald //! interrupt controller so that the interrupt handler no longer is called. 719*5fd0122aSMatthias Ringwald //! 720*5fd0122aSMatthias Ringwald //! \sa Interrupt_registerInterrupt() for important information about 721*5fd0122aSMatthias Ringwald //! registering interrupt handlers. 722*5fd0122aSMatthias Ringwald //! 723*5fd0122aSMatthias Ringwald //! \return None. 724*5fd0122aSMatthias Ringwald // 725*5fd0122aSMatthias Ringwald //***************************************************************************** 726*5fd0122aSMatthias Ringwald extern void UART_unregisterInterrupt(uint32_t moduleInstance); 727*5fd0122aSMatthias Ringwald 728*5fd0122aSMatthias Ringwald /* Backwards Compatibility Layer */ 729*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_transmitData UART_transmitData 730*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_receiveData UART_receiveData 731*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_enableInterrupt UART_enableInterrupt 732*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_disableInterrupt UART_disableInterrupt 733*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_getInterruptStatus UART_getInterruptStatus 734*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_clearInterruptFlag UART_clearInterruptFlag 735*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_enable UART_enableModule 736*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_disable UART_disableModule 737*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_queryStatusFlags UART_queryStatusFlags 738*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_setDormant UART_setDormant 739*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_resetDormant UART_resetDormant 740*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_transmitAddress UART_transmitAddress 741*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_transmitBreak UART_transmitBreak 742*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_getReceiveBufferAddressForDMA UART_getReceiveBufferAddressForDMA 743*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_getTransmitBufferAddressForDMA UART_getTransmitBufferAddressForDMA 744*5fd0122aSMatthias Ringwald #define EUSCI_A_UART_selectDeglitchTime UART_selectDeglitchTime 745*5fd0122aSMatthias Ringwald 746*5fd0122aSMatthias Ringwald //***************************************************************************** 747*5fd0122aSMatthias Ringwald // 748*5fd0122aSMatthias Ringwald // Mark the end of the C bindings section for C++ compilers. 749*5fd0122aSMatthias Ringwald // 750*5fd0122aSMatthias Ringwald //***************************************************************************** 751*5fd0122aSMatthias Ringwald #ifdef __cplusplus 752*5fd0122aSMatthias Ringwald } 753*5fd0122aSMatthias Ringwald #endif 754*5fd0122aSMatthias Ringwald 755*5fd0122aSMatthias Ringwald //***************************************************************************** 756*5fd0122aSMatthias Ringwald // 757*5fd0122aSMatthias Ringwald // Close the Doxygen group. 758*5fd0122aSMatthias Ringwald //! @} 759*5fd0122aSMatthias Ringwald // 760*5fd0122aSMatthias Ringwald //***************************************************************************** 761*5fd0122aSMatthias Ringwald 762*5fd0122aSMatthias Ringwald #endif /* UART_H_ */ 763