The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_MIMXRT1050_EVK/TOOLCHAIN_IAR/fsl_xbara.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
- Parent:
- 171:3a7713b1edbc
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 161:aa5281ff4a02 | 1 | /* |
AnnaBridge | 170:e95d10626187 | 2 | * The Clear BSD License |
AnnaBridge | 161:aa5281ff4a02 | 3 | * Copyright (c) 2015, Freescale Semiconductor, Inc. |
AnnaBridge | 161:aa5281ff4a02 | 4 | * Copyright 2016-2017 NXP |
AnnaBridge | 170:e95d10626187 | 5 | * All rights reserved. |
AnnaBridge | 170:e95d10626187 | 6 | * |
AnnaBridge | 161:aa5281ff4a02 | 7 | * Redistribution and use in source and binary forms, with or without modification, |
AnnaBridge | 170:e95d10626187 | 8 | * are permitted (subject to the limitations in the disclaimer below) provided |
AnnaBridge | 170:e95d10626187 | 9 | * that the following conditions are met: |
AnnaBridge | 161:aa5281ff4a02 | 10 | * |
AnnaBridge | 161:aa5281ff4a02 | 11 | * o Redistributions of source code must retain the above copyright notice, this list |
AnnaBridge | 161:aa5281ff4a02 | 12 | * of conditions and the following disclaimer. |
AnnaBridge | 161:aa5281ff4a02 | 13 | * |
AnnaBridge | 161:aa5281ff4a02 | 14 | * o Redistributions in binary form must reproduce the above copyright notice, this |
AnnaBridge | 161:aa5281ff4a02 | 15 | * list of conditions and the following disclaimer in the documentation and/or |
AnnaBridge | 161:aa5281ff4a02 | 16 | * other materials provided with the distribution. |
AnnaBridge | 161:aa5281ff4a02 | 17 | * |
AnnaBridge | 161:aa5281ff4a02 | 18 | * o Neither the name of the copyright holder nor the names of its |
AnnaBridge | 161:aa5281ff4a02 | 19 | * contributors may be used to endorse or promote products derived from this |
AnnaBridge | 161:aa5281ff4a02 | 20 | * software without specific prior written permission. |
AnnaBridge | 161:aa5281ff4a02 | 21 | * |
AnnaBridge | 170:e95d10626187 | 22 | * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE. |
AnnaBridge | 161:aa5281ff4a02 | 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
AnnaBridge | 161:aa5281ff4a02 | 24 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
AnnaBridge | 161:aa5281ff4a02 | 25 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
AnnaBridge | 161:aa5281ff4a02 | 26 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR |
AnnaBridge | 161:aa5281ff4a02 | 27 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
AnnaBridge | 161:aa5281ff4a02 | 28 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
AnnaBridge | 161:aa5281ff4a02 | 29 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
AnnaBridge | 161:aa5281ff4a02 | 30 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
AnnaBridge | 161:aa5281ff4a02 | 31 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
AnnaBridge | 161:aa5281ff4a02 | 32 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
AnnaBridge | 161:aa5281ff4a02 | 33 | */ |
AnnaBridge | 161:aa5281ff4a02 | 34 | |
AnnaBridge | 161:aa5281ff4a02 | 35 | #ifndef _FSL_XBARA_H_ |
AnnaBridge | 161:aa5281ff4a02 | 36 | #define _FSL_XBARA_H_ |
AnnaBridge | 161:aa5281ff4a02 | 37 | |
AnnaBridge | 161:aa5281ff4a02 | 38 | #include "fsl_common.h" |
AnnaBridge | 161:aa5281ff4a02 | 39 | |
AnnaBridge | 161:aa5281ff4a02 | 40 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 41 | * @addtogroup xbara |
AnnaBridge | 161:aa5281ff4a02 | 42 | * @{ |
AnnaBridge | 161:aa5281ff4a02 | 43 | */ |
AnnaBridge | 161:aa5281ff4a02 | 44 | |
AnnaBridge | 161:aa5281ff4a02 | 45 | /******************************************************************************* |
AnnaBridge | 161:aa5281ff4a02 | 46 | * Definitions |
AnnaBridge | 161:aa5281ff4a02 | 47 | ******************************************************************************/ |
AnnaBridge | 161:aa5281ff4a02 | 48 | |
AnnaBridge | 161:aa5281ff4a02 | 49 | #define FSL_XBARA_DRIVER_VERSION (MAKE_VERSION(2, 0, 3)) /*!< Version 2.0.3. */ |
AnnaBridge | 161:aa5281ff4a02 | 50 | |
AnnaBridge | 161:aa5281ff4a02 | 51 | /* Macros for entire XBARA_SELx register. */ |
AnnaBridge | 161:aa5281ff4a02 | 52 | #define XBARA_SELx(base, output) (*(volatile uint16_t *)((uintptr_t) & (base->SEL0) + ((output) / 2U) * 2U)) |
AnnaBridge | 161:aa5281ff4a02 | 53 | /* Set the XBARA_SELx_SELx field to a new value. */ |
AnnaBridge | 161:aa5281ff4a02 | 54 | #define XBARA_WR_SELx_SELx(base, input, output) \ |
AnnaBridge | 161:aa5281ff4a02 | 55 | (XBARA_SELx((base), (output)) = \ |
AnnaBridge | 161:aa5281ff4a02 | 56 | ((XBARA_SELx((base), (output)) & ~(0xFFU << (XBARA_SEL0_SEL1_SHIFT * ((output) % 2U)))) | \ |
AnnaBridge | 161:aa5281ff4a02 | 57 | ((input) << (XBARA_SEL0_SEL1_SHIFT * ((output) % 2U))))) |
AnnaBridge | 161:aa5281ff4a02 | 58 | |
AnnaBridge | 161:aa5281ff4a02 | 59 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 60 | * @brief XBARA active edge for detection |
AnnaBridge | 161:aa5281ff4a02 | 61 | */ |
AnnaBridge | 161:aa5281ff4a02 | 62 | typedef enum _xbara_active_edge |
AnnaBridge | 161:aa5281ff4a02 | 63 | { |
AnnaBridge | 161:aa5281ff4a02 | 64 | kXBARA_EdgeNone = 0U, /*!< Edge detection status bit never asserts. */ |
AnnaBridge | 161:aa5281ff4a02 | 65 | kXBARA_EdgeRising = 1U, /*!< Edge detection status bit asserts on rising edges. */ |
AnnaBridge | 161:aa5281ff4a02 | 66 | kXBARA_EdgeFalling = 2U, /*!< Edge detection status bit asserts on falling edges. */ |
AnnaBridge | 161:aa5281ff4a02 | 67 | kXBARA_EdgeRisingAndFalling = 3U /*!< Edge detection status bit asserts on rising and falling edges. */ |
AnnaBridge | 161:aa5281ff4a02 | 68 | } xbara_active_edge_t; |
AnnaBridge | 161:aa5281ff4a02 | 69 | |
AnnaBridge | 161:aa5281ff4a02 | 70 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 71 | * @brief Defines the XBARA DMA and interrupt configurations. |
AnnaBridge | 161:aa5281ff4a02 | 72 | */ |
AnnaBridge | 161:aa5281ff4a02 | 73 | typedef enum _xbar_request |
AnnaBridge | 161:aa5281ff4a02 | 74 | { |
AnnaBridge | 161:aa5281ff4a02 | 75 | kXBARA_RequestDisable = 0U, /*!< Interrupt and DMA are disabled. */ |
AnnaBridge | 161:aa5281ff4a02 | 76 | kXBARA_RequestDMAEnable = 1U, /*!< DMA enabled, interrupt disabled. */ |
AnnaBridge | 161:aa5281ff4a02 | 77 | kXBARA_RequestInterruptEnalbe = 2U /*!< Interrupt enabled, DMA disabled. */ |
AnnaBridge | 161:aa5281ff4a02 | 78 | } xbara_request_t; |
AnnaBridge | 161:aa5281ff4a02 | 79 | |
AnnaBridge | 161:aa5281ff4a02 | 80 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 81 | * @brief XBARA status flags. |
AnnaBridge | 161:aa5281ff4a02 | 82 | * |
AnnaBridge | 161:aa5281ff4a02 | 83 | * This provides constants for the XBARA status flags for use in the XBARA functions. |
AnnaBridge | 161:aa5281ff4a02 | 84 | */ |
AnnaBridge | 161:aa5281ff4a02 | 85 | typedef enum _xbara_status_flag_t |
AnnaBridge | 161:aa5281ff4a02 | 86 | { |
AnnaBridge | 161:aa5281ff4a02 | 87 | kXBARA_EdgeDetectionOut0 = |
AnnaBridge | 161:aa5281ff4a02 | 88 | (XBARA_CTRL0_STS0_MASK), /*!< XBAR_OUT0 active edge interrupt flag, sets when active edge detected. */ |
AnnaBridge | 161:aa5281ff4a02 | 89 | kXBARA_EdgeDetectionOut1 = |
AnnaBridge | 161:aa5281ff4a02 | 90 | (XBARA_CTRL0_STS1_MASK), /*!< XBAR_OUT1 active edge interrupt flag, sets when active edge detected. */ |
AnnaBridge | 161:aa5281ff4a02 | 91 | kXBARA_EdgeDetectionOut2 = |
AnnaBridge | 161:aa5281ff4a02 | 92 | (XBARA_CTRL1_STS2_MASK << 16U), /*!< XBAR_OUT2 active edge interrupt flag, sets when active edge detected. */ |
AnnaBridge | 161:aa5281ff4a02 | 93 | kXBARA_EdgeDetectionOut3 = |
AnnaBridge | 161:aa5281ff4a02 | 94 | (XBARA_CTRL1_STS3_MASK << 16U), /*!< XBAR_OUT3 active edge interrupt flag, sets when active edge detected. */ |
AnnaBridge | 161:aa5281ff4a02 | 95 | } xbara_status_flag_t; |
AnnaBridge | 161:aa5281ff4a02 | 96 | |
AnnaBridge | 161:aa5281ff4a02 | 97 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 98 | * @brief Defines the configuration structure of the XBARA control register. |
AnnaBridge | 161:aa5281ff4a02 | 99 | * |
AnnaBridge | 161:aa5281ff4a02 | 100 | * This structure keeps the configuration of XBARA control register for one output. |
AnnaBridge | 161:aa5281ff4a02 | 101 | * Control registers are available only for a few outputs. Not every XBARA module has |
AnnaBridge | 161:aa5281ff4a02 | 102 | * control registers. |
AnnaBridge | 161:aa5281ff4a02 | 103 | */ |
AnnaBridge | 161:aa5281ff4a02 | 104 | typedef struct XBARAControlConfig |
AnnaBridge | 161:aa5281ff4a02 | 105 | { |
AnnaBridge | 161:aa5281ff4a02 | 106 | xbara_active_edge_t activeEdge; /*!< Active edge to be detected. */ |
AnnaBridge | 161:aa5281ff4a02 | 107 | xbara_request_t requestType; /*!< Selects DMA/Interrupt request. */ |
AnnaBridge | 161:aa5281ff4a02 | 108 | } xbara_control_config_t; |
AnnaBridge | 161:aa5281ff4a02 | 109 | |
AnnaBridge | 161:aa5281ff4a02 | 110 | /******************************************************************************* |
AnnaBridge | 161:aa5281ff4a02 | 111 | * API |
AnnaBridge | 161:aa5281ff4a02 | 112 | ******************************************************************************/ |
AnnaBridge | 161:aa5281ff4a02 | 113 | |
AnnaBridge | 161:aa5281ff4a02 | 114 | #if defined(__cplusplus) |
AnnaBridge | 161:aa5281ff4a02 | 115 | extern "C" { |
AnnaBridge | 161:aa5281ff4a02 | 116 | #endif /* __cplusplus */ |
AnnaBridge | 161:aa5281ff4a02 | 117 | |
AnnaBridge | 161:aa5281ff4a02 | 118 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 119 | * @name XBARA functional Operation. |
AnnaBridge | 161:aa5281ff4a02 | 120 | * @{ |
AnnaBridge | 161:aa5281ff4a02 | 121 | */ |
AnnaBridge | 161:aa5281ff4a02 | 122 | |
AnnaBridge | 161:aa5281ff4a02 | 123 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 124 | * @brief Initializes the XBARA module. |
AnnaBridge | 161:aa5281ff4a02 | 125 | * |
AnnaBridge | 161:aa5281ff4a02 | 126 | * This function un-gates the XBARA clock. |
AnnaBridge | 161:aa5281ff4a02 | 127 | * |
AnnaBridge | 161:aa5281ff4a02 | 128 | * @param base XBARA peripheral address. |
AnnaBridge | 161:aa5281ff4a02 | 129 | */ |
AnnaBridge | 161:aa5281ff4a02 | 130 | void XBARA_Init(XBARA_Type *base); |
AnnaBridge | 161:aa5281ff4a02 | 131 | |
AnnaBridge | 161:aa5281ff4a02 | 132 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 133 | * @brief Shuts down the XBARA module. |
AnnaBridge | 161:aa5281ff4a02 | 134 | * |
AnnaBridge | 161:aa5281ff4a02 | 135 | * This function disables XBARA clock. |
AnnaBridge | 161:aa5281ff4a02 | 136 | * |
AnnaBridge | 161:aa5281ff4a02 | 137 | * @param base XBARA peripheral address. |
AnnaBridge | 161:aa5281ff4a02 | 138 | */ |
AnnaBridge | 161:aa5281ff4a02 | 139 | void XBARA_Deinit(XBARA_Type *base); |
AnnaBridge | 161:aa5281ff4a02 | 140 | |
AnnaBridge | 161:aa5281ff4a02 | 141 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 142 | * @brief Sets a connection between the selected XBARA_IN[*] input and the XBARA_OUT[*] output signal. |
AnnaBridge | 161:aa5281ff4a02 | 143 | * |
AnnaBridge | 161:aa5281ff4a02 | 144 | * This function connects the XBARA input to the selected XBARA output. |
AnnaBridge | 161:aa5281ff4a02 | 145 | * If more than one XBARA module is available, only the inputs and outputs from the same module |
AnnaBridge | 161:aa5281ff4a02 | 146 | * can be connected. |
AnnaBridge | 161:aa5281ff4a02 | 147 | * |
AnnaBridge | 161:aa5281ff4a02 | 148 | * Example: |
AnnaBridge | 161:aa5281ff4a02 | 149 | @code |
AnnaBridge | 161:aa5281ff4a02 | 150 | XBARA_SetSignalsConnection(XBARA, kXBARA_InputPIT_TRG0, kXBARA_OutputDMAMUX18); |
AnnaBridge | 161:aa5281ff4a02 | 151 | @endcode |
AnnaBridge | 161:aa5281ff4a02 | 152 | * |
AnnaBridge | 161:aa5281ff4a02 | 153 | * @param base XBARA peripheral address. |
AnnaBridge | 161:aa5281ff4a02 | 154 | * @param input XBARA input signal. |
AnnaBridge | 161:aa5281ff4a02 | 155 | * @param output XBARA output signal. |
AnnaBridge | 161:aa5281ff4a02 | 156 | */ |
AnnaBridge | 161:aa5281ff4a02 | 157 | void XBARA_SetSignalsConnection(XBARA_Type *base, xbar_input_signal_t input, xbar_output_signal_t output); |
AnnaBridge | 161:aa5281ff4a02 | 158 | |
AnnaBridge | 161:aa5281ff4a02 | 159 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 160 | * @brief Gets the active edge detection status. |
AnnaBridge | 161:aa5281ff4a02 | 161 | * |
AnnaBridge | 161:aa5281ff4a02 | 162 | * This function gets the active edge detect status of all XBARA_OUTs. If the |
AnnaBridge | 161:aa5281ff4a02 | 163 | * active edge occurs, the return value is asserted. When the interrupt or the DMA |
AnnaBridge | 161:aa5281ff4a02 | 164 | * functionality is enabled for the XBARA_OUTx, this field is 1 when the interrupt |
AnnaBridge | 161:aa5281ff4a02 | 165 | * or DMA request is asserted and 0 when the interrupt or DMA request has been |
AnnaBridge | 161:aa5281ff4a02 | 166 | * cleared. |
AnnaBridge | 161:aa5281ff4a02 | 167 | * |
AnnaBridge | 161:aa5281ff4a02 | 168 | * @param base XBARA peripheral address. |
AnnaBridge | 161:aa5281ff4a02 | 169 | * @return the mask of these status flag bits. |
AnnaBridge | 161:aa5281ff4a02 | 170 | */ |
AnnaBridge | 161:aa5281ff4a02 | 171 | uint32_t XBARA_GetStatusFlags(XBARA_Type *base); |
AnnaBridge | 161:aa5281ff4a02 | 172 | |
AnnaBridge | 161:aa5281ff4a02 | 173 | /*! |
AnnaBridge | 170:e95d10626187 | 174 | * @brief Clears the edge detection status flags of relative mask. |
AnnaBridge | 161:aa5281ff4a02 | 175 | * |
AnnaBridge | 161:aa5281ff4a02 | 176 | * @param base XBARA peripheral address. |
AnnaBridge | 161:aa5281ff4a02 | 177 | * @param mask the status flags to clear. |
AnnaBridge | 161:aa5281ff4a02 | 178 | */ |
AnnaBridge | 161:aa5281ff4a02 | 179 | void XBARA_ClearStatusFlags(XBARA_Type *base, uint32_t mask); |
AnnaBridge | 161:aa5281ff4a02 | 180 | |
AnnaBridge | 161:aa5281ff4a02 | 181 | /*! |
AnnaBridge | 161:aa5281ff4a02 | 182 | * @brief Configures the XBARA control register. |
AnnaBridge | 161:aa5281ff4a02 | 183 | * |
AnnaBridge | 161:aa5281ff4a02 | 184 | * This function configures an XBARA control register. The active edge detection |
AnnaBridge | 161:aa5281ff4a02 | 185 | * and the DMA/IRQ function on the corresponding XBARA output can be set. |
AnnaBridge | 161:aa5281ff4a02 | 186 | * |
AnnaBridge | 161:aa5281ff4a02 | 187 | * Example: |
AnnaBridge | 161:aa5281ff4a02 | 188 | @code |
AnnaBridge | 161:aa5281ff4a02 | 189 | xbara_control_config_t userConfig; |
AnnaBridge | 161:aa5281ff4a02 | 190 | userConfig.activeEdge = kXBARA_EdgeRising; |
AnnaBridge | 161:aa5281ff4a02 | 191 | userConfig.requestType = kXBARA_RequestInterruptEnalbe; |
AnnaBridge | 161:aa5281ff4a02 | 192 | XBARA_SetOutputSignalConfig(XBARA, kXBARA_OutputDMAMUX18, &userConfig); |
AnnaBridge | 161:aa5281ff4a02 | 193 | @endcode |
AnnaBridge | 161:aa5281ff4a02 | 194 | * |
AnnaBridge | 161:aa5281ff4a02 | 195 | * @param base XBARA peripheral address. |
AnnaBridge | 161:aa5281ff4a02 | 196 | * @param output XBARA output number. |
AnnaBridge | 161:aa5281ff4a02 | 197 | * @param controlConfig Pointer to structure that keeps configuration of control register. |
AnnaBridge | 161:aa5281ff4a02 | 198 | */ |
AnnaBridge | 161:aa5281ff4a02 | 199 | void XBARA_SetOutputSignalConfig(XBARA_Type *base, |
AnnaBridge | 161:aa5281ff4a02 | 200 | xbar_output_signal_t output, |
AnnaBridge | 161:aa5281ff4a02 | 201 | const xbara_control_config_t *controlConfig); |
AnnaBridge | 161:aa5281ff4a02 | 202 | |
AnnaBridge | 161:aa5281ff4a02 | 203 | #if defined(__cplusplus) |
AnnaBridge | 161:aa5281ff4a02 | 204 | } |
AnnaBridge | 161:aa5281ff4a02 | 205 | #endif /* __cplusplus */ |
AnnaBridge | 161:aa5281ff4a02 | 206 | |
AnnaBridge | 161:aa5281ff4a02 | 207 | /*! @}*/ |
AnnaBridge | 161:aa5281ff4a02 | 208 | |
AnnaBridge | 161:aa5281ff4a02 | 209 | /*!* @} */ |
AnnaBridge | 161:aa5281ff4a02 | 210 | |
AnnaBridge | 161:aa5281ff4a02 | 211 | #endif /* _FSL_XBARA_H_ */ |