Rev 1 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1 | Rev 196 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** |
1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** |
2 | * File Name : 91x_emi.c |
2 | * File Name : 91x_emi.c |
3 | * Author : MCD Application Team |
3 | * Author : MCD Application Team |
- | 4 | * Version : V2.1 |
|
4 | * Date First Issued : 05/18/2006 : Version 1.0 |
5 | * Date : 12/22/2008 |
5 | * Description : This file provides all the EMI software functions. |
6 | * Description : This file provides all the EMI firmware functions. |
6 | ******************************************************************************** |
- | |
7 | * History: |
- | |
8 | * 05/22/2007 : Version 1.2 |
- | |
9 | * 05/24/2006 : Version 1.1 |
- | |
10 | * 05/18/2006 : Version 1.0 |
- | |
11 | ******************************************************************************** |
7 | ******************************************************************************** |
12 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS |
8 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS |
13 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. |
9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. |
14 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, |
10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, |
15 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE |
11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE |
Line 23... | Line 19... | ||
23 | /* Private typedef -----------------------------------------------------------*/ |
19 | /* Private typedef -----------------------------------------------------------*/ |
24 | /* Private define ------------------------------------------------------------*/ |
20 | /* Private define ------------------------------------------------------------*/ |
Line 25... | Line 21... | ||
25 | 21 | ||
Line -... | Line 22... | ||
- | 22 | /* These constant variables are used as masks to handle the EMI registers. */ |
|
26 | /* These constant variables are used as masks to handle the EMI registers. */ |
23 | |
27 | 24 | ||
28 | #define EMI_PageModeRead_TL_Mask 0xFFFFF3FF |
25 | #define EMI_Burst_and_PageModeRead_TL_Mask 0xFFFFF3FF |
29 | #define EMI_PageModeRead_Sel_Mask 0xFFFFFEFF |
26 | #define EMI_Burst_and_PageModeRead_Sel_Mask 0xFFFFFEFF |
- | 27 | #define EMI_MemWidth_Mask 0xFFFFFFCF |
|
- | 28 | #define EMI_WriteProtect_Mask 0xFFFFFFF7 |
|
- | 29 | #define EMI_ByteLane_Mask 0xFFFFFFFE |
|
- | 30 | #define EMI_AccessRead_Dev_Mask 0xFFFFFDFF |
|
- | 31 | #define EMI_BurstModeWrite_Sel_Mask 0xFFFEFFFF |
|
Line 30... | Line 32... | ||
30 | #define EMI_MemWidth_Mask 0xFFFFFFCF |
32 | #define EMI_AccessWrite_Dev_Mask 0xFFFDFFFF |
31 | #define EMI_WriteProtect_Mask 0xFFFFFEF7 |
33 | #define EMI_BurstModeWrite_TL_Mask 0xFFF3FFFF |
32 | 34 | ||
Line 92... | Line 94... | ||
92 | 94 | ||
93 | /*Write enable assertion delay from chip select assertion*/ |
95 | /*Write enable assertion delay from chip select assertion*/ |
Line 94... | Line 96... | ||
94 | /*This member can be: 0x01,0x02,0x03, ....0xF (Reset value:0x00 "0 cycle"*/ |
96 | /*This member can be: 0x01,0x02,0x03, ....0xF (Reset value:0x00 "0 cycle"*/ |
95 | 97 | ||
- | 98 | EMI_InitStruct->EMI_Bank_WSTWEN =0x00; |
|
- | 99 | ||
- | 100 | /*Number of wait states for burst read accesses after the first read.*/ |
|
- | 101 | /* They do not apply to non-burst devices.*/ |
|
- | 102 | /*This member can be: 0x01,0x02,0x03, ....0x1F (Reset value:0x1F "31 cycles"*/ |
|
Line 96... | Line 103... | ||
96 | EMI_InitStruct->EMI_Bank_WSTWEN =0x00; |
103 | |
97 | 104 | EMI_InitStruct->EMI_Bank_BRDCR =0x1F; |
|
Line 98... | Line 105... | ||
98 | 105 | ||
Line 106... | Line 113... | ||
106 | /*This member can be :"EMI_Bank_NonWriteProtect" = No write protection or "EMI_Bank_WriteProtect" = bank is write protected*/ |
113 | /*This member can be :"EMI_Bank_NonWriteProtect" = No write protection or "EMI_Bank_WriteProtect" = bank is write protected*/ |
Line 107... | Line 114... | ||
107 | 114 | ||
Line 108... | Line 115... | ||
108 | EMI_InitStruct-> EMI_Bank_WriteProtection= EMI_Bank_NonWriteProtect; |
115 | EMI_InitStruct-> EMI_Bank_WriteProtection= EMI_Bank_NonWriteProtect; |
109 | 116 | ||
- | 117 | ||
- | 118 | /* Burst Read or page mode transfer length */ |
|
110 | 119 | /*This member can be :"EMI_Read_4Data" or "EMI_Read_8Data" for page mode*/ |
|
111 | /* page transfer length for page mode read */ |
120 | /*Read and it can be "EMI_Read_4Data","EMI_Read_8Data","EMI_Read_16Data" */ |
112 | /*This member can be :"EMI_4Data" = 4 transfers burst or "EMI_8Data" = 8 transfers burst*/ |
121 | /*or "EMI_Read_Continuous"(synchronous only) for burst mode read*/ |
113 | 122 | ||
114 | EMI_InitStruct->EMI_PageModeRead_TransferLength= EMI_4Data; |
123 | EMI_InitStruct->EMI_Burst_and_PageModeRead_TransferLength= EMI_Read_4Data; |
115 | 124 | ||
116 | /*Select or deselect the page mode read*/ |
125 | /*Select or deselect the Burst and page mode read*/ |
- | 126 | /*This member can be :"EMI_NormalMode" or "EMI_BurstModeRead" */ |
|
- | 127 | ||
- | 128 | EMI_InitStruct->EMI_Burst_and_PageModeRead_Selection = EMI_NormalMode; |
|
- | 129 | ||
- | 130 | ||
- | 131 | /* Enables the byte select signals in 16-bit PSRAM bus mode*/ |
|
- | 132 | /*(EMI_UBn and EMI_LBn) are enabled. Bit 2 in the GPIO EMI register */ |
|
- | 133 | /*(SCU_EMI) must also be set to 1 */ |
|
- | 134 | ||
- | 135 | EMI_InitStruct->EMI_ByteLane_Selection=EMI_Byte_Select_disabled; |
|
- | 136 | ||
- | 137 | /*Access the device using synchronous accesses for reads*/ |
|
- | 138 | ||
- | 139 | EMI_InitStruct-> EMI_AccessRead_Support=EMI_Read_Asyn; |
|
- | 140 | ||
- | 141 | /*Access the device using synchronous accesses for Write*/ |
|
- | 142 | ||
- | 143 | EMI_InitStruct->EMI_AccessWrite_Support=EMI_Write_Asyn; |
|
- | 144 | ||
- | 145 | /* Burst Write transfer length */ |
|
- | 146 | /*This member can be :"EMI_Write_4Data", "EMI_Write_8Data" or */ |
|
- | 147 | /*"EMI_Write_Continuous" for synchronous only*/ |
|
- | 148 | ||
- | 149 | EMI_InitStruct->EMI_BurstModeWrite_TransferLength = EMI_Write_4Data; |
|
- | 150 | ||
117 | /*This member can be :"EMI_NormalMode" =Normal Mode or "EMI_PageModeRead" = Page Mode Read*/ |
151 | /* Select burst or non-burst write to memory*/ |
Line 118... | Line 152... | ||
118 | 152 | ||
Line 119... | Line 153... | ||
119 | EMI_InitStruct->EMI_PageModeRead_Selection = EMI_NormalMode; |
153 | EMI_InitStruct-> EMI_BurstModeWrite_Selection=EMI_NonBurstModeWrite; |
120 | 154 | ||
Line 145... | Line 179... | ||
145 | EMI_Bankx->WCR = EMI_InitStruct->EMI_Bank_WSTWR ; |
179 | EMI_Bankx->WCR = EMI_InitStruct->EMI_Bank_WSTWR ; |
Line 146... | Line 180... | ||
146 | 180 | ||
Line 147... | Line 181... | ||
147 | EMI_Bankx->OECR = EMI_InitStruct->EMI_Bank_WSTROEN; |
181 | EMI_Bankx->OECR = EMI_InitStruct->EMI_Bank_WSTROEN; |
148 | 182 | ||
- | 183 | EMI_Bankx->WECR = EMI_InitStruct->EMI_Bank_WSTWEN ; |
|
- | 184 | ||
149 | EMI_Bankx->WECR = EMI_InitStruct->EMI_Bank_WSTWEN ; |
185 | EMI_Bankx->BRDCR = EMI_InitStruct->EMI_Bank_BRDCR ; |
150 | 186 | ||
Line 151... | Line 187... | ||
151 | EMI_Bankx->BCR &= EMI_MemWidth_Mask; |
187 | EMI_Bankx->BCR &= EMI_MemWidth_Mask; |
152 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_Bank_MemWidth; |
188 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_Bank_MemWidth; |
Line -... | Line 189... | ||
- | 189 | ||
153 | 190 | EMI_Bankx->BCR &= EMI_WriteProtect_Mask; |
|
154 | EMI_Bankx->BCR &= EMI_WriteProtect_Mask; |
191 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_Bank_WriteProtection; |
155 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_Bank_WriteProtection; |
192 | |
156 | 193 | ||
157 | EMI_Bankx->BCR &= EMI_PageModeRead_TL_Mask; |
194 | EMI_Bankx->BCR &= EMI_Burst_and_PageModeRead_TL_Mask; |
- | 195 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_Burst_and_PageModeRead_TransferLength; |
|
- | 196 | ||
- | 197 | EMI_Bankx->BCR &= EMI_Burst_and_PageModeRead_Sel_Mask; |
|
- | 198 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_Burst_and_PageModeRead_Selection; |
|
- | 199 | ||
- | 200 | EMI_Bankx->BCR &= EMI_BurstModeWrite_TL_Mask; |
|
- | 201 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_BurstModeWrite_TransferLength; |
|
- | 202 | ||
- | 203 | EMI_Bankx->BCR &= EMI_BurstModeWrite_Sel_Mask; |
|
- | 204 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_BurstModeWrite_Selection; |
|
- | 205 | ||
- | 206 | EMI_Bankx->BCR &= EMI_ByteLane_Mask; |
|
- | 207 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_ByteLane_Selection; |
|
- | 208 | ||
- | 209 | EMI_Bankx->BCR &= EMI_AccessRead_Dev_Mask; |
|
Line 158... | Line 210... | ||
158 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_PageModeRead_TransferLength; |
210 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_AccessRead_Support; |
- | 211 | ||
- | 212 | EMI_Bankx->BCR &= EMI_AccessWrite_Dev_Mask; |
|
- | 213 | EMI_Bankx->BCR |= EMI_InitStruct->EMI_AccessWrite_Support; |
|
- | 214 | ||
- | 215 | ||
- | 216 | } |
|
- | 217 | /******************************************************************************* |
|
- | 218 | * Function Name : EMI_BCLKCmd |
|
- | 219 | * Description : Enable or Disable the activation of BCLK clock (LFBGA only) |
|
- | 220 | * Input : NewState : ENABLE or DISABLE |
|
- | 221 | * Output : None |
|
- | 222 | * Return : None |
|
- | 223 | *******************************************************************************/ |
|
- | 224 | void EMI_BCLKCmd(FunctionalState NewState) |
|
Line 159... | Line 225... | ||
159 | 225 | { |