--- /dev/null
+/* --COPYRIGHT--,BSD\r
+ * Copyright (c) 2014, Texas Instruments Incorporated\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ *\r
+ * * Redistributions of source code must retain the above copyright\r
+ * notice, this list of conditions and the following disclaimer.\r
+ *\r
+ * * Redistributions in binary form must reproduce the above copyright\r
+ * notice, this list of conditions and the following disclaimer in the\r
+ * documentation and/or other materials provided with the distribution.\r
+ *\r
+ * * Neither the name of Texas Instruments Incorporated nor the names of\r
+ * its contributors may be used to endorse or promote products derived\r
+ * from this software without specific prior written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ * --/COPYRIGHT--*/\r
+//*****************************************************************************\r
+//\r
+// dma.h - Driver for the DMA Module.\r
+//\r
+//*****************************************************************************\r
+\r
+#ifndef __MSP430WARE_DMA_H__\r
+#define __MSP430WARE_DMA_H__\r
+\r
+#include "inc/hw_memmap.h"\r
+\r
+#if defined(__MSP430_HAS_DMAX_3__) || defined(__MSP430_HAS_DMAX_6__)\r
+\r
+//*****************************************************************************\r
+//\r
+// If building with a C++ compiler, make all of the definitions in this header\r
+// have a C binding.\r
+//\r
+//*****************************************************************************\r
+#ifdef __cplusplus\r
+extern "C"\r
+{\r
+#endif\r
+\r
+#include "inc/hw_regaccess.h"\r
+//*****************************************************************************\r
+//\r
+//! \brief Used in the DMA_init() function as the param parameter.\r
+//\r
+//*****************************************************************************\r
+typedef struct DMA_initParam\r
+{\r
+ //! Is the specified channel to initialize.\r
+ //! \n Valid values are:\r
+ //! - \b DMA_CHANNEL_0\r
+ //! - \b DMA_CHANNEL_1\r
+ //! - \b DMA_CHANNEL_2\r
+ //! - \b DMA_CHANNEL_3\r
+ //! - \b DMA_CHANNEL_4\r
+ //! - \b DMA_CHANNEL_5\r
+ //! - \b DMA_CHANNEL_6\r
+ //! - \b DMA_CHANNEL_7\r
+ uint8_t channelSelect;\r
+ //! Is the transfer mode of the selected channel.\r
+ //! \n Valid values are:\r
+ //! - \b DMA_TRANSFER_SINGLE [Default]\r
+ //! - \b DMA_TRANSFER_BLOCK\r
+ //! - \b DMA_TRANSFER_BURSTBLOCK\r
+ //! - \b DMA_TRANSFER_REPEATED_SINGLE\r
+ //! - \b DMA_TRANSFER_REPEATED_BLOCK\r
+ //! - \b DMA_TRANSFER_REPEATED_BURSTBLOCK\r
+ uint16_t transferModeSelect;\r
+ //! Is the amount of transfers to complete in a block transfer mode, as\r
+ //! well as how many transfers to complete before the interrupt flag is\r
+ //! set. Valid value is between 1-65535, if 0, no transfers will occur.\r
+ uint16_t transferSize;\r
+ //! Is the source that will trigger the start of each transfer, note that\r
+ //! the sources are device specific.\r
+ //! \n Valid values are:\r
+ //! - \b DMA_TRIGGERSOURCE_0 [Default]\r
+ //! - \b DMA_TRIGGERSOURCE_1\r
+ //! - \b DMA_TRIGGERSOURCE_2\r
+ //! - \b DMA_TRIGGERSOURCE_3\r
+ //! - \b DMA_TRIGGERSOURCE_4\r
+ //! - \b DMA_TRIGGERSOURCE_5\r
+ //! - \b DMA_TRIGGERSOURCE_6\r
+ //! - \b DMA_TRIGGERSOURCE_7\r
+ //! - \b DMA_TRIGGERSOURCE_8\r
+ //! - \b DMA_TRIGGERSOURCE_9\r
+ //! - \b DMA_TRIGGERSOURCE_10\r
+ //! - \b DMA_TRIGGERSOURCE_11\r
+ //! - \b DMA_TRIGGERSOURCE_12\r
+ //! - \b DMA_TRIGGERSOURCE_13\r
+ //! - \b DMA_TRIGGERSOURCE_14\r
+ //! - \b DMA_TRIGGERSOURCE_15\r
+ //! - \b DMA_TRIGGERSOURCE_16\r
+ //! - \b DMA_TRIGGERSOURCE_17\r
+ //! - \b DMA_TRIGGERSOURCE_18\r
+ //! - \b DMA_TRIGGERSOURCE_19\r
+ //! - \b DMA_TRIGGERSOURCE_20\r
+ //! - \b DMA_TRIGGERSOURCE_21\r
+ //! - \b DMA_TRIGGERSOURCE_22\r
+ //! - \b DMA_TRIGGERSOURCE_23\r
+ //! - \b DMA_TRIGGERSOURCE_24\r
+ //! - \b DMA_TRIGGERSOURCE_25\r
+ //! - \b DMA_TRIGGERSOURCE_26\r
+ //! - \b DMA_TRIGGERSOURCE_27\r
+ //! - \b DMA_TRIGGERSOURCE_28\r
+ //! - \b DMA_TRIGGERSOURCE_29\r
+ //! - \b DMA_TRIGGERSOURCE_30\r
+ //! - \b DMA_TRIGGERSOURCE_31\r
+ uint8_t triggerSourceSelect;\r
+ //! Is the specified size of transfers.\r
+ //! \n Valid values are:\r
+ //! - \b DMA_SIZE_SRCWORD_DSTWORD [Default]\r
+ //! - \b DMA_SIZE_SRCBYTE_DSTWORD\r
+ //! - \b DMA_SIZE_SRCWORD_DSTBYTE\r
+ //! - \b DMA_SIZE_SRCBYTE_DSTBYTE\r
+ uint8_t transferUnitSelect;\r
+ //! Is the type of trigger that the trigger signal needs to be to start a\r
+ //! transfer.\r
+ //! \n Valid values are:\r
+ //! - \b DMA_TRIGGER_RISINGEDGE [Default]\r
+ //! - \b DMA_TRIGGER_HIGH\r
+ uint8_t triggerTypeSelect;\r
+} DMA_initParam;\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the triggerSourceSelect\r
+// parameter for functions: DMA_init(); the param parameter for functions:\r
+// DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_TRIGGERSOURCE_0 (0x00)\r
+#define DMA_TRIGGERSOURCE_1 (0x01)\r
+#define DMA_TRIGGERSOURCE_2 (0x02)\r
+#define DMA_TRIGGERSOURCE_3 (0x03)\r
+#define DMA_TRIGGERSOURCE_4 (0x04)\r
+#define DMA_TRIGGERSOURCE_5 (0x05)\r
+#define DMA_TRIGGERSOURCE_6 (0x06)\r
+#define DMA_TRIGGERSOURCE_7 (0x07)\r
+#define DMA_TRIGGERSOURCE_8 (0x08)\r
+#define DMA_TRIGGERSOURCE_9 (0x09)\r
+#define DMA_TRIGGERSOURCE_10 (0x0A)\r
+#define DMA_TRIGGERSOURCE_11 (0x0B)\r
+#define DMA_TRIGGERSOURCE_12 (0x0C)\r
+#define DMA_TRIGGERSOURCE_13 (0x0D)\r
+#define DMA_TRIGGERSOURCE_14 (0x0E)\r
+#define DMA_TRIGGERSOURCE_15 (0x0F)\r
+#define DMA_TRIGGERSOURCE_16 (0x10)\r
+#define DMA_TRIGGERSOURCE_17 (0x11)\r
+#define DMA_TRIGGERSOURCE_18 (0x12)\r
+#define DMA_TRIGGERSOURCE_19 (0x13)\r
+#define DMA_TRIGGERSOURCE_20 (0x14)\r
+#define DMA_TRIGGERSOURCE_21 (0x15)\r
+#define DMA_TRIGGERSOURCE_22 (0x16)\r
+#define DMA_TRIGGERSOURCE_23 (0x17)\r
+#define DMA_TRIGGERSOURCE_24 (0x18)\r
+#define DMA_TRIGGERSOURCE_25 (0x19)\r
+#define DMA_TRIGGERSOURCE_26 (0x1A)\r
+#define DMA_TRIGGERSOURCE_27 (0x1B)\r
+#define DMA_TRIGGERSOURCE_28 (0x1C)\r
+#define DMA_TRIGGERSOURCE_29 (0x1D)\r
+#define DMA_TRIGGERSOURCE_30 (0x1E)\r
+#define DMA_TRIGGERSOURCE_31 (0x1F)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the param parameter for\r
+// functions: DMA_init(); the transferModeSelect parameter for functions:\r
+// DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_TRANSFER_SINGLE (DMADT_0)\r
+#define DMA_TRANSFER_BLOCK (DMADT_1)\r
+#define DMA_TRANSFER_BURSTBLOCK (DMADT_2)\r
+#define DMA_TRANSFER_REPEATED_SINGLE (DMADT_4)\r
+#define DMA_TRANSFER_REPEATED_BLOCK (DMADT_5)\r
+#define DMA_TRANSFER_REPEATED_BURSTBLOCK (DMADT_6)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the channelSelect parameter\r
+// for functions: DMA_init(), DMA_setTransferSize(), DMA_getTransferSize(),\r
+// DMA_setSrcAddress(), DMA_setDstAddress(), DMA_enableTransfers(),\r
+// DMA_disableTransfers(), DMA_startTransfer(), DMA_enableInterrupt(),\r
+// DMA_disableInterrupt(), DMA_getInterruptStatus(), DMA_clearInterrupt(),\r
+// DMA_getNMIAbortStatus(), and DMA_clearNMIAbort(); the param parameter for\r
+// functions: DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_CHANNEL_0 (0x00)\r
+#define DMA_CHANNEL_1 (0x10)\r
+#define DMA_CHANNEL_2 (0x20)\r
+#define DMA_CHANNEL_3 (0x30)\r
+#define DMA_CHANNEL_4 (0x40)\r
+#define DMA_CHANNEL_5 (0x50)\r
+#define DMA_CHANNEL_6 (0x60)\r
+#define DMA_CHANNEL_7 (0x70)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the triggerTypeSelect\r
+// parameter for functions: DMA_init(); the param parameter for functions:\r
+// DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_TRIGGER_RISINGEDGE (!(DMALEVEL))\r
+#define DMA_TRIGGER_HIGH (DMALEVEL)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the transferUnitSelect\r
+// parameter for functions: DMA_init(); the param parameter for functions:\r
+// DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_SIZE_SRCWORD_DSTWORD (!(DMASRCBYTE + DMADSTBYTE))\r
+#define DMA_SIZE_SRCBYTE_DSTWORD (DMASRCBYTE)\r
+#define DMA_SIZE_SRCWORD_DSTBYTE (DMADSTBYTE)\r
+#define DMA_SIZE_SRCBYTE_DSTBYTE (DMASRCBYTE + DMADSTBYTE)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the directionSelect parameter\r
+// for functions: DMA_setSrcAddress(), and DMA_setDstAddress().\r
+//\r
+//*****************************************************************************\r
+#define DMA_DIRECTION_UNCHANGED (DMASRCINCR_0)\r
+#define DMA_DIRECTION_DECREMENT (DMASRCINCR_2)\r
+#define DMA_DIRECTION_INCREMENT (DMASRCINCR_3)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed toThe following are values that\r
+// can be returned by the DMA_getInterruptStatus() function.\r
+//\r
+//*****************************************************************************\r
+#define DMA_INT_INACTIVE (0x0)\r
+#define DMA_INT_ACTIVE (DMAIFG)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed toThe following are values that\r
+// can be returned by the DMA_getNMIAbortStatus() function.\r
+//\r
+//*****************************************************************************\r
+#define DMA_NOTABORTED (0x0)\r
+#define DMA_ABORTED (DMAABORT)\r
+\r
+//*****************************************************************************\r
+//\r
+// Prototypes for the APIs.\r
+//\r
+//*****************************************************************************\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Initializes the specified DMA channel.\r
+//!\r
+//! This function initializes the specified DMA channel. Upon successful\r
+//! completion of initialization of the selected channel the control registers\r
+//! will be cleared and the given variables will be set. Please note, if\r
+//! transfers have been enabled with the enableTransfers() function, then a\r
+//! call to disableTransfers() is necessary before re-initialization. Also\r
+//! note, that the trigger sources are device dependent and can be found in the\r
+//! device family data sheet. The amount of DMA channels available are also\r
+//! device specific.\r
+//!\r
+//! \param param is the pointer to struct for initialization.\r
+//!\r
+//! \return STATUS_SUCCESS or STATUS_FAILURE of the initialization process.\r
+//\r
+//*****************************************************************************\r
+extern void DMA_init(DMA_initParam *param);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Sets the specified amount of transfers for the selected DMA channel.\r
+//!\r
+//! This function sets the specified amount of transfers for the selected DMA\r
+//! channel without having to reinitialize the DMA channel.\r
+//!\r
+//! \param channelSelect is the specified channel to set source address\r
+//! direction for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//! \param transferSize is the amount of transfers to complete in a block\r
+//! transfer mode, as well as how many transfers to complete before the\r
+//! interrupt flag is set. Valid value is between 1-65535, if 0, no\r
+//! transfers will occur.\r
+//! \n Modified bits are \b DMAxSZ of \b DMAxSZ register.\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_setTransferSize(uint8_t channelSelect,\r
+ uint16_t transferSize);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Gets the amount of transfers for the selected DMA channel.\r
+//!\r
+//! This function gets the amount of transfers for the selected DMA channel\r
+//! without having to reinitialize the DMA channel.\r
+//!\r
+//! \param channelSelect is the specified channel to set source address\r
+//! direction for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return the amount of transfers\r
+//\r
+//*****************************************************************************\r
+extern uint16_t DMA_getTransferSize(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Sets source address and the direction that the source address will\r
+//! move after a transfer.\r
+//!\r
+//! This function sets the source address and the direction that the source\r
+//! address will move after a transfer is complete. It may be incremented,\r
+//! decremented or unchanged.\r
+//!\r
+//! \param channelSelect is the specified channel to set source address\r
+//! direction for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//! \param srcAddress is the address of where the data will be transferred\r
+//! from.\r
+//! \n Modified bits are \b DMAxSA of \b DMAxSA register.\r
+//! \param directionSelect is the specified direction of the source address\r
+//! after a transfer.\r
+//! Valid values are:\r
+//! - \b DMA_DIRECTION_UNCHANGED\r
+//! - \b DMA_DIRECTION_DECREMENT\r
+//! - \b DMA_DIRECTION_INCREMENT\r
+//! \n Modified bits are \b DMASRCINCR of \b DMAxCTL register.\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_setSrcAddress(uint8_t channelSelect,\r
+ uint32_t srcAddress,\r
+ uint16_t directionSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Sets the destination address and the direction that the destination\r
+//! address will move after a transfer.\r
+//!\r
+//! This function sets the destination address and the direction that the\r
+//! destination address will move after a transfer is complete. It may be\r
+//! incremented, decremented, or unchanged.\r
+//!\r
+//! \param channelSelect is the specified channel to set the destination\r
+//! address direction for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//! \param dstAddress is the address of where the data will be transferred to.\r
+//! \n Modified bits are \b DMAxDA of \b DMAxDA register.\r
+//! \param directionSelect is the specified direction of the destination\r
+//! address after a transfer.\r
+//! Valid values are:\r
+//! - \b DMA_DIRECTION_UNCHANGED\r
+//! - \b DMA_DIRECTION_DECREMENT\r
+//! - \b DMA_DIRECTION_INCREMENT\r
+//! \n Modified bits are \b DMADSTINCR of \b DMAxCTL register.\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_setDstAddress(uint8_t channelSelect,\r
+ uint32_t dstAddress,\r
+ uint16_t directionSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables transfers to be triggered.\r
+//!\r
+//! This function enables transfers upon appropriate trigger of the selected\r
+//! trigger source for the selected channel.\r
+//!\r
+//! \param channelSelect is the specified channel to enable transfer for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableTransfers(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables transfers from being triggered.\r
+//!\r
+//! This function disables transfer from being triggered for the selected\r
+//! channel. This function should be called before any re-initialization of the\r
+//! selected DMA channel.\r
+//!\r
+//! \param channelSelect is the specified channel to disable transfers for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableTransfers(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Starts a transfer if using the default trigger source selected in\r
+//! initialization.\r
+//!\r
+//! This functions triggers a transfer of data from source to destination if\r
+//! the trigger source chosen from initialization is the DMA_TRIGGERSOURCE_0.\r
+//! Please note, this function needs to be called for each (repeated-)single\r
+//! transfer, and when transferAmount of transfers have been complete in\r
+//! (repeated-)block transfers.\r
+//!\r
+//! \param channelSelect is the specified channel to start transfers for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_startTransfer(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables the DMA interrupt for the selected channel.\r
+//!\r
+//! Enables the DMA interrupt source. Only the sources that are enabled can be\r
+//! reflected to the processor interrupt; disabled sources have no effect on\r
+//! the processor. Does not clear interrupt flags.\r
+//!\r
+//! \param channelSelect is the specified channel to enable the interrupt for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableInterrupt(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables the DMA interrupt for the selected channel.\r
+//!\r
+//! Disables the DMA interrupt source. Only the sources that are enabled can be\r
+//! reflected to the processor interrupt; disabled sources have no effect on\r
+//! the processor.\r
+//!\r
+//! \param channelSelect is the specified channel to disable the interrupt for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableInterrupt(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Returns the status of the interrupt flag for the selected channel.\r
+//!\r
+//! Returns the status of the interrupt flag for the selected channel.\r
+//!\r
+//! \param channelSelect is the specified channel to return the interrupt flag\r
+//! status from.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return One of the following:\r
+//! - \b DMA_INT_INACTIVE\r
+//! - \b DMA_INT_ACTIVE\r
+//! \n indicating the status of the current interrupt flag\r
+//\r
+//*****************************************************************************\r
+extern uint16_t DMA_getInterruptStatus(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Clears the interrupt flag for the selected channel.\r
+//!\r
+//! This function clears the DMA interrupt flag is cleared, so that it no\r
+//! longer asserts.\r
+//!\r
+//! \param channelSelect is the specified channel to clear the interrupt flag\r
+//! for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_clearInterrupt(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Returns the status of the NMIAbort for the selected channel.\r
+//!\r
+//! This function returns the status of the NMI Abort flag for the selected\r
+//! channel. If this flag has been set, it is because a transfer on this\r
+//! channel was aborted due to a interrupt from an NMI.\r
+//!\r
+//! \param channelSelect is the specified channel to return the status of the\r
+//! NMI Abort flag for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return One of the following:\r
+//! - \b DMA_NOTABORTED\r
+//! - \b DMA_ABORTED\r
+//! \n indicating the status of the NMIAbort for the selected channel\r
+//\r
+//*****************************************************************************\r
+extern uint16_t DMA_getNMIAbortStatus(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Clears the status of the NMIAbort to proceed with transfers for the\r
+//! selected channel.\r
+//!\r
+//! This function clears the status of the NMI Abort flag for the selected\r
+//! channel to allow for transfers on the channel to continue.\r
+//!\r
+//! \param channelSelect is the specified channel to clear the NMI Abort flag\r
+//! for.\r
+//! Valid values are:\r
+//! - \b DMA_CHANNEL_0\r
+//! - \b DMA_CHANNEL_1\r
+//! - \b DMA_CHANNEL_2\r
+//! - \b DMA_CHANNEL_3\r
+//! - \b DMA_CHANNEL_4\r
+//! - \b DMA_CHANNEL_5\r
+//! - \b DMA_CHANNEL_6\r
+//! - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_clearNMIAbort(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables the DMA from stopping the CPU during a Read-Modify-Write\r
+//! Operation to start a transfer.\r
+//!\r
+//! This function allows the CPU to finish any read-modify-write operations it\r
+//! may be in the middle of before transfers of and DMA channel stop the CPU.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableTransferDuringReadModifyWrite(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables the DMA to stop the CPU during a Read-Modify-Write Operation\r
+//! to start a transfer.\r
+//!\r
+//! This function allows the DMA to stop the CPU in the middle of a read-\r
+//! modify-write operation to transfer data.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableTransferDuringReadModifyWrite(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables Round Robin prioritization.\r
+//!\r
+//! This function enables Round Robin Prioritization of DMA channels. In the\r
+//! case of Round Robin Prioritization, the last DMA channel to have\r
+//! transferred data then has the last priority, which comes into play when\r
+//! multiple DMA channels are ready to transfer at the same time.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableRoundRobinPriority(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables Round Robin prioritization.\r
+//!\r
+//! This function disables Round Robin Prioritization, enabling static\r
+//! prioritization of the DMA channels. In static prioritization, the DMA\r
+//! channels are prioritized with the lowest DMA channel index having the\r
+//! highest priority (i.e. DMA Channel 0 has the highest priority).\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableRoundRobinPriority(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables a NMI to interrupt a DMA transfer.\r
+//!\r
+//! This function allow NMI's to interrupting any DMA transfer currently in\r
+//! progress and stops any future transfers to begin before the NMI is done\r
+//! processing.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableNMIAbort(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables any NMI from interrupting a DMA transfer.\r
+//!\r
+//! This function disables NMI's from interrupting any DMA transfer currently\r
+//! in progress.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableNMIAbort(void);\r
+\r
+//*****************************************************************************\r
+//\r
+// Mark the end of the C bindings section for C++ compilers.\r
+//\r
+//*****************************************************************************\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r
+#endif // __MSP430WARE_DMA_H__\r