EBI - External Bus Interface

Description

EBI External Bus Interface (EBI) Peripheral API.

This module contains functions to control the EBI peripheral of Silicon Labs 32-bit MCUs and SoCs. The EBI is used for accessing external parallel devices. The devices appear as part of the internal memory map of the MCU.

Data Structures

struct  EBI_Init_TypeDef
 EBI Initialization structure.
 
struct  EBI_TFTInit_TypeDef
 TFT Initialization structure.
 

Functions

void EBI_Init (const EBI_Init_TypeDef *ebiInit)
 Configure and enable the External Bus Interface.
 
void EBI_Disable (void)
 Disable External Bus Interface.
 
uint32_t EBI_BankAddress (uint32_t bank)
 Return the base address of the EBI bank.
 
void EBI_BankEnable (uint32_t banks, bool enable)
 Enable or disable EBI Bank.
 
void EBI_NANDFlashEnable (uint32_t banks, bool enable)
 Enable or disable EBI NAND Flash Support.
 
void EBI_TFTInit (const EBI_TFTInit_TypeDef *ebiTFTInit)
 Configure and initialize TFT Direct Drive.
 
void EBI_TFTSizeSet (uint32_t horizontal, uint32_t vertical)
 Configure and initialize TFT size settings.
 
void EBI_TFTHPorchSet (uint32_t front, uint32_t back, uint32_t pulseWidth)
 Configure and initialize Horizontal Porch Settings.
 
void EBI_TFTVPorchSet (uint32_t front, uint32_t back, uint32_t pulseWidth)
 Configure Vertical Porch Settings.
 
void EBI_TFTTimingSet (uint32_t dclkPeriod, uint32_t start, uint32_t setup, uint32_t hold)
 Configure TFT Direct Drive Timing Settings.
 
void EBI_BankReadTimingSet (uint32_t banks, uint32_t setupCycles, uint32_t strobeCycles, uint32_t holdCycles)
 Configure timing values of read bus accesses.
 
void EBI_BankReadTimingConfig (uint32_t banks, bool pageMode, bool prefetch, bool halfRE)
 Configure read operation parameters for a selected bank.
 
void EBI_BankWriteTimingSet (uint32_t banks, uint32_t setupCycles, uint32_t strobeCycles, uint32_t holdCycles)
 Configure timing values of write bus accesses.
 
void EBI_BankWriteTimingConfig (uint32_t banks, bool writeBufDisable, bool halfWE)
 Configure write operation parameters for a selected bank.
 
void EBI_BankAddressTimingSet (uint32_t banks, uint32_t setupCycles, uint32_t holdCycles)
 Configure timing values of address latch bus accesses.
 
void EBI_BankAddressTimingConfig (uint32_t banks, bool halfALE)
 Configure address operation parameters for a selected bank.
 
void EBI_BankPolaritySet (uint32_t banks, EBI_Line_TypeDef line, EBI_Polarity_TypeDef polarity)
 Configure EBI pin polarity for selected bank(s) for devices with individual timing support.
 
void EBI_BankByteLaneEnable (uint32_t banks, bool enable)
 Configure Byte Lane Enable for select banks timing support.
 
void EBI_AltMapEnable (bool enable)
 Configure the Alternate Address Map support.
 
void EBI_TFTEnable (EBI_TFTDDMode_TypeDef mode)
 Enable or disable TFT Direct Drive.
 
void EBI_TFTFrameBaseSet (uint32_t address)
 Configure frame buffer pointer.
 
void EBI_TFTPixelSet (int pixel, uint32_t color)
 Set TFT Pixel Color 0 or 1.
 
void EBI_TFTDDSet (uint32_t color)
 Set TFT Direct Drive Data from Internal Memory.
 
void EBI_TFTMaskBlendMode (EBI_TFTMaskBlend_TypeDef maskBlend)
 Masking and Blending Mode Set.
 
void EBI_TFTColorSrcSet (EBI_TFTColorSrc_TypeDef colorSrc)
 Masking and Blending Color1 Source Set.
 
void EBI_TFTAlphaBlendSet (uint8_t alpha)
 Set TFT Alpha Blending Factor.
 
void EBI_TFTMaskSet (uint32_t mask)
 Set TFT mask value.
 
uint32_t EBI_TFTVCount (void)
 Get current vertical position counter.
 
uint32_t EBI_TFTHCount (void)
 Get current horizontal position counter.
 
void EBI_TFTFBTriggerSet (EBI_TFTFrameBufTrigger_TypeDef sync)
 Set Frame Buffer Trigger.
 
void EBI_TFTHStrideSet (uint32_t nbytes)
 Set horizontal TFT stride value in number of bytes.
 
void EBI_IntClear (uint32_t flags)
 Clear one or more pending EBI interrupts.
 
void EBI_IntSet (uint32_t flags)
 Set one or more pending EBI interrupts.
 
void EBI_IntDisable (uint32_t flags)
 Disable one or more EBI interrupts.
 
void EBI_IntEnable (uint32_t flags)
 Enable one or more EBI interrupts.
 
uint32_t EBI_IntGet (void)
 Get pending EBI interrupt flags.
 
uint32_t EBI_IntGetEnabled (void)
 Get enabled and pending EBI interrupt flags.
 
void EBI_StartNandEccGen (void)
 Start ECC generator on NAND flash transfers.
 
uint32_t EBI_StopNandEccGen (void)
 Stop NAND flash ECC generator and return generated ECC.
 
void EBI_ChipSelectEnable (uint32_t cs, bool enable)
 Enable or disable EBI Chip Select.
 
void EBI_ReadTimingSet (uint32_t setupCycles, uint32_t strobeCycles, uint32_t holdCycles)
 Configure timing values of read bus accesses.
 
void EBI_WriteTimingSet (uint32_t setupCycles, uint32_t strobeCycles, uint32_t holdCycles)
 Configure timing values of write bus accesses.
 
void EBI_AddressTimingSet (uint32_t setupCycles, uint32_t holdCycles)
 Configure timing values of address latch bus accesses.
 
void EBI_PolaritySet (EBI_Line_TypeDef line, EBI_Polarity_TypeDef polarity)
 Configure EBI pin polarity.
 

Macros

#define EBI_BANK0   (uint32_t)(1 << 1)
 EBI address bank 0.
 
#define EBI_BANK1   (uint32_t)(1 << 2)
 EBI address bank 1.
 
#define EBI_BANK2   (uint32_t)(1 << 3)
 EBI address bank 2.
 
#define EBI_BANK3   (uint32_t)(1 << 4)
 EBI address bank 3.
 
#define EBI_CS0   (uint32_t)(1 << 1)
 EBI chip select line 0.
 
#define EBI_CS1   (uint32_t)(1 << 2)
 EBI chip select line 1.
 
#define EBI_CS2   (uint32_t)(1 << 3)
 EBI chip select line 2.
 
#define EBI_CS3   (uint32_t)(1 << 4)
 EBI chip select line 3.
 
#define EBI_GENERIC_ALB_A0   EBI_ROUTE_ALB_A0
 Pin Enable Lower Bound EBI_A[0] and upwards.
 
#define EBI_GENERIC_ALB_A8   EBI_ROUTE_ALB_A8
 Pin Enable Lower Bound EBI_A[8] and upwards.
 
#define EBI_GENERIC_ALB_A16   EBI_ROUTE_ALB_A16
 Pin Enable Lower Bound EBI_A[16] and upwards.
 
#define EBI_GENERIC_ALB_A24   EBI_ROUTE_ALB_A24
 Pin Enable Lower Bound EBI_A[24] and upwards.
 
#define EBI_GENERIC_APEN_A0   EBI_ROUTE_APEN_A0
 All EBI_A pins enabled.
 
#define EBI_GENERIC_APEN_A5   EBI_ROUTE_APEN_A5
 EBI_A[4:L] pins enabled.
 
#define EBI_GENERIC_APEN_A6   EBI_ROUTE_APEN_A6
 EBI_A[5:L] pins enabled.
 
#define EBI_GENERIC_APEN_A7   EBI_ROUTE_APEN_A7
 EBI_A[6:L] pins enabled.
 
#define EBI_GENERIC_APEN_A8   EBI_ROUTE_APEN_A8
 EBI_A[7:L] pins enabled.
 
#define EBI_GENERIC_APEN_A9   EBI_ROUTE_APEN_A9
 EBI_A[8:L] pins enabled.
 
#define EBI_GENERIC_APEN_A10   EBI_ROUTE_APEN_A10
 EBI_A[9:L] pins enabled.
 
#define EBI_GENERIC_APEN_A11   EBI_ROUTE_APEN_A11
 EBI_A[10:L] pins enabled.
 
#define EBI_GENERIC_APEN_A12   EBI_ROUTE_APEN_A12
 EBI_A[11:L] pins enabled.
 
#define EBI_GENERIC_APEN_A13   EBI_ROUTE_APEN_A13
 EBI_A[12:L] pins enabled.
 
#define EBI_GENERIC_APEN_A14   EBI_ROUTE_APEN_A14
 EBI_A[13:L] pins enabled.
 
#define EBI_GENERIC_APEN_A15   EBI_ROUTE_APEN_A15
 EBI_A[14:L] pins enabled.
 
#define EBI_GENERIC_APEN_A16   EBI_ROUTE_APEN_A16
 EBI_A[15:L] pins enabled.
 
#define EBI_GENERIC_APEN_A17   EBI_ROUTE_APEN_A17
 EBI_A[16:L] pins enabled.
 
#define EBI_GENERIC_APEN_A18   EBI_ROUTE_APEN_A18
 EBI_A[17:L] pins enabled.
 
#define EBI_GENERIC_APEN_A19   EBI_ROUTE_APEN_A19
 EBI_A[18:L] pins enabled.
 
#define EBI_GENERIC_APEN_A20   EBI_ROUTE_APEN_A20
 EBI_A[19:L] pins enabled.
 
#define EBI_GENERIC_APEN_A21   EBI_ROUTE_APEN_A21
 EBI_A[20:L] pins enabled.
 
#define EBI_GENERIC_APEN_A22   EBI_ROUTE_APEN_A22
 EBI_A[21:L] pins enabled.
 
#define EBI_GENERIC_APEN_A23   EBI_ROUTE_APEN_A23
 EBI_A[22:L] pins enabled.
 
#define EBI_GENERIC_APEN_A24   EBI_ROUTE_APEN_A24
 EBI_A[23:L] pins enabled.
 
#define EBI_GENERIC_APEN_A25   EBI_ROUTE_APEN_A25
 EBI_A[24:L] pins enabled.
 
#define EBI_GENERIC_APEN_A26   EBI_ROUTE_APEN_A26
 EBI_A[25:L] pins enabled.
 
#define EBI_GENERIC_APEN_A27   EBI_ROUTE_APEN_A27
 EBI_A[26:L] pins enabled.
 
#define EBI_GENERIC_APEN_A28   EBI_ROUTE_APEN_A28
 EBI_A[27:L] pins enabled.
 
#define EBI_INIT_DEFAULT
 Default configuration for EBI initialization structures.
 
#define EBI_TFTINIT_DEFAULT
 Default configuration for EBI TFT initialization structure.
 

Enumerations

enum  EBI_Mode_TypeDef {
  ebiModeD8A8 = EBI_CTRL_MODE_D8A8,
  ebiModeD16A16ALE = EBI_CTRL_MODE_D16A16ALE,
  ebiModeD8A24ALE = EBI_CTRL_MODE_D8A24ALE,
  ebiModeD16 = EBI_CTRL_MODE_D16
}
 EBI Mode of operation.
 
enum  EBI_Polarity_TypeDef {
  ebiActiveLow = 0,
  ebiActiveHigh = 1
}
 EBI Polarity configuration.
 
enum  EBI_Line_TypeDef {
  ebiLineARDY,
  ebiLineALE,
  ebiLineWE,
  ebiLineRE,
  ebiLineCS,
  ebiLineBL,
  ebiLineTFTVSync,
  ebiLineTFTHSync,
  ebiLineTFTDataEn,
  ebiLineTFTDClk,
  ebiLineTFTCS
}
 EBI Pin Line types.
 
enum  EBI_ALow_TypeDef {
  ebiALowA0 = EBI_GENERIC_ALB_A0,
  ebiALowA8 = EBI_GENERIC_ALB_A8,
  ebiALowA16 = EBI_GENERIC_ALB_A16,
  ebiALowA24 = EBI_GENERIC_ALB_A24
}
 Address Pin Enable, lower limit - lower range of pins to enable.
 
enum  EBI_AHigh_TypeDef {
  ebiAHighA0 = EBI_GENERIC_APEN_A0,
  ebiAHighA5 = EBI_GENERIC_APEN_A5,
  ebiAHighA6 = EBI_GENERIC_APEN_A6,
  ebiAHighA7 = EBI_GENERIC_APEN_A7,
  ebiAHighA8 = EBI_GENERIC_APEN_A8,
  ebiAHighA9 = EBI_GENERIC_APEN_A9,
  ebiAHighA10 = EBI_GENERIC_APEN_A10,
  ebiAHighA11 = EBI_GENERIC_APEN_A11,
  ebiAHighA12 = EBI_GENERIC_APEN_A12,
  ebiAHighA13 = EBI_GENERIC_APEN_A13,
  ebiAHighA14 = EBI_GENERIC_APEN_A14,
  ebiAHighA15 = EBI_GENERIC_APEN_A15,
  ebiAHighA16 = EBI_GENERIC_APEN_A16,
  ebiAHighA17 = EBI_GENERIC_APEN_A17,
  ebiAHighA18 = EBI_GENERIC_APEN_A18,
  ebiAHighA19 = EBI_GENERIC_APEN_A19,
  ebiAHighA20 = EBI_GENERIC_APEN_A20,
  ebiAHighA21 = EBI_GENERIC_APEN_A21,
  ebiAHighA22 = EBI_GENERIC_APEN_A22,
  ebiAHighA23 = EBI_GENERIC_APEN_A23,
  ebiAHighA24 = EBI_GENERIC_APEN_A24,
  ebiAHighA25 = EBI_GENERIC_APEN_A25,
  ebiAHighA26 = EBI_GENERIC_APEN_A26,
  ebiAHighA27 = EBI_GENERIC_APEN_A27,
  ebiAHighA28 = EBI_GENERIC_APEN_A28
}
 Address Pin Enable, high limit - higher limit of pins to enable.
 
enum  EBI_Location_TypeDef {
  ebiLocation0 = EBI_ROUTE_LOCATION_LOC0,
  ebiLocation1 = EBI_ROUTE_LOCATION_LOC1,
  ebiLocation2 = EBI_ROUTE_LOCATION_LOC2
}
 EBI I/O Alternate Pin Location.
 
enum  EBI_TFTBank_TypeDef {
  ebiTFTBank0 = EBI_TFTCTRL_BANKSEL_BANK0,
  ebiTFTBank1 = EBI_TFTCTRL_BANKSEL_BANK1,
  ebiTFTBank2 = EBI_TFTCTRL_BANKSEL_BANK2,
  ebiTFTBank3 = EBI_TFTCTRL_BANKSEL_BANK3
}
 EBI TFT Graphics Bank Select.
 
enum  EBI_TFTColorSrc_TypeDef {
  ebiTFTColorSrcMem = EBI_TFTCTRL_COLOR1SRC_MEM,
  ebiTFTColorSrcPixel1 = EBI_TFTCTRL_COLOR1SRC_PIXEL1
}
 Masking and Alpha blending source color.
 
enum  EBI_TFTInterleave_TypeDef {
  ebiTFTInterleaveUnlimited = EBI_TFTCTRL_INTERLEAVE_UNLIMITED,
  ebiTFTInterleaveOnePerDClk = EBI_TFTCTRL_INTERLEAVE_ONEPERDCLK,
  ebiTFTInterleavePorch = EBI_TFTCTRL_INTERLEAVE_PORCH
}
 Bus Data Interleave Mode.
 
enum  EBI_TFTFrameBufTrigger_TypeDef {
  ebiTFTFrameBufTriggerVSync = EBI_TFTCTRL_FBCTRIG_VSYNC,
  ebiTFTFrameBufTriggerHSync = EBI_TFTCTRL_FBCTRIG_HSYNC
}
 Control frame base pointer copy.
 
enum  EBI_TFTMaskBlend_TypeDef {
  ebiTFTMBDisabled = EBI_TFTCTRL_MASKBLEND_DISABLED,
  ebiTFTMBIMask = EBI_TFTCTRL_MASKBLEND_IMASK,
  ebiTFTMBIAlpha = EBI_TFTCTRL_MASKBLEND_IALPHA,
  ebiTFTMBIMaskAlpha = EBI_TFTCTRL_MASKBLEND_IMASKIALPHA,
  ebiTFTMBEMask = EBI_TFTCTRL_MASKBLEND_EMASK,
  ebiTFTMBEAlpha = EBI_TFTCTRL_MASKBLEND_EALPHA,
  ebiTFTMBEMaskAlpha = EBI_TFTCTRL_MASKBLEND_EMASKEALPHA
}
 Control of mask and alpha blending mode.
 
enum  EBI_TFTDDMode_TypeDef {
  ebiTFTDDModeDisabled = EBI_TFTCTRL_DD_DISABLED,
  ebiTFTDDModeInternal = EBI_TFTCTRL_DD_INTERNAL,
  ebiTFTDDModeExternal = EBI_TFTCTRL_DD_EXTERNAL
}
 TFT Direct Drive mode.
 
enum  EBI_TFTWidth_TypeDef {
  ebiTFTWidthByte = EBI_TFTCTRL_WIDTH_BYTE,
  ebiTFTWidthHalfWord = EBI_TFTCTRL_WIDTH_HALFWORD
}
 TFT Data Increment Width.
 

Function Documentation

◆ EBI_Init()

void EBI_Init ( const EBI_Init_TypeDef ebiInit)

Configure and enable the External Bus Interface.

Parameters
[in]ebiInitThe EBI configuration structure.
Note
GPIO lines must be configured as a PUSH_PULL for the correct operation. GPIO and EBI clocks must be enabled in the CMU.

◆ EBI_Disable()

void EBI_Disable ( void  )

Disable External Bus Interface.

◆ EBI_BankAddress()

uint32_t EBI_BankAddress ( uint32_t  bank)

Return the base address of the EBI bank.

Parameters
[in]bankA bank to return the start address for.
Returns
an absolute address of the bank.

◆ EBI_BankEnable()

void EBI_BankEnable ( uint32_t  banks,
bool  enable 
)

Enable or disable EBI Bank.

Parameters
[in]banksBanks to reconfigure, mask of EBI_BANK<n> flags.
[in]enableTrue to enable, false to disable.

◆ EBI_NANDFlashEnable()

void EBI_NANDFlashEnable ( uint32_t  banks,
bool  enable 
)

Enable or disable EBI NAND Flash Support.

Parameters
[in]banksBanks to reconfigure, mask of EBI_BANK<n> flags.
[in]enableTrue to enable, false to disable.

◆ EBI_TFTInit()

void EBI_TFTInit ( const EBI_TFTInit_TypeDef ebiTFTInit)

Configure and initialize TFT Direct Drive.

Parameters
[in]ebiTFTInitThe TFT Initialization structure.

◆ EBI_TFTSizeSet()

void EBI_TFTSizeSet ( uint32_t  horizontal,
uint32_t  vertical 
)

Configure and initialize TFT size settings.

Parameters
[in]horizontalTFT display horizontal size in pixels.
[in]verticalTFT display vertical size in pixels.

◆ EBI_TFTHPorchSet()

void EBI_TFTHPorchSet ( uint32_t  front,
uint32_t  back,
uint32_t  pulseWidth 
)

Configure and initialize Horizontal Porch Settings.

Parameters
[in]frontHorizontal front porch size in pixels.
[in]backHorizontal back porch size in pixels.
[in]pulseWidthHorizontal synchronization pulse width. Set to required -1.

◆ EBI_TFTVPorchSet()

void EBI_TFTVPorchSet ( uint32_t  front,
uint32_t  back,
uint32_t  pulseWidth 
)

Configure Vertical Porch Settings.

Parameters
[in]frontVertical front porch size in pixels.
[in]backVertical back porch size in pixels.
[in]pulseWidthVertical synchronization pulse width. Set to required -1.

◆ EBI_TFTTimingSet()

void EBI_TFTTimingSet ( uint32_t  dclkPeriod,
uint32_t  start,
uint32_t  setup,
uint32_t  hold 
)

Configure TFT Direct Drive Timing Settings.

Parameters
[in]dclkPeriodDCLK period in internal cycles.
[in]startA starting position of the external direct drive, relative to the DCLK inactive edge.
[in]setupA number of cycles that RGB data is driven before the active edge of DCLK.
[in]holdA number of cycles that RGB data is held after the active edge of DCLK.

◆ EBI_BankReadTimingSet()

void EBI_BankReadTimingSet ( uint32_t  banks,
uint32_t  setupCycles,
uint32_t  strobeCycles,
uint32_t  holdCycles 
)

Configure timing values of read bus accesses.

Parameters
[in]banksA mask of memory bank(s) to configure timing for.
[in]setupCyclesA number of clock cycles for address setup before REn is asserted.
[in]strobeCyclesThe number of cycles the REn is held active. After the specified number of cycles, data is read. If set to 0, 1 cycle is inserted by hardware.
[in]holdCyclesThe number of cycles CSn is held active after the REn is deasserted.

◆ EBI_BankReadTimingConfig()

void EBI_BankReadTimingConfig ( uint32_t  banks,
bool  pageMode,
bool  prefetch,
bool  halfRE 
)

Configure read operation parameters for a selected bank.

Parameters
[in]banksA mask of memory bank(s) to configure write timing for.
[in]pageModeEnables or disables the half cycle WE strobe in the last strobe cycle.
[in]prefetchEnables or disables the half cycle WE strobe in the last strobe cycle.
[in]halfREEnables or disables the half cycle WE strobe in the last strobe cycle.

◆ EBI_BankWriteTimingSet()

void EBI_BankWriteTimingSet ( uint32_t  banks,
uint32_t  setupCycles,
uint32_t  strobeCycles,
uint32_t  holdCycles 
)

Configure timing values of write bus accesses.

Parameters
[in]banksA mask of memory bank(s) to configure write timing for.
[in]setupCyclesA number of clock cycles for address setup before WEn is asserted.
[in]strobeCyclesA number of cycles WEn is held active. If set to 0, 1 cycle is inserted by hardware.
[in]holdCyclesNumber of cycles CSn is held active after WEn is deasserted.

◆ EBI_BankWriteTimingConfig()

void EBI_BankWriteTimingConfig ( uint32_t  banks,
bool  writeBufDisable,
bool  halfWE 
)

Configure write operation parameters for a selected bank.

Parameters
[in]banksA mask of memory bank(s) to configure write timing for.
[in]writeBufDisableIf true, disable the write buffer.
[in]halfWEEnables or disables half cycle WE strobe in the last strobe cycle.

◆ EBI_BankAddressTimingSet()

void EBI_BankAddressTimingSet ( uint32_t  banks,
uint32_t  setupCycles,
uint32_t  holdCycles 
)

Configure timing values of address latch bus accesses.

Parameters
[in]banksA mask of memory bank(s) to configure address timing for.
[in]setupCyclesSets the number of cycles the address is held after ALE is asserted.
[in]holdCyclesSets the number of cycles the address is driven onto the ADDRDAT bus before ALE is asserted. If set 0, 1 cycle is inserted by hardware.

◆ EBI_BankAddressTimingConfig()

void EBI_BankAddressTimingConfig ( uint32_t  banks,
bool  halfALE 
)

Configure address operation parameters for a selected bank.

Parameters
[in]banksA mask of memory bank(s) to configure write timing for.
[in]halfALEEnables or disables the half cycle ALE strobe in the last strobe cycle.

◆ EBI_BankPolaritySet()

void EBI_BankPolaritySet ( uint32_t  banks,
EBI_Line_TypeDef  line,
EBI_Polarity_TypeDef  polarity 
)

Configure EBI pin polarity for selected bank(s) for devices with individual timing support.

Parameters
[in]banksA mask of memory bank(s) to configure polarity for.
[in]lineWhich pin/line to configure.
[in]polarityActive high, or active low.

◆ EBI_BankByteLaneEnable()

void EBI_BankByteLaneEnable ( uint32_t  banks,
bool  enable 
)

Configure Byte Lane Enable for select banks timing support.

Parameters
[in]banksA mask of memory bank(s) to configure polarity for.
[in]enableA flag

◆ EBI_AltMapEnable()

void EBI_AltMapEnable ( bool  enable)

Configure the Alternate Address Map support.

Enables or disables 256 MB address range for all banks.

Parameters
[in]enableSet or clear the address map extension.

◆ EBI_TFTEnable()

void EBI_TFTEnable ( EBI_TFTDDMode_TypeDef  mode)
inline

Enable or disable TFT Direct Drive.

Parameters
[in]modeDrive from Internal or External memory, or Disable Direct Drive.

◆ EBI_TFTFrameBaseSet()

void EBI_TFTFrameBaseSet ( uint32_t  address)
inline

Configure frame buffer pointer.

Parameters
[in]addressFrame pointer address, as offset by EBI base address.

◆ EBI_TFTPixelSet()

void EBI_TFTPixelSet ( int  pixel,
uint32_t  color 
)
inline

Set TFT Pixel Color 0 or 1.

Parameters
[in]pixelWhich pixel instance to set.
[in]colorColor of pixel, 16-bit value.

◆ EBI_TFTDDSet()

void EBI_TFTDDSet ( uint32_t  color)
inline

Set TFT Direct Drive Data from Internal Memory.

Parameters
[in]colorColor of pixel

◆ EBI_TFTMaskBlendMode()

void EBI_TFTMaskBlendMode ( EBI_TFTMaskBlend_TypeDef  maskBlend)
inline

Masking and Blending Mode Set.

Parameters
[in]maskBlendMasking and alpha blending mode.

◆ EBI_TFTColorSrcSet()

void EBI_TFTColorSrcSet ( EBI_TFTColorSrc_TypeDef  colorSrc)
inline

Masking and Blending Color1 Source Set.

Parameters
[in]colorSrcColor1 source.

◆ EBI_TFTAlphaBlendSet()

void EBI_TFTAlphaBlendSet ( uint8_t  alpha)
inline

Set TFT Alpha Blending Factor.

Parameters
[in]alpha8-bit value indicating blending factor.

◆ EBI_TFTMaskSet()

void EBI_TFTMaskSet ( uint32_t  mask)
inline

Set TFT mask value.

Data accesses that matches this value are suppressed.

Parameters
[in]mask

◆ EBI_TFTVCount()

uint32_t EBI_TFTVCount ( void  )
inline

Get current vertical position counter.

Returns
Returns the current line position for the visible part of a frame.

◆ EBI_TFTHCount()

uint32_t EBI_TFTHCount ( void  )
inline

Get current horizontal position counter.

Returns
Returns the current horizontal pixel position within a visible line.

◆ EBI_TFTFBTriggerSet()

void EBI_TFTFBTriggerSet ( EBI_TFTFrameBufTrigger_TypeDef  sync)
inline

Set Frame Buffer Trigger.

Frame buffer pointer will be updated either on each horizontal line (hsync) or vertical update (vsync).

Parameters
[in]syncTrigger update of frame buffer pointer on vertical or horizontal sync.

◆ EBI_TFTHStrideSet()

void EBI_TFTHStrideSet ( uint32_t  nbytes)
inline

Set horizontal TFT stride value in number of bytes.

Parameters
[in]nbytesNumber of bytes to add to frame buffer pointer after each horizontal line update.

◆ EBI_IntClear()

void EBI_IntClear ( uint32_t  flags)
inline

Clear one or more pending EBI interrupts.

Parameters
[in]flagsPending EBI interrupt source to clear. Use a logical OR combination of valid interrupt flags for the EBI module (EBI_IF_nnn).

◆ EBI_IntSet()

void EBI_IntSet ( uint32_t  flags)
inline

Set one or more pending EBI interrupts.

Parameters
[in]flagsEBI interrupt sources to set to pending. Use a logical OR combination of valid interrupt flags for the EBI module (EBI_IF_nnn).

◆ EBI_IntDisable()

void EBI_IntDisable ( uint32_t  flags)
inline

Disable one or more EBI interrupts.

Parameters
[in]flagsEBI interrupt sources to disable. Use logical OR combination of valid interrupt flags for the EBI module (EBI_IF_nnn)

◆ EBI_IntEnable()

void EBI_IntEnable ( uint32_t  flags)
inline

Enable one or more EBI interrupts.

Parameters
[in]flagsEBI interrupt sources to enable. Use logical OR combination of valid interrupt flags for the EBI module (EBI_IF_nnn)

◆ EBI_IntGet()

uint32_t EBI_IntGet ( void  )
inline

Get pending EBI interrupt flags.

Note
Event bits are not cleared by the use of this function.
Returns
EBI interrupt sources pending, a logical combination of valid EBI interrupt flags, EBI_IF_nnn.

◆ EBI_IntGetEnabled()

uint32_t EBI_IntGetEnabled ( void  )
inline

Get enabled and pending EBI interrupt flags.

Useful for handling more interrupt sources in the same interrupt handler.

Note
Interrupt flags are not cleared by the use of this function.
Returns
Pending and enabled EBI interrupt sources. The return value is the bitwise AND of
  • the enabled interrupt sources in EBI_IEN and
  • the pending interrupt flags EBI_IF.

◆ EBI_StartNandEccGen()

void EBI_StartNandEccGen ( void  )
inline

Start ECC generator on NAND flash transfers.

◆ EBI_StopNandEccGen()

uint32_t EBI_StopNandEccGen ( void  )
inline

Stop NAND flash ECC generator and return generated ECC.

Returns
The generated ECC.

◆ EBI_ChipSelectEnable()

void EBI_ChipSelectEnable ( uint32_t  cs,
bool  enable 
)

Enable or disable EBI Chip Select.

Parameters
[in]csChipSelect lines to reconfigure, mask of EBI_CS<n> flags.
[in]enableTrue to enable, false to disable.

◆ EBI_ReadTimingSet()

void EBI_ReadTimingSet ( uint32_t  setupCycles,
uint32_t  strobeCycles,
uint32_t  holdCycles 
)

Configure timing values of read bus accesses.

Parameters
[in]setupCyclesA number of clock cycles for the address setup before REn is asserted.
[in]strobeCyclesThe number of cycles the REn is held active. After the specified number of cycles, data is read. If set to 0, 1 cycle is inserted by hardware.
[in]holdCyclesThe number of cycles CSn is held active after the REn is deasserted.

◆ EBI_WriteTimingSet()

void EBI_WriteTimingSet ( uint32_t  setupCycles,
uint32_t  strobeCycles,
uint32_t  holdCycles 
)

Configure timing values of write bus accesses.

Parameters
[in]setupCyclesA number of clock cycles for the address setup before WEn is asserted.
[in]strobeCyclesA number of cycles WEn is held active. If set to 0, 1 cycle is inserted by hardware.
[in]holdCyclesA number of cycles CSn is held active after the WEn is deasserted.

◆ EBI_AddressTimingSet()

void EBI_AddressTimingSet ( uint32_t  setupCycles,
uint32_t  holdCycles 
)

Configure timing values of address latch bus accesses.

Parameters
[in]setupCyclesSets the number of cycles the address is held after ALE is asserted.
[in]holdCyclesSets the number of cycles the address is driven onto the ADDRDAT bus before ALE is asserted. If set 0, 1 cycle is inserted by hardware.

◆ EBI_PolaritySet()

void EBI_PolaritySet ( EBI_Line_TypeDef  line,
EBI_Polarity_TypeDef  polarity 
)

Configure EBI pin polarity.

Parameters
[in]lineWhich pin/line to configure.
[in]polarityActive high or active low.

Macro Definition Documentation

◆ EBI_BANK0

#define EBI_BANK0   (uint32_t)(1 << 1)

EBI address bank 0.

*
* ---------               ---------
* |       |  /|       |\  | Ext.  |
* |  EBI  | / --------- \ | Async |
* |       | \ --------- / | Device|
* |       |  \|       |/  |       |
* ---------               ---------
*         Parallel interface
*
* 

◆ EBI_BANK1

#define EBI_BANK1   (uint32_t)(1 << 2)

EBI address bank 1.

◆ EBI_BANK2

#define EBI_BANK2   (uint32_t)(1 << 3)

EBI address bank 2.

◆ EBI_BANK3

#define EBI_BANK3   (uint32_t)(1 << 4)

EBI address bank 3.

◆ EBI_CS0

#define EBI_CS0   (uint32_t)(1 << 1)

EBI chip select line 0.

◆ EBI_CS1

#define EBI_CS1   (uint32_t)(1 << 2)

EBI chip select line 1.

◆ EBI_CS2

#define EBI_CS2   (uint32_t)(1 << 3)

EBI chip select line 2.

◆ EBI_CS3

#define EBI_CS3   (uint32_t)(1 << 4)

EBI chip select line 3.

◆ EBI_GENERIC_ALB_A0

#define EBI_GENERIC_ALB_A0   EBI_ROUTE_ALB_A0

Pin Enable Lower Bound EBI_A[0] and upwards.

◆ EBI_GENERIC_ALB_A8

#define EBI_GENERIC_ALB_A8   EBI_ROUTE_ALB_A8

Pin Enable Lower Bound EBI_A[8] and upwards.

◆ EBI_GENERIC_ALB_A16

#define EBI_GENERIC_ALB_A16   EBI_ROUTE_ALB_A16

Pin Enable Lower Bound EBI_A[16] and upwards.

◆ EBI_GENERIC_ALB_A24

#define EBI_GENERIC_ALB_A24   EBI_ROUTE_ALB_A24

Pin Enable Lower Bound EBI_A[24] and upwards.

◆ EBI_GENERIC_APEN_A0

#define EBI_GENERIC_APEN_A0   EBI_ROUTE_APEN_A0

All EBI_A pins enabled.

◆ EBI_GENERIC_APEN_A5

#define EBI_GENERIC_APEN_A5   EBI_ROUTE_APEN_A5

EBI_A[4:L] pins enabled.

◆ EBI_GENERIC_APEN_A6

#define EBI_GENERIC_APEN_A6   EBI_ROUTE_APEN_A6

EBI_A[5:L] pins enabled.

◆ EBI_GENERIC_APEN_A7

#define EBI_GENERIC_APEN_A7   EBI_ROUTE_APEN_A7

EBI_A[6:L] pins enabled.

◆ EBI_GENERIC_APEN_A8

#define EBI_GENERIC_APEN_A8   EBI_ROUTE_APEN_A8

EBI_A[7:L] pins enabled.

◆ EBI_GENERIC_APEN_A9

#define EBI_GENERIC_APEN_A9   EBI_ROUTE_APEN_A9

EBI_A[8:L] pins enabled.

◆ EBI_GENERIC_APEN_A10

#define EBI_GENERIC_APEN_A10   EBI_ROUTE_APEN_A10

EBI_A[9:L] pins enabled.

◆ EBI_GENERIC_APEN_A11

#define EBI_GENERIC_APEN_A11   EBI_ROUTE_APEN_A11

EBI_A[10:L] pins enabled.

◆ EBI_GENERIC_APEN_A12

#define EBI_GENERIC_APEN_A12   EBI_ROUTE_APEN_A12

EBI_A[11:L] pins enabled.

◆ EBI_GENERIC_APEN_A13

#define EBI_GENERIC_APEN_A13   EBI_ROUTE_APEN_A13

EBI_A[12:L] pins enabled.

◆ EBI_GENERIC_APEN_A14

#define EBI_GENERIC_APEN_A14   EBI_ROUTE_APEN_A14

EBI_A[13:L] pins enabled.

◆ EBI_GENERIC_APEN_A15

#define EBI_GENERIC_APEN_A15   EBI_ROUTE_APEN_A15

EBI_A[14:L] pins enabled.

◆ EBI_GENERIC_APEN_A16

#define EBI_GENERIC_APEN_A16   EBI_ROUTE_APEN_A16

EBI_A[15:L] pins enabled.

◆ EBI_GENERIC_APEN_A17

#define EBI_GENERIC_APEN_A17   EBI_ROUTE_APEN_A17

EBI_A[16:L] pins enabled.

◆ EBI_GENERIC_APEN_A18

#define EBI_GENERIC_APEN_A18   EBI_ROUTE_APEN_A18

EBI_A[17:L] pins enabled.

◆ EBI_GENERIC_APEN_A19

#define EBI_GENERIC_APEN_A19   EBI_ROUTE_APEN_A19

EBI_A[18:L] pins enabled.

◆ EBI_GENERIC_APEN_A20

#define EBI_GENERIC_APEN_A20   EBI_ROUTE_APEN_A20

EBI_A[19:L] pins enabled.

◆ EBI_GENERIC_APEN_A21

#define EBI_GENERIC_APEN_A21   EBI_ROUTE_APEN_A21

EBI_A[20:L] pins enabled.

◆ EBI_GENERIC_APEN_A22

#define EBI_GENERIC_APEN_A22   EBI_ROUTE_APEN_A22

EBI_A[21:L] pins enabled.

◆ EBI_GENERIC_APEN_A23

#define EBI_GENERIC_APEN_A23   EBI_ROUTE_APEN_A23

EBI_A[22:L] pins enabled.

◆ EBI_GENERIC_APEN_A24

#define EBI_GENERIC_APEN_A24   EBI_ROUTE_APEN_A24

EBI_A[23:L] pins enabled.

◆ EBI_GENERIC_APEN_A25

#define EBI_GENERIC_APEN_A25   EBI_ROUTE_APEN_A25

EBI_A[24:L] pins enabled.

◆ EBI_GENERIC_APEN_A26

#define EBI_GENERIC_APEN_A26   EBI_ROUTE_APEN_A26

EBI_A[25:L] pins enabled.

◆ EBI_GENERIC_APEN_A27

#define EBI_GENERIC_APEN_A27   EBI_ROUTE_APEN_A27

EBI_A[26:L] pins enabled.

◆ EBI_GENERIC_APEN_A28

#define EBI_GENERIC_APEN_A28   EBI_ROUTE_APEN_A28

EBI_A[27:L] pins enabled.

◆ EBI_INIT_DEFAULT

#define EBI_INIT_DEFAULT

Default configuration for EBI initialization structures.

◆ EBI_TFTINIT_DEFAULT

#define EBI_TFTINIT_DEFAULT
Value:
{ \
ebiTFTBank0, /* Select EBI Bank 0. */ \
ebiTFTWidthHalfWord, /* Select 2-byte increments. */ \
ebiTFTColorSrcMem, /* Use memory as source for mask/blending. */ \
ebiTFTInterleaveUnlimited, /* Unlimited interleaved accesses. */ \
ebiTFTFrameBufTriggerVSync, /* VSYNC as frame buffer update trigger. */ \
false, /* Drive DCLK from negative edge of internal clock. */ \
ebiTFTMBDisabled, /* No masking and alpha blending enabled. */ \
ebiTFTDDModeExternal, /* Drive from external memory. */ \
ebiActiveLow, /* CS Active Low polarity. */ \
ebiActiveLow, /* DCLK Active Low polarity. */ \
ebiActiveLow, /* DATAEN Active Low polarity. */ \
ebiActiveLow, /* HSYNC Active Low polarity. */ \
ebiActiveLow, /* VSYNC Active Low polarity. */ \
320, /* Horizontal size in pixels. */ \
1, /* Horizontal Front Porch. */ \
29, /* Horizontal Back Porch. */ \
2, /* Horizontal Synchronization Pulse Width. */ \
240, /* Vertical size in pixels. */ \
1, /* Vertical Front Porch. */ \
4, /* Vertical Back Porch. */ \
2, /* Vertical Synchronization Pulse Width. */ \
0x0000, /* Address offset to EBI memory base. */ \
5, /* DCLK Period. */ \
2, /* DCLK Start. */ \
1, /* DCLK Setup cycles. */ \
1, /* DCLK Hold cycles. */ \
}

Default configuration for EBI TFT initialization structure.

Enumeration Type Documentation

◆ EBI_Mode_TypeDef

EBI Mode of operation.

Enumerator
ebiModeD8A8 

8 data bits, 8 address bits.

ebiModeD16A16ALE 

16 data bits, 16 address bits, using address latch enable.

ebiModeD8A24ALE 

8 data bits, 24 address bits, using address latch enable.

ebiModeD16 

Mode D16.

◆ EBI_Polarity_TypeDef

EBI Polarity configuration.

Enumerator
ebiActiveLow 

Active Low.

ebiActiveHigh 

Active High.

◆ EBI_Line_TypeDef

EBI Pin Line types.

Enumerator
ebiLineARDY 

Address Ready line.

ebiLineALE 

Address Latch Enable line.

ebiLineWE 

Write Enable line.

ebiLineRE 

Read Enable line.

ebiLineCS 

Chip Select line.

ebiLineBL 

BL line.

ebiLineTFTVSync 

TFT VSYNC line.

ebiLineTFTHSync 

TFT HSYNC line.

ebiLineTFTDataEn 

TFT Data enable line.

ebiLineTFTDClk 

TFT DCLK line.

ebiLineTFTCS 

TFT Chip select line.

◆ EBI_ALow_TypeDef

Address Pin Enable, lower limit - lower range of pins to enable.

Enumerator
ebiALowA0 

Address lines EBI_A[0] and upwards are enabled by APEN.

ebiALowA8 

Address lines EBI_A[8] and upwards are enabled by APEN.

ebiALowA16 

Address lines EBI_A[16] and upwards are enabled by APEN.

ebiALowA24 

Address lines EBI_A[24] and upwards are enabled by APEN.

◆ EBI_AHigh_TypeDef

Address Pin Enable, high limit - higher limit of pins to enable.

Enumerator
ebiAHighA0 

All EBI_A pins are disabled.

ebiAHighA5 

All EBI_A[4:ALow] are enabled.

ebiAHighA6 

All EBI_A[5:ALow] are enabled.

ebiAHighA7 

All EBI_A[6:ALow] are enabled.

ebiAHighA8 

All EBI_A[7:ALow] are enabled.

ebiAHighA9 

All EBI_A[8:ALow] are enabled.

ebiAHighA10 

All EBI_A[9:ALow] are enabled.

ebiAHighA11 

All EBI_A[10:ALow] are enabled.

ebiAHighA12 

All EBI_A[11:ALow] are enabled.

ebiAHighA13 

All EBI_A[12:ALow] are enabled.

ebiAHighA14 

All EBI_A[13:ALow] are enabled.

ebiAHighA15 

All EBI_A[14:ALow] are enabled.

ebiAHighA16 

All EBI_A[15:ALow] are enabled.

ebiAHighA17 

All EBI_A[16:ALow] are enabled.

ebiAHighA18 

All EBI_A[17:ALow] are enabled.

ebiAHighA19 

All EBI_A[18:ALow] are enabled.

ebiAHighA20 

All EBI_A[19:ALow] are enabled.

ebiAHighA21 

All EBI_A[20:ALow] are enabled.

ebiAHighA22 

All EBI_A[21:ALow] are enabled.

ebiAHighA23 

All EBI_A[22:ALow] are enabled.

ebiAHighA24 

All EBI_A[23:ALow] are enabled.

ebiAHighA25 

All EBI_A[24:ALow] are enabled.

ebiAHighA26 

All EBI_A[25:ALow] are enabled.

ebiAHighA27 

All EBI_A[26:ALow] are enabled.

ebiAHighA28 

All EBI_A[27:ALow] are enabled.

◆ EBI_Location_TypeDef

EBI I/O Alternate Pin Location.

Enumerator
ebiLocation0 

EBI PIN I/O Location 0.

ebiLocation1 

EBI PIN I/O Location 1.

ebiLocation2 

EBI PIN I/O Location 2.

◆ EBI_TFTBank_TypeDef

EBI TFT Graphics Bank Select.

Enumerator
ebiTFTBank0 

Memory BANK0 contains frame buffer.

ebiTFTBank1 

Memory BANK1 contains frame buffer.

ebiTFTBank2 

Memory BANK2 contains frame buffer.

ebiTFTBank3 

Memory BANK3 contains frame buffer.

◆ EBI_TFTColorSrc_TypeDef

Masking and Alpha blending source color.

Enumerator
ebiTFTColorSrcMem 

Use memory as source color for masking/alpha blending.

ebiTFTColorSrcPixel1 

Use PIXEL1 register as source color for masking/alpha blending.

◆ EBI_TFTInterleave_TypeDef

Bus Data Interleave Mode.

Enumerator
ebiTFTInterleaveUnlimited 

Unlimited interleaved accesses per EBI_DCLK period.

Can cause jitter.

ebiTFTInterleaveOnePerDClk 

Allow 1 interleaved access per EBI_DCLK period.

ebiTFTInterleavePorch 

Only allow accesses during porch periods.

◆ EBI_TFTFrameBufTrigger_TypeDef

Control frame base pointer copy.

Enumerator
ebiTFTFrameBufTriggerVSync 

Trigger update of frame buffer pointer on vertical sync.

ebiTFTFrameBufTriggerHSync 

Trigger update of frame buffer pointer on horizontal sync.

◆ EBI_TFTMaskBlend_TypeDef

Control of mask and alpha blending mode.

Enumerator
ebiTFTMBDisabled 

Masking and blending are disabled.

ebiTFTMBIMask 

Internal masking.

ebiTFTMBIAlpha 

Internal alpha blending.

ebiTFTMBIMaskAlpha 

Internal masking and alpha blending are enabled.

ebiTFTMBEMask 

External masking.

ebiTFTMBEAlpha 

External alpha blending.

ebiTFTMBEMaskAlpha 

External masking and alpha blending.

◆ EBI_TFTDDMode_TypeDef

TFT Direct Drive mode.

Enumerator
ebiTFTDDModeDisabled 

Disabled.

ebiTFTDDModeInternal 

Direct Drive from internal memory.

ebiTFTDDModeExternal 

Direct Drive from external memory.

◆ EBI_TFTWidth_TypeDef

TFT Data Increment Width.

Enumerator
ebiTFTWidthByte 

Pixel increments are 1 byte at a time.

ebiTFTWidthHalfWord 

Pixel increments are 2 bytes (half word).