iLLD_TC29x
1.0
IfxEbu.h
Go to the documentation of this file.
1
/**
2
* \file IfxEbu.h
3
* \brief EBU basic functionality
4
* \ingroup IfxLld_Ebu
5
*
6
* \version iLLD_1_0_0_11_0
7
* \copyright Copyright (c) 2013 Infineon Technologies AG. All rights reserved.
8
*
9
*
10
* IMPORTANT NOTICE
11
*
12
*
13
* Infineon Technologies AG (Infineon) is supplying this file for use
14
* exclusively with Infineon's microcontroller products. This file can be freely
15
* distributed within development tools that are supporting such microcontroller
16
* products.
17
*
18
* THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
19
* OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
20
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
21
* INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
22
* OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
23
*
24
* \defgroup IfxLld_Ebu_Std_Enum Enumerations
25
* \ingroup IfxLld_Ebu_Std
26
* \defgroup IfxLld_Ebu_Std_Operative Operative Functions
27
* \ingroup IfxLld_Ebu_Std
28
* \defgroup IfxLld_Ebu_Std_Support Support Functions
29
* \ingroup IfxLld_Ebu_Std
30
*/
31
32
#ifndef IFXEBU_H
33
#define IFXEBU_H 1
34
35
/******************************************************************************/
36
/*----------------------------------Includes----------------------------------*/
37
/******************************************************************************/
38
39
#include "
_Impl/IfxEbu_cfg.h
"
40
#include "IfxEbu_reg.h"
41
42
/******************************************************************************/
43
/*--------------------------------Enumerations--------------------------------*/
44
/******************************************************************************/
45
46
/** \addtogroup IfxLld_Ebu_Std_Enum
47
* \{ */
48
typedef
enum
49
{
50
IfxEbu_ChipSelect_0
,
/**< \brief Chip Select Line 0 */
51
IfxEbu_ChipSelect_1
,
/**< \brief Chip Select Line 1 */
52
IfxEbu_ChipSelect_2
/**< \brief Chip Select Line 2 */
53
}
IfxEbu_ChipSelect
;
54
55
typedef
enum
56
{
57
IfxEbu_ExternalClockRatio_1
,
/**< \brief f_ebu:f_sri = 1:1; */
58
IfxEbu_ExternalClockRatio_2
,
/**< \brief f_ebu:f_sri = 2:1 */
59
IfxEbu_ExternalClockRatio_3
,
/**< \brief f_ebu:f_sri = 3:1 */
60
IfxEbu_ExternalClockRatio_4
,
/**< \brief f_ebu:f_sri = 4:1 */
61
IfxEbu_ExternalClockRatio_6
,
/**< \brief f_ebu:f_sri = 6:1 */
62
IfxEbu_ExternalClockRatio_8
/**< \brief f_ebu:f_sri = 8:1 */
63
}
IfxEbu_ExternalClockRatio
;
64
65
/** \} */
66
67
typedef
enum
68
{
69
IfxEbu_AlternateSegmentCompare_disabled
= 0,
/**< \brief Alternate Segment is never Compared with SRI Bus */
70
IfxEbu_AlternateSegmentCompare_enabled
= 1
/**< \brief Alternate Segment Address is always compared */
71
}
IfxEbu_AlternateSegmentCompare
;
72
73
typedef
enum
74
{
75
IfxEbu_ArbitrationSignalSynchronization_synchronous
= 0,
/**< \brief Arbitration Signals are Synchronous */
76
IfxEbu_ArbitrationSignalSynchronization_asynchronous
= 1
/**< \brief Arbitration inputs are Asynchronous */
77
}
IfxEbu_ArbitrationSignalSynchronization
;
78
79
typedef
enum
80
{
81
IfxEbu_ByteControl_byteControlFollowingChipSelect
= 0,
82
IfxEbu_ByteControl_bytecontrolFollowingControlSignal
= 1,
83
IfxEbu_ByteControl_byteControlFollowingWriteEnable
= 2,
84
IfxEbu_ByteControl_sdramAccessDQM
= 3
85
}
IfxEbu_ByteControl
;
86
87
typedef
enum
88
{
89
IfxEbu_ByteControlEnable_byteControlOff
= 0,
/**< \brief Byte control off. Pins available for address or
90
* GPIO as set by Ports logic */
91
IfxEbu_ByteControlEnable_byteControl8Bit
= 1,
/**< \brief 8 bit byte control. Byte control 0 only. A(22:20)
92
* available for address or GPIO as set by Ports
93
* logic */
94
IfxEbu_ByteControlEnable_byteControl16Bit
= 2,
/**< \brief 16 bit byte control. BC(1:0) available. A(21:20)
95
* available for address or GPIO as set by Ports
96
* logic */
97
IfxEbu_ByteControlEnable_byteControl32Bit
= 3
/**< \brief 32 bit byte control. BC(3:0) available */
98
}
IfxEbu_ByteControlEnable
;
99
100
typedef
enum
101
{
102
IfxEbu_CASLatency_Latency2
= 2,
/**< \brief CAS Latency 2 between Read Command and availability of Data */
103
IfxEbu_CASLatency_Latency3
= 3
/**< \brief CAS Latency 3 between Read Access and availability of Data */
104
}
IfxEbu_CASLatency
;
105
106
typedef
enum
107
{
108
IfxEbu_ClockDivideRatio_0
= 0,
/**< \brief EBU Clock divide Ratio */
109
IfxEbu_ClockDivideRatio_1
,
/**< \brief EBU Clock divide Ratio */
110
IfxEbu_ClockDivideRatio_2
,
/**< \brief EBU Clock divide Ratio */
111
IfxEbu_ClockDivideRatio_3
/**< \brief EBU Clock divide Ratio */
112
}
IfxEbu_ClockDivideRatio
;
113
114
typedef
enum
115
{
116
IfxEbu_ClockSource_asynchronous
= 0,
/**< \brief EBU input clock is in Asynchronous mode; */
117
IfxEbu_ClockSource_synchronous
= 1
/**< \brief EBU Input Clock Source is from PLL; */
118
}
IfxEbu_ClockSource
;
119
120
typedef
enum
121
{
122
IfxEbu_ColumnAddressWidth_1
= 1,
/**< \brief Asri[8:0] for 16bit 512bytes and Asri[9:0] for 32bit 1024bytes */
123
IfxEbu_ColumnAddressWidth_2
= 2,
/**< \brief Asri[9:0] for 16bit 1024 bytes and Asri[10:0] for 32bit 2048 bytes */
124
IfxEbu_ColumnAddressWidth_3
= 3
/**< \brief Asri[10:0] for 16bit 1024 bytes and Asri[11:0] for 32bit 4096 bytes */
125
}
IfxEbu_ColumnAddressWidth
;
126
127
typedef
enum
128
{
129
IfxEbu_DelayOnPowerDownExit_0
,
/**< \brief Number of Nops after SDRAM controller exits power down */
130
IfxEbu_DelayOnPowerDownExit_1
,
/**< \brief Number of Nops after SDRAM controller exits power down */
131
IfxEbu_DelayOnPowerDownExit_2
,
/**< \brief Number of Nops after SDRAM controller exits power down */
132
IfxEbu_DelayOnPowerDownExit_3
,
/**< \brief Number of Nops after SDRAM controller exits power down */
133
IfxEbu_DelayOnPowerDownExit_4
,
/**< \brief Number of Nops after SDRAM controller exits power down */
134
IfxEbu_DelayOnPowerDownExit_5
,
/**< \brief Number of Nops after SDRAM controller exits power down */
135
IfxEbu_DelayOnPowerDownExit_6
,
/**< \brief Number of Nops after SDRAM controller exits power down */
136
IfxEbu_DelayOnPowerDownExit_7
/**< \brief Number of Nops after SDRAM controller exits power down */
137
}
IfxEbu_DelayOnPowerDownExit
;
138
139
typedef
enum
140
{
141
IfxEbu_DeviceType_muxedAsynchronousType
= 0,
/**< \brief External Device is a Muxed Asynchronous Type Device */
142
IfxEbu_DeviceType_muxedBurstType
= 1,
/**< \brief External Device is a Muxed Burst Type */
143
IfxEbu_DeviceType_nandFlash
= 2,
/**< \brief External Device is a Nand Flash device */
144
IfxEbu_DeviceType_muxedCellularRam
= 3,
/**< \brief External Device is a Muxed Cellular Ram Device */
145
IfxEbu_DeviceType_demuxedAsynchronousType
= 4,
/**< \brief External Device is a Demuxed Asynchronous Type device */
146
IfxEbu_DeviceType_demuxedBurstType
= 5,
/**< \brief External device is a Demuxed Burst Type device */
147
IfxEbu_DeviceType_demuxedPageMode
= 6,
/**< \brief External device is a Demuxed Page Mode Device */
148
IfxEbu_DeviceType_demuxedCellularRam
= 7,
/**< \brief External device is a Demuxed Cellular Ram Device */
149
IfxEbu_DeviceType_sdram
= 8
/**< \brief External Device is a SDRAM Device */
150
}
IfxEbu_DeviceType
;
151
152
typedef
enum
153
{
154
IfxEbu_ExtendedData_0
,
/**< \brief Data is output every 2*str(x) Clock Cycle(s) */
155
IfxEbu_ExtendedData_1
,
/**< \brief Data is output every 2*str(x) Clock Cycle(s) */
156
IfxEbu_ExtendedData_2
,
/**< \brief Data is output every 2*str(x) Clock Cycle(s) */
157
IfxEbu_ExtendedData_3
/**< \brief Data is output every 2*str(x) Clock Cycle(s) */
158
}
IfxEbu_ExtendedData
;
159
160
typedef
enum
161
{
162
IfxEbu_ExtendedOperationBankSelect_0
,
/**< \brief Value written to Bank Select Pins of Mobile SDRAM */
163
IfxEbu_ExtendedOperationBankSelect_1
,
/**< \brief Value written to Bank Select Pins of Mobile SDRAM */
164
IfxEbu_ExtendedOperationBankSelect_2
,
/**< \brief Value written to Bank Select Pins of Mobile SDRAM */
165
IfxEbu_ExtendedOperationBankSelect_3
/**< \brief Value written to Bank Select Pins of Mobile SDRAM */
166
}
IfxEbu_ExtendedOperationBankSelect
;
167
168
typedef
enum
169
{
170
IfxEbu_ExtendedRefresh_0
,
171
IfxEbu_ExtendedRefresh_1
,
172
IfxEbu_ExtendedRefresh_2
,
173
IfxEbu_ExtendedRefresh_3
174
}
IfxEbu_ExtendedRefresh
;
175
176
typedef
enum
177
{
178
IfxEbu_ExternalBusMode_noBus
= 0,
/**< \brief EBU is in NoBus Mode */
179
IfxEbu_ExternalBusMode_arbiter
= 1,
/**< \brief EBU is in Arbiter mode; */
180
IfxEbu_ExternalBusMode_participant
= 2,
/**< \brief EBU is in Participant Mode; */
181
IfxEbu_ExternalBusMode_soleMaster
= 3
/**< \brief EBU is in Sole Master Mode */
182
}
IfxEbu_ExternalBusMode
;
183
184
typedef
enum
185
{
186
IfxEbu_ExternalDeviceInterface_8bitMultiplexed
= 0,
/**< \brief External Device is an 8 Bit Device */
187
IfxEbu_ExternalDeviceInterface_16bitMultiplexed
= 1,
/**< \brief External evice is an 16 bit Multiplexed */
188
IfxEbu_ExternalDeviceInterface_twin16bitMultiplexed
= 2,
/**< \brief Two External 16 bit Multiplexed Devices are used */
189
IfxEbu_ExternalDeviceInterface_32bitMultiplexed
= 3
/**< \brief External device is an 32 bit Multiplexed device */
190
}
IfxEbu_ExternalDeviceInterface
;
191
192
typedef
enum
193
{
194
IfxEbu_ExternalMemoryWriteProtect_disabled
= 0,
/**< \brief External memory is writable */
195
IfxEbu_ExternalMemoryWriteProtect_enabled
= 1
/**< \brief External Memory is write protected */
196
}
IfxEbu_ExternalMemoryWriteProtect
;
197
198
typedef
enum
199
{
200
IfxEbu_MaskForBankTag_1
= 1,
/**< \brief Asri[21 to 20] */
201
IfxEbu_MaskForBankTag_2
= 2,
/**< \brief Asri[22 to 21] */
202
IfxEbu_MaskForBankTag_3
= 3,
/**< \brief Asri[23 to 22] */
203
IfxEbu_MaskForBankTag_4
= 4,
/**< \brief Asri[24 to 23] */
204
IfxEbu_MaskForBankTag_5
= 5,
/**< \brief Asri[25 to 24] */
205
IfxEbu_MaskForBankTag_6
= 6
/**< \brief Asri[26 to 25] */
206
}
IfxEbu_MaskForBankTag
;
207
208
typedef
enum
209
{
210
IfxEbu_MemoryRegionMask_0
,
/**< \brief Mask1 */
211
IfxEbu_MemoryRegionMask_1
,
/**< \brief Mask2 */
212
IfxEbu_MemoryRegionMask_2
,
/**< \brief Mask3 */
213
IfxEbu_MemoryRegionMask_3
,
/**< \brief Mask4 */
214
IfxEbu_MemoryRegionMask_4
,
/**< \brief Mask5 */
215
IfxEbu_MemoryRegionMask_5
,
/**< \brief Mask6 */
216
IfxEbu_MemoryRegionMask_6
,
/**< \brief Mask7 */
217
IfxEbu_MemoryRegionMask_7
,
/**< \brief Mask8 */
218
IfxEbu_MemoryRegionMask_8
,
/**< \brief Mask9 */
219
IfxEbu_MemoryRegionMask_9
,
/**< \brief Mask10 */
220
IfxEbu_MemoryRegionMask_10
,
/**< \brief Mask11 */
221
IfxEbu_MemoryRegionMask_11
,
/**< \brief Mask12 */
222
IfxEbu_MemoryRegionMask_12
,
/**< \brief Mask13 */
223
IfxEbu_MemoryRegionMask_13
,
/**< \brief Mask14 */
224
IfxEbu_MemoryRegionMask_14
,
/**< \brief Mask15 */
225
IfxEbu_MemoryRegionMask_15
/**< \brief Mask16 */
226
}
IfxEbu_MemoryRegionMask
;
227
228
typedef
enum
229
{
230
IfxEbu_ModeRegisterSetupTime_0
,
/**< \brief Number of Nop Cycles after a Mode Register Set Command (Crsc + 1) Nop cycles */
231
IfxEbu_ModeRegisterSetupTime_1
,
/**< \brief Number of Nop Cycles after a Mode Register Set Command (Crsc + 1) Nop cycles */
232
IfxEbu_ModeRegisterSetupTime_2
,
/**< \brief Number of Nop Cycles after a Mode Register Set Command (Crsc + 1) Nop cycles */
233
IfxEbu_ModeRegisterSetupTime_3
/**< \brief Number of Nop Cycles after a Mode Register Set Command (Crsc + 1) Nop cycles */
234
}
IfxEbu_ModeRegisterSetupTime
;
235
236
typedef
enum
237
{
238
IfxEbu_PowerSaveMode_0
,
/**< \brief Power Save mode used for clock gate mode */
239
IfxEbu_PowerSaveMode_1
,
/**< \brief Power Save mode used for clock gate mode */
240
IfxEbu_PowerSaveMode_2
,
/**< \brief Power Save mode used for clock gate mode */
241
IfxEbu_PowerSaveMode_3
/**< \brief Power Save mode used for clock gate mode */
242
}
IfxEbu_PowerSaveMode
;
243
244
typedef
enum
245
{
246
IfxEbu_RefreshCommands_0
,
247
IfxEbu_RefreshCommands_1
,
248
IfxEbu_RefreshCommands_2
,
249
IfxEbu_RefreshCommands_3
,
250
IfxEbu_RefreshCommands_4
,
251
IfxEbu_RefreshCommands_5
,
252
IfxEbu_RefreshCommands_6
,
253
IfxEbu_RefreshCommands_7
254
}
IfxEbu_RefreshCommands
;
255
256
typedef
enum
257
{
258
IfxEbu_RowPrechargeTime_0
,
/**< \brief Number of Nops inserted after Precharge command (Crp + 1) Nop Cycles */
259
IfxEbu_RowPrechargeTime_1
,
/**< \brief Number of Nops inserted after Precharge command (Crp + 1) Nop Cycles */
260
IfxEbu_RowPrechargeTime_2
,
/**< \brief Number of Nops inserted after Precharge command (Crp + 1) Nop Cycles */
261
IfxEbu_RowPrechargeTime_3
/**< \brief Number of Nops inserted after Precharge command (Crp + 1) Nop Cycles */
262
}
IfxEbu_RowPrechargeTime
;
263
264
typedef
enum
265
{
266
IfxEbu_RowToColumnDelay_0
,
/**< \brief Number of Nops between Row Address and Column Address (Crcd(value) + 1 Nop Cycle) */
267
IfxEbu_RowToColumnDelay_1
,
/**< \brief Number of Nops between Row Address and Column Address (Crcd(value) + 1 Nop Cycle) */
268
IfxEbu_RowToColumnDelay_2
,
/**< \brief Number of Nops between Row Address and Column Address (Crcd(value) + 1 Nop Cycle) */
269
IfxEbu_RowToColumnDelay_3
/**< \brief Number of Nops between Row Address and Column Address (Crcd(value) + 1 Nop Cycle) */
270
}
IfxEbu_RowToColumnDelay
;
271
272
typedef
enum
273
{
274
IfxEbu_SDRAMBurstLength_1
= 0,
/**< \brief Burst Length 1 */
275
IfxEbu_SDRAMBurstLength_2
= 1,
/**< \brief Burst Length 2 */
276
IfxEbu_SDRAMBurstLength_4
= 2,
/**< \brief Burst Length 4 */
277
IfxEbu_SDRAMBurstLength_8
= 3,
/**< \brief Burst Length 8 */
278
IfxEbu_SDRAMBurstLength_16
= 4
/**< \brief Burst Length 16 */
279
}
IfxEbu_SDRAMBurstLength
;
280
281
typedef
enum
282
{
283
IfxEbu_SynchronousBurstBuffer_bufferLength
= 0,
/**< \brief EBU Buffer length = IfxEbu_SynchronousBurstLength; */
284
IfxEbu_SynchronousBurstBuffer_continuous
= 1
/**< \brief EBU External Data is Transferred in Single Burst; */
285
}
IfxEbu_SynchronousBurstBuffer
;
286
287
typedef
enum
288
{
289
IfxEbu_SynchronousBurstLength_1
= 0,
/**< \brief EBU Burst Length is 1; */
290
IfxEbu_SynchronousBurstLength_2
= 1,
/**< \brief EBU Burst length is 2 */
291
IfxEbu_SynchronousBurstLength_4
= 2,
/**< \brief EBU Burst Length is 4 */
292
IfxEbu_SynchronousBurstLength_8
= 3
/**< \brief EBU Burst Length is 8 */
293
}
IfxEbu_SynchronousBurstLength
;
294
295
typedef
enum
296
{
297
IfxEbu_WaitControl_off
= 0,
/**< \brief External Wait is off */
298
IfxEbu_WaitControl_asynchronous
= 1,
/**< \brief Asynchronous input for wait (Asynchronous Device) & Wait for Page load (Synchronous Device) */
299
IfxEbu_WaitControl_synchronous
= 2
/**< \brief Synchronous input for wait (Asynchronous Device) & wait for Page load (with Data) (Synchronous Device) */
300
}
IfxEbu_WaitControl
;
301
302
/******************************************************************************/
303
/*-----------------------------Data Structures--------------------------------*/
304
/******************************************************************************/
305
306
typedef
struct
307
{
308
boolean
regionEnabled
;
309
boolean
alternateSegmentEnabled
;
310
boolean
writeProtection
;
311
boolean
combinedChipSelect
;
312
IfxEbu_MemoryRegionMask
addressMask
;
313
uint8
alternateSegment
;
314
uint32
baseAddress
;
315
}
IfxEbu_MemoryRegionConfig
;
316
317
typedef
struct
318
{
319
boolean
aleMode
;
/**< \brief when '0' output is ADV, when '1' output is ALE */
320
IfxEbu_ExternalBusMode
arbMode
;
/**< \brief Arbitration mode of External Bus */
321
IfxEbu_ArbitrationSignalSynchronization
arbSignalSynchronization
;
/**< \brief Arbitration signal Synchronization mode */
322
boolean
sdramTri
;
/**< \brief when '0' SDRAM control Signals are driven by EBU, when '1' SDRAM control signals are tristated */
323
uint8
lockTimeout
;
/**< \brief Value for preloaded for arbitration lock */
324
boolean
clockComb
;
/**< \brief Both BFlash and SDRAM share the same clock out */
325
}
IfxEbu_ModuleConfig
;
326
327
typedef
struct
328
{
329
uint8
addressCycle
;
/**< \brief BUSRAP.ADDRC Number of Clock Phase for Address */
330
uint8
addressHold
;
/**< \brief BUSRAP.AHOLDC Number of Cycles for Address Hold Phase */
331
uint8
commandDelay
;
/**< \brief BUSRAP.CMDDELAY Number of Command Delay Phase Clock Cycles */
332
IfxEbu_ExtendedData
extendedData
;
/**< \brief BUSRAP.EXTDATA Determines the Clock Cycles after which the data is put out */
333
uint8
externalClock
;
/**< \brief BUSRAP.EXTCLOCK Determines the Clock Ratio between EBU_CLC and BFCLK or SDCLK */
334
uint8
dataHold
;
/**< \brief BUSRAP.DATAC Data Hold Cycles for Read */
335
uint8
waitState
;
/**< \brief BUSRAP.WAITRDC Number of Wait States for Read */
336
uint8
recoveryAccess
;
/**< \brief BUSRAP.RDRECOVC Recovery cycles at end of Read Access */
337
uint8
recoveryRegion
;
/**< \brief BUSRAP.RDDTACS Recovery cycles between different regions */
338
}
IfxEbu_ReadAccessParameter
;
339
340
typedef
struct
341
{
342
IfxEbu_DeviceType
deviceType
;
/**< \brief BUSRCON.AGEN Device selection for Read */
343
IfxEbu_WaitControl
waitControl
;
/**< \brief BUSRCON.WAIT, External Wait Control */
344
IfxEbu_ExternalDeviceInterface
deviceInterface
;
/**< \brief BUSRCON.PORTW Selects the device Addressing mode (16bit, 32bit, 2*16bit) */
345
uint8
byteControl
;
/**< \brief BUSRCON.BCGEN selects the timing mode of byte control */
346
boolean
polarityWait
;
/**< \brief BUSRCON.WAITINV if '1' the polarity is reversed */
347
boolean
earlyBurst
;
/**< \brief BUSRCON.EBSE if '1' ADV is not delayed */
348
boolean
earlyChipSelect
;
/**< \brief BUSRCON.ECSE if '1' CS is not delayed */
349
boolean
burstFlashClockMode
;
/**< \brief BUSRCON.BFCMSEL if '1' Clock is disabled between Access */
350
boolean
burstFlashClockFeedback
;
/**< \brief BUSRCON.FDBKEN if '1' Feedback clock is used for resynchronizing the contol and data coming in */
351
boolean
synchronousBurstBuffer
;
/**< \brief BUSRCON.FBBMSEL The data is either continuous or depends on FETLBEN */
352
IfxEbu_SynchronousBurstLength
burstLength
;
/**< \brief BUSRCON.FETBLEN Defines maximum number of Burst Data */
353
}
IfxEbu_ReadConfig
;
354
355
typedef
struct
356
{
357
uint8
rowToPrechargeDelay
;
/**< \brief Number of clock cycles between Row Activate command and a Precharge command */
358
uint8
initializationRefreshCommand
;
/**< \brief Number of Refresh cycles issued during Initialization */
359
IfxEbu_ModeRegisterSetupTime
modeRegSetupTime
;
/**< \brief Number of NOP commands after a mode register set command */
360
IfxEbu_RowPrechargeTime
rowPrechargeTime
;
/**< \brief Number of NOP commands inserted after Precharge */
361
IfxEbu_ColumnAddressWidth
columnAddressWidth
;
/**< \brief Number of Address bits from 0 used for Column Addressing */
362
IfxEbu_RowToColumnDelay
rowToColumnDelay
;
/**< \brief Number of NOP commands between Row address and Column address */
363
uint8
refreshCycleTime
;
/**< \brief Number of NOP cycles following Refresh cycle */
364
IfxEbu_MaskForBankTag
maskForBankTag
;
/**< \brief SRI address bits used to determine Bank Address */
365
boolean
disableClockOutput
;
/**< \brief if '0' Clock is enabled */
366
IfxEbu_PowerSaveMode
powerSaveMode
;
/**< \brief Power save mode used for Gated Clock mode */
367
boolean
clockModeSelect
;
/**< \brief if '0' clock is running continuously, if '1' clock is disabled between access */
368
}
IfxEbu_SDRAMControlConfig
;
369
370
typedef
struct
371
{
372
IfxEbu_ExtendedOperationBankSelect
extendedBankSelect
;
/**< \brief Value to be written to bank select pins of a mobile SDRAM */
373
uint16
extendedOperationMode
;
/**< \brief Value to be written to the extended mode register of a mobile SDRAM device */
374
boolean
coldStart
;
/**< \brief If '1' is written the SDRAM device register will be updated */
375
IfxEbu_CASLatency
casLatency
;
/**< \brief Number of Clock cycles between the availability of data an Read Access */
376
IfxEbu_SDRAMBurstLength
burstLength
;
/**< \brief Number of location that can be accessed in a single command */
377
uint8
opmode
;
378
}
IfxEbu_SDRAMModConfig
;
379
380
typedef
struct
381
{
382
IfxEbu_DelayOnPowerDownExit
delayOnPowerDownExit
;
/**< \brief Number of Nops after SDRAM Controller exits Power down before an active command is active */
383
boolean
autoRefresh
;
/**< \brief If '1' Auto Refresh will be enabled before Self Refresh Exit */
384
uint8
selfRefreshExitDelay
;
/**< \brief Number of Nops inserted after Self Refresh Command */
385
IfxEbu_ExtendedRefresh
extendedRefresh
;
/**< \brief Used to Increase the Range of RefreshC field from 6 bits to 8 bits */
386
boolean
automaticSelfRefresh
;
/**< \brief If '1' Automatic Self Refresh command will be issued for Entry and Exit */
387
boolean
selfRefreshEntry
;
/**< \brief If '1' Self Refresh Entry command is issued */
388
boolean
selfRefreshExit
;
/**< \brief If '1' Self Refresh Exit commands are issued */
389
IfxEbu_RefreshCommands
refreshCommands
;
/**< \brief The Number of additional Refresh commands issued to SDRAM each time a refresh is due */
390
uint8
refreshPeriod
;
/**< \brief Number of clock Cycles between Refresh */
391
}
IfxEbu_SDRAMRefreshConfig
;
392
393
typedef
struct
394
{
395
uint8
addressCycle
;
/**< \brief BUSWAP.ADDRC Number of Clock Phase for Address */
396
uint8
addressHold
;
/**< \brief BUSWAP.AHOLDC Number of Cycles for Address Hold Phase */
397
uint8
commandDelay
;
/**< \brief BUSWAP.CMDDELAY Number of Command Delay Phase Clock Cycles */
398
IfxEbu_ExtendedData
extendedData
;
/**< \brief BUSWAP.EXTDATA Determines the Clock Cycles after which the data is put out */
399
uint8
externalClock
;
/**< \brief BUSWAP.EXTCLOCK Determines the Clock Ratio between EBU_CLC and BFCLK or SDCLK */
400
uint8
dataHold
;
/**< \brief BUSWAP.DATAC Data Hold Cycles for WRITE */
401
uint8
waitState
;
/**< \brief BUSRAP.WAITWRC Number of Wait States for Write */
402
uint8
recoveryAccess
;
/**< \brief BUSWAP.WRRECOVC Recovery cycles at end of Write Access */
403
uint8
recoveryRegion
;
/**< \brief BUSWAP.WRDTACS Recovery cycles between different regions */
404
}
IfxEbu_WriteAccessParameter
;
405
406
typedef
struct
407
{
408
IfxEbu_DeviceType
deviceType
;
/**< \brief BUSWCON.AGEN Device selection for Read */
409
IfxEbu_WaitControl
waitControl
;
/**< \brief BUSWCON.WAIT, External Wait Control */
410
IfxEbu_ExternalDeviceInterface
deviceInterface
;
/**< \brief BUSWCON.PORTW Selects the device Addressing mode (16bit, 32bit, 2*16bit) */
411
uint8
byteControl
;
/**< \brief BUSWCON.BCGEN selects the timing mode of byte control */
412
boolean
polarityWait
;
/**< \brief BUSWCON.WAITINV if '1' the polarity is reversed */
413
boolean
earlyBurst
;
/**< \brief BUSWCON.EBSE if '1' ADV is not delayed */
414
boolean
earlyChipSelect
;
/**< \brief BUSWCON.ECSE if '1' CS is not delayed */
415
boolean
synchronousBurstBuffer
;
/**< \brief BUSWCON.FBBMSEL The data is either continuous or depends on FETLBEN */
416
IfxEbu_SynchronousBurstLength
burstLength
;
/**< \brief BUSWCON.FETBLEN Defines maximum number of Burst Data */
417
}
IfxEbu_WriteConfig
;
418
419
/** \addtogroup IfxLld_Ebu_Std_Operative
420
* \{ */
421
422
/******************************************************************************/
423
/*-------------------------Global Function Prototypes-------------------------*/
424
/******************************************************************************/
425
426
/** \brief Configures the EBU Clock Divider
427
* \return None
428
*/
429
IFX_EXTERN
void
IfxEbu_setExternalClockRatio
(Ifx_EBU *ebu,
IfxEbu_ExternalClockRatio
ratio);
430
431
/** \brief configures the byte control enable in the USERCON register
432
* \return None
433
*/
434
IFX_EXTERN
void
IfxEbu_setByteControlEnable
(Ifx_EBU *ebu,
IfxEbu_ByteControlEnable
byteControlEnable);
435
436
/** \} */
437
438
#endif
/* IFXEBU_H */
home
mclld
Libraries
release
iLLD_1_0_0_11_0
src
ifx
TC29x
Ebu
Std
IfxEbu.h
Generated by
1.8.4