mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_NUVOTON/TARGET_NANO100/device/StdDriver/nano100_ebi.c@174:b96e65c34a4d, 2017-10-02 (annotated)
- Committer:
- AnnaBridge
- Date:
- Mon Oct 02 15:33:19 2017 +0100
- Revision:
- 174:b96e65c34a4d
This updates the lib to the mbed lib v 152
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 174:b96e65c34a4d | 1 | /****************************************************************************//** |
AnnaBridge | 174:b96e65c34a4d | 2 | * @file ebi.c |
AnnaBridge | 174:b96e65c34a4d | 3 | * @version V0.10 |
AnnaBridge | 174:b96e65c34a4d | 4 | * $Revision: 3 $ |
AnnaBridge | 174:b96e65c34a4d | 5 | * $Date: 14/02/05 10:36a $ |
AnnaBridge | 174:b96e65c34a4d | 6 | * @brief NANO100 series EBI driver source file |
AnnaBridge | 174:b96e65c34a4d | 7 | * |
AnnaBridge | 174:b96e65c34a4d | 8 | * @note |
AnnaBridge | 174:b96e65c34a4d | 9 | * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved. |
AnnaBridge | 174:b96e65c34a4d | 10 | *****************************************************************************/ |
AnnaBridge | 174:b96e65c34a4d | 11 | #include "Nano100Series.h" |
AnnaBridge | 174:b96e65c34a4d | 12 | //#include "ebi.h" |
AnnaBridge | 174:b96e65c34a4d | 13 | |
AnnaBridge | 174:b96e65c34a4d | 14 | |
AnnaBridge | 174:b96e65c34a4d | 15 | /** @addtogroup NANO100_Device_Driver NANO100 Device Driver |
AnnaBridge | 174:b96e65c34a4d | 16 | @{ |
AnnaBridge | 174:b96e65c34a4d | 17 | */ |
AnnaBridge | 174:b96e65c34a4d | 18 | |
AnnaBridge | 174:b96e65c34a4d | 19 | /** @addtogroup NANO100_EBI_Driver EBI Driver |
AnnaBridge | 174:b96e65c34a4d | 20 | @{ |
AnnaBridge | 174:b96e65c34a4d | 21 | */ |
AnnaBridge | 174:b96e65c34a4d | 22 | |
AnnaBridge | 174:b96e65c34a4d | 23 | |
AnnaBridge | 174:b96e65c34a4d | 24 | /** @addtogroup NANO100_EBI_EXPORTED_FUNCTIONS EBI Exported Functions |
AnnaBridge | 174:b96e65c34a4d | 25 | @{ |
AnnaBridge | 174:b96e65c34a4d | 26 | */ |
AnnaBridge | 174:b96e65c34a4d | 27 | |
AnnaBridge | 174:b96e65c34a4d | 28 | /** |
AnnaBridge | 174:b96e65c34a4d | 29 | * @brief Initialize and enable EBI |
AnnaBridge | 174:b96e65c34a4d | 30 | * @param[in] u32Bank argument is reserved in NANO100 series. |
AnnaBridge | 174:b96e65c34a4d | 31 | * @param[in] u32DataWidth Data bus width. Valid values are: |
AnnaBridge | 174:b96e65c34a4d | 32 | * - \ref EBI_BUSWIDTH_8BIT |
AnnaBridge | 174:b96e65c34a4d | 33 | * - \ref EBI_BUSWIDTH_16BIT |
AnnaBridge | 174:b96e65c34a4d | 34 | * @param[in] u32TimingClass Default timing configuration. Valid values are: |
AnnaBridge | 174:b96e65c34a4d | 35 | * - \ref EBI_TIMING_FASTEST |
AnnaBridge | 174:b96e65c34a4d | 36 | * - \ref EBI_TIMING_VERYFAST |
AnnaBridge | 174:b96e65c34a4d | 37 | * - \ref EBI_TIMING_FAST |
AnnaBridge | 174:b96e65c34a4d | 38 | * - \ref EBI_TIMING_NORMAL |
AnnaBridge | 174:b96e65c34a4d | 39 | * - \ref EBI_TIMING_SLOW |
AnnaBridge | 174:b96e65c34a4d | 40 | * - \ref EBI_TIMING_VERYSLOW |
AnnaBridge | 174:b96e65c34a4d | 41 | * - \ref EBI_TIMING_SLOWEST |
AnnaBridge | 174:b96e65c34a4d | 42 | * @param[in] u32BusMode argument is reserved in NANO100 series. |
AnnaBridge | 174:b96e65c34a4d | 43 | * @param[in] u32CSActiveLevel argument is reserved in NANO100 series. |
AnnaBridge | 174:b96e65c34a4d | 44 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 45 | */ |
AnnaBridge | 174:b96e65c34a4d | 46 | void EBI_Open(uint32_t u32Bank, uint32_t u32DataWidth, uint32_t u32TimingClass, uint32_t u32BusMode, uint32_t u32CSActiveLevel) |
AnnaBridge | 174:b96e65c34a4d | 47 | { |
AnnaBridge | 174:b96e65c34a4d | 48 | EBI->EBICON = 0; |
AnnaBridge | 174:b96e65c34a4d | 49 | |
AnnaBridge | 174:b96e65c34a4d | 50 | if (u32DataWidth == EBI_BUSWIDTH_8BIT) |
AnnaBridge | 174:b96e65c34a4d | 51 | EBI->EBICON &= ~EBI_EBICON_ExtBW16_Msk; |
AnnaBridge | 174:b96e65c34a4d | 52 | else |
AnnaBridge | 174:b96e65c34a4d | 53 | EBI->EBICON |= EBI_EBICON_ExtBW16_Msk; |
AnnaBridge | 174:b96e65c34a4d | 54 | |
AnnaBridge | 174:b96e65c34a4d | 55 | EBI->EBICON &= ~(EBI_EBICON_ExttALE_Msk | EBI_EBICON_MCLKDIV_Msk); |
AnnaBridge | 174:b96e65c34a4d | 56 | switch (u32TimingClass) { |
AnnaBridge | 174:b96e65c34a4d | 57 | case EBI_TIMING_FASTEST: |
AnnaBridge | 174:b96e65c34a4d | 58 | EBI->EBICON |= (0 << EBI_EBICON_ExttALE_Pos); |
AnnaBridge | 174:b96e65c34a4d | 59 | EBI->EBICON |= (EBI_MCLKDIV_1 << EBI_EBICON_MCLKDIV_Pos); |
AnnaBridge | 174:b96e65c34a4d | 60 | EBI->EXTIME = 0; |
AnnaBridge | 174:b96e65c34a4d | 61 | break; |
AnnaBridge | 174:b96e65c34a4d | 62 | |
AnnaBridge | 174:b96e65c34a4d | 63 | case EBI_TIMING_VERYFAST: |
AnnaBridge | 174:b96e65c34a4d | 64 | EBI->EBICON |= (1 << EBI_EBICON_ExttALE_Pos); |
AnnaBridge | 174:b96e65c34a4d | 65 | EBI->EBICON |= (EBI_MCLKDIV_2 << EBI_EBICON_MCLKDIV_Pos); |
AnnaBridge | 174:b96e65c34a4d | 66 | EBI->EXTIME = (4 << EBI_EXTIME_ExttACC_Pos) | (1 << EBI_EXTIME_ExttAHD_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 67 | (2 << EBI_EXTIME_ExtIW2X_Pos) | (2 << EBI_EXTIME_ExtIR2W_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 68 | (2 << EBI_EXTIME_ExtIR2R_Pos); |
AnnaBridge | 174:b96e65c34a4d | 69 | break; |
AnnaBridge | 174:b96e65c34a4d | 70 | |
AnnaBridge | 174:b96e65c34a4d | 71 | case EBI_TIMING_FAST: |
AnnaBridge | 174:b96e65c34a4d | 72 | EBI->EBICON |= (2 << EBI_EBICON_ExttALE_Pos); |
AnnaBridge | 174:b96e65c34a4d | 73 | EBI->EBICON |= (EBI_MCLKDIV_4 << EBI_EBICON_MCLKDIV_Pos); |
AnnaBridge | 174:b96e65c34a4d | 74 | EBI->EXTIME = (8 << EBI_EXTIME_ExttACC_Pos) | (2 << EBI_EXTIME_ExttAHD_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 75 | (4 << EBI_EXTIME_ExtIW2X_Pos) | (4 << EBI_EXTIME_ExtIR2W_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 76 | (4 << EBI_EXTIME_ExtIR2R_Pos); |
AnnaBridge | 174:b96e65c34a4d | 77 | break; |
AnnaBridge | 174:b96e65c34a4d | 78 | |
AnnaBridge | 174:b96e65c34a4d | 79 | case EBI_TIMING_NORMAL: |
AnnaBridge | 174:b96e65c34a4d | 80 | EBI->EBICON |= (3 << EBI_EBICON_ExttALE_Pos); |
AnnaBridge | 174:b96e65c34a4d | 81 | EBI->EBICON |= (EBI_MCLKDIV_8 << EBI_EBICON_MCLKDIV_Pos); |
AnnaBridge | 174:b96e65c34a4d | 82 | EBI->EXTIME = (16 << EBI_EXTIME_ExttACC_Pos) | (3 << EBI_EXTIME_ExttAHD_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 83 | (8 << EBI_EXTIME_ExtIW2X_Pos) | (8 << EBI_EXTIME_ExtIR2W_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 84 | (8 << EBI_EXTIME_ExtIR2R_Pos); |
AnnaBridge | 174:b96e65c34a4d | 85 | break; |
AnnaBridge | 174:b96e65c34a4d | 86 | |
AnnaBridge | 174:b96e65c34a4d | 87 | case EBI_TIMING_SLOW: |
AnnaBridge | 174:b96e65c34a4d | 88 | EBI->EBICON |= (4 << EBI_EBICON_ExttALE_Pos); |
AnnaBridge | 174:b96e65c34a4d | 89 | EBI->EBICON |= (EBI_MCLKDIV_16 << EBI_EBICON_MCLKDIV_Pos); |
AnnaBridge | 174:b96e65c34a4d | 90 | EBI->EXTIME = (20 << EBI_EXTIME_ExttACC_Pos) | (4 << EBI_EXTIME_ExttAHD_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 91 | (12 << EBI_EXTIME_ExtIW2X_Pos) | (12 << EBI_EXTIME_ExtIR2W_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 92 | (12 << EBI_EXTIME_ExtIR2R_Pos); |
AnnaBridge | 174:b96e65c34a4d | 93 | break; |
AnnaBridge | 174:b96e65c34a4d | 94 | |
AnnaBridge | 174:b96e65c34a4d | 95 | case EBI_TIMING_VERYSLOW: |
AnnaBridge | 174:b96e65c34a4d | 96 | EBI->EBICON |= (5 << EBI_EBICON_ExttALE_Pos); |
AnnaBridge | 174:b96e65c34a4d | 97 | EBI->EBICON |= (EBI_MCLKDIV_32 << EBI_EBICON_MCLKDIV_Pos); |
AnnaBridge | 174:b96e65c34a4d | 98 | EBI->EXTIME = (26 << EBI_EXTIME_ExttACC_Pos) | (5 << EBI_EXTIME_ExttAHD_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 99 | (14 << EBI_EXTIME_ExtIW2X_Pos) | (14 << EBI_EXTIME_ExtIR2W_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 100 | (14 << EBI_EXTIME_ExtIR2R_Pos); |
AnnaBridge | 174:b96e65c34a4d | 101 | break; |
AnnaBridge | 174:b96e65c34a4d | 102 | |
AnnaBridge | 174:b96e65c34a4d | 103 | case EBI_TIMING_SLOWEST: |
AnnaBridge | 174:b96e65c34a4d | 104 | EBI->EBICON |= (6 << EBI_EBICON_ExttALE_Pos); |
AnnaBridge | 174:b96e65c34a4d | 105 | EBI->EBICON |= (EBI_MCLKDIV_32 << EBI_EBICON_MCLKDIV_Pos); |
AnnaBridge | 174:b96e65c34a4d | 106 | EBI->EXTIME = (31 << EBI_EXTIME_ExttACC_Pos) | (7 << EBI_EXTIME_ExttAHD_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 107 | (15 << EBI_EXTIME_ExtIW2X_Pos) | (15 << EBI_EXTIME_ExtIR2W_Pos) | |
AnnaBridge | 174:b96e65c34a4d | 108 | (15 << EBI_EXTIME_ExtIR2R_Pos); |
AnnaBridge | 174:b96e65c34a4d | 109 | break; |
AnnaBridge | 174:b96e65c34a4d | 110 | } |
AnnaBridge | 174:b96e65c34a4d | 111 | |
AnnaBridge | 174:b96e65c34a4d | 112 | EBI->EBICON |= EBI_EBICON_MCLKEN_Msk | EBI_EBICON_ExtEN_Msk; |
AnnaBridge | 174:b96e65c34a4d | 113 | } |
AnnaBridge | 174:b96e65c34a4d | 114 | |
AnnaBridge | 174:b96e65c34a4d | 115 | /** |
AnnaBridge | 174:b96e65c34a4d | 116 | * @brief Disable EBI |
AnnaBridge | 174:b96e65c34a4d | 117 | * @param[in] u32Bank argument is reserved in NANO100 series. |
AnnaBridge | 174:b96e65c34a4d | 118 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 119 | */ |
AnnaBridge | 174:b96e65c34a4d | 120 | void EBI_Close(uint8_t u32Bank) |
AnnaBridge | 174:b96e65c34a4d | 121 | { |
AnnaBridge | 174:b96e65c34a4d | 122 | EBI->EBICON = 0; |
AnnaBridge | 174:b96e65c34a4d | 123 | EBI->EXTIME = 0; |
AnnaBridge | 174:b96e65c34a4d | 124 | } |
AnnaBridge | 174:b96e65c34a4d | 125 | |
AnnaBridge | 174:b96e65c34a4d | 126 | /** |
AnnaBridge | 174:b96e65c34a4d | 127 | * @brief Set EBI bus timings |
AnnaBridge | 174:b96e65c34a4d | 128 | * @param[in] u32Bank argument is reserved in NANO100 series. |
AnnaBridge | 174:b96e65c34a4d | 129 | * @param[in] u32TimingConfig The new EBI timing settings. This value will be written to EXTIME register. |
AnnaBridge | 174:b96e65c34a4d | 130 | * @param[in] u32MclkDiv Divider for MCLK. Valid values are: |
AnnaBridge | 174:b96e65c34a4d | 131 | * - \ref EBI_MCLKDIV_1 |
AnnaBridge | 174:b96e65c34a4d | 132 | * - \ref EBI_MCLKDIV_2 |
AnnaBridge | 174:b96e65c34a4d | 133 | * - \ref EBI_MCLKDIV_4 |
AnnaBridge | 174:b96e65c34a4d | 134 | * - \ref EBI_MCLKDIV_8 |
AnnaBridge | 174:b96e65c34a4d | 135 | * - \ref EBI_MCLKDIV_16 |
AnnaBridge | 174:b96e65c34a4d | 136 | * - \ref EBI_MCLKDIV_32 |
AnnaBridge | 174:b96e65c34a4d | 137 | * @return none |
AnnaBridge | 174:b96e65c34a4d | 138 | */ |
AnnaBridge | 174:b96e65c34a4d | 139 | void EBI_SetBusTiming(uint32_t u32Bank, uint32_t u32TimingConfig, uint32_t u32MclkDiv) |
AnnaBridge | 174:b96e65c34a4d | 140 | { |
AnnaBridge | 174:b96e65c34a4d | 141 | EBI->EXTIME = u32TimingConfig; |
AnnaBridge | 174:b96e65c34a4d | 142 | EBI->EBICON = (EBI->EBICON & ~EBI_EBICON_MCLKDIV_Msk) | (u32MclkDiv << EBI_EBICON_MCLKDIV_Pos); |
AnnaBridge | 174:b96e65c34a4d | 143 | } |
AnnaBridge | 174:b96e65c34a4d | 144 | |
AnnaBridge | 174:b96e65c34a4d | 145 | |
AnnaBridge | 174:b96e65c34a4d | 146 | /*@}*/ /* end of group NANO100_EBI_EXPORTED_FUNCTIONS */ |
AnnaBridge | 174:b96e65c34a4d | 147 | |
AnnaBridge | 174:b96e65c34a4d | 148 | /*@}*/ /* end of group NANO100_EBI_Driver */ |
AnnaBridge | 174:b96e65c34a4d | 149 | |
AnnaBridge | 174:b96e65c34a4d | 150 | /*@}*/ /* end of group NANO100_Device_Driver */ |
AnnaBridge | 174:b96e65c34a4d | 151 | |
AnnaBridge | 174:b96e65c34a4d | 152 | /*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/ |