NANO100_BSP V3.04.002
The Board Support Package for Nano100BN Series
ebi.c
Go to the documentation of this file.
1/****************************************************************************/
12#include "Nano100Series.h"
13#include "ebi.h"
14
15
47void EBI_Open(uint32_t u32Bank, uint32_t u32DataWidth, uint32_t u32TimingClass, uint32_t u32BusMode, uint32_t u32CSActiveLevel)
48{
49 EBI->EBICON = 0;
50
51 if (u32DataWidth == EBI_BUSWIDTH_8BIT)
52 EBI->EBICON &= ~EBI_EBICON_ExtBW16_Msk;
53 else
54 EBI->EBICON |= EBI_EBICON_ExtBW16_Msk;
55
57 switch (u32TimingClass)
58 {
60 EBI->EBICON |= (0 << EBI_EBICON_ExttALE_Pos);
62 EBI->EXTIME = 0;
63 break;
64
66 EBI->EBICON |= (1 << EBI_EBICON_ExttALE_Pos);
68 EBI->EXTIME = (4 << EBI_EXTIME_ExttACC_Pos) | (1 << EBI_EXTIME_ExttAHD_Pos) |
71 break;
72
73 case EBI_TIMING_FAST:
74 EBI->EBICON |= (2 << EBI_EBICON_ExttALE_Pos);
76 EBI->EXTIME = (8 << EBI_EXTIME_ExttACC_Pos) | (2 << EBI_EXTIME_ExttAHD_Pos) |
79 break;
80
82 EBI->EBICON |= (3 << EBI_EBICON_ExttALE_Pos);
84 EBI->EXTIME = (16 << EBI_EXTIME_ExttACC_Pos) | (3 << EBI_EXTIME_ExttAHD_Pos) |
87 break;
88
89 case EBI_TIMING_SLOW:
90 EBI->EBICON |= (4 << EBI_EBICON_ExttALE_Pos);
92 EBI->EXTIME = (20 << EBI_EXTIME_ExttACC_Pos) | (4 << EBI_EXTIME_ExttAHD_Pos) |
95 break;
96
98 EBI->EBICON |= (5 << EBI_EBICON_ExttALE_Pos);
100 EBI->EXTIME = (26 << EBI_EXTIME_ExttACC_Pos) | (5 << EBI_EXTIME_ExttAHD_Pos) |
103 break;
104
106 EBI->EBICON |= (6 << EBI_EBICON_ExttALE_Pos);
108 EBI->EXTIME = (31 << EBI_EXTIME_ExttACC_Pos) | (7 << EBI_EXTIME_ExttAHD_Pos) |
111 break;
112 }
113
115}
116
122void EBI_Close(uint8_t u32Bank)
123{
124 EBI->EBICON = 0;
125 EBI->EXTIME = 0;
126}
127
141void EBI_SetBusTiming(uint32_t u32Bank, uint32_t u32TimingConfig, uint32_t u32MclkDiv)
142{
143 EBI->EXTIME = u32TimingConfig;
144 EBI->EBICON = (EBI->EBICON & ~EBI_EBICON_MCLKDIV_Msk) | (u32MclkDiv << EBI_EBICON_MCLKDIV_Pos);
145}
146
147 /* end of group NANO100_EBI_EXPORTED_FUNCTIONS */
149 /* end of group NANO100_EBI_Driver */
151 /* end of group NANO100_Device_Driver */
153
154/*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/
Nano100 series peripheral access layer header file. This file contains all the peripheral register's ...
#define EBI_EBICON_ExttALE_Msk
#define EBI_EXTIME_ExtIR2W_Pos
#define EBI_EBICON_MCLKDIV_Msk
#define EBI_EXTIME_ExttAHD_Pos
#define EBI_EXTIME_ExttACC_Pos
#define EBI_EBICON_MCLKEN_Msk
#define EBI_EXTIME_ExtIR2R_Pos
#define EBI_EXTIME_ExtIW2X_Pos
#define EBI_EBICON_ExtBW16_Msk
#define EBI_EBICON_ExttALE_Pos
#define EBI_EBICON_MCLKDIV_Pos
#define EBI_EBICON_ExtEN_Msk
Nano100 Series Flash Memory Controller Driver Header File.
#define EBI_TIMING_VERYFAST
Definition: ebi.h:60
#define EBI_MCLKDIV_4
Definition: ebi.h:51
#define EBI_MCLKDIV_1
Definition: ebi.h:49
#define EBI_MCLKDIV_8
Definition: ebi.h:52
#define EBI_MCLKDIV_16
Definition: ebi.h:53
#define EBI_MCLKDIV_2
Definition: ebi.h:50
#define EBI_MCLKDIV_32
Definition: ebi.h:54
#define EBI_TIMING_FASTEST
Definition: ebi.h:59
#define EBI_TIMING_FAST
Definition: ebi.h:61
#define EBI_BUSWIDTH_8BIT
Definition: ebi.h:43
#define EBI_TIMING_VERYSLOW
Definition: ebi.h:64
#define EBI_TIMING_NORMAL
Definition: ebi.h:62
#define EBI_TIMING_SLOW
Definition: ebi.h:63
#define EBI_TIMING_SLOWEST
Definition: ebi.h:65
void EBI_Open(uint32_t u32Bank, uint32_t u32DataWidth, uint32_t u32TimingClass, uint32_t u32BusMode, uint32_t u32CSActiveLevel)
Initialize and enable EBI.
Definition: ebi.c:47
void EBI_Close(uint8_t u32Bank)
Disable EBI.
Definition: ebi.c:122
void EBI_SetBusTiming(uint32_t u32Bank, uint32_t u32TimingConfig, uint32_t u32MclkDiv)
Set EBI bus timings.
Definition: ebi.c:141
#define EBI
Pointer to EBI register structure.