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_TFTColorFormatSet (EBI_TFTColorFormat_TypeDef color0, EBI_TFTColorFormat_TypeDef color1) |
Set TFT Color Format. | |
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_ROUTEPEN_ALB_A0 |
Pin Enable Lower Bound EBI_A[0] and upwards. | |
#define | EBI_GENERIC_ALB_A8 EBI_ROUTEPEN_ALB_A8 |
Pin Enable Lower Bound EBI_A[8] and upwards. | |
#define | EBI_GENERIC_ALB_A16 EBI_ROUTEPEN_ALB_A16 |
Pin Enable Lower Bound EBI_A[16] and upwards. | |
#define | EBI_GENERIC_ALB_A24 EBI_ROUTEPEN_ALB_A24 |
Pin Enable Lower Bound EBI_A[24] and upwards. | |
#define | EBI_GENERIC_APEN_A0 EBI_ROUTEPEN_APEN_A0 |
All EBI_A pins enabled. | |
#define | EBI_GENERIC_APEN_A5 EBI_ROUTEPEN_APEN_A5 |
EBI_A[4:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A6 EBI_ROUTEPEN_APEN_A6 |
EBI_A[5:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A7 EBI_ROUTEPEN_APEN_A7 |
EBI_A[6:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A8 EBI_ROUTEPEN_APEN_A8 |
EBI_A[7:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A9 EBI_ROUTEPEN_APEN_A9 |
EBI_A[8:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A10 EBI_ROUTEPEN_APEN_A10 |
EBI_A[9:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A11 EBI_ROUTEPEN_APEN_A11 |
EBI_A[10:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A12 EBI_ROUTEPEN_APEN_A12 |
EBI_A[11:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A13 EBI_ROUTEPEN_APEN_A13 |
EBI_A[12:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A14 EBI_ROUTEPEN_APEN_A14 |
EBI_A[13:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A15 EBI_ROUTEPEN_APEN_A15 |
EBI_A[14:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A16 EBI_ROUTEPEN_APEN_A16 |
EBI_A[15:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A17 EBI_ROUTEPEN_APEN_A17 |
EBI_A[16:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A18 EBI_ROUTEPEN_APEN_A18 |
EBI_A[17:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A19 EBI_ROUTEPEN_APEN_A19 |
EBI_A[18:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A20 EBI_ROUTEPEN_APEN_A20 |
EBI_A[19:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A21 EBI_ROUTEPEN_APEN_A21 |
EBI_A[20:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A22 EBI_ROUTEPEN_APEN_A22 |
EBI_A[21:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A23 EBI_ROUTEPEN_APEN_A23 |
EBI_A[22:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A24 EBI_ROUTEPEN_APEN_A24 |
EBI_A[23:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A25 EBI_ROUTEPEN_APEN_A25 |
EBI_A[24:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A26 EBI_ROUTEPEN_APEN_A26 |
EBI_A[25:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A27 EBI_ROUTEPEN_APEN_A27 |
EBI_A[26:L] pins enabled. | |
#define | EBI_GENERIC_APEN_A28 EBI_ROUTEPEN_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_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_TFTColorFormat_TypeDef { ebiTFTARGB0555 = EBI_TFTCOLORFORMAT_PIXEL0FORMAT_ARGB0555, ebiTFTARGB0565 = EBI_TFTCOLORFORMAT_PIXEL0FORMAT_ARGB0565, ebiTFTARGB0666 = EBI_TFTCOLORFORMAT_PIXEL0FORMAT_ARGB0666, ebiTFTARGB0888 = EBI_TFTCOLORFORMAT_PIXEL0FORMAT_ARGB0888, ebiTFTARGB5555 = EBI_TFTCOLORFORMAT_PIXEL0FORMAT_ARGB5555, ebiTFTARGB6565 = EBI_TFTCOLORFORMAT_PIXEL0FORMAT_ARGB6565, ebiTFTARGB6666 = EBI_TFTCOLORFORMAT_PIXEL0FORMAT_ARGB6666, ebiTFTARGB8888 = EBI_TFTCOLORFORMAT_PIXEL0FORMAT_ARGB8888, ebiTFTRGB555 = EBI_TFTCOLORFORMAT_PIXEL1FORMAT_RGB555, ebiTFTRGB565 = EBI_TFTCOLORFORMAT_PIXEL1FORMAT_RGB565, ebiTFTRGB666 = EBI_TFTCOLORFORMAT_PIXEL1FORMAT_RGB666, ebiTFTRGB888 = EBI_TFTCOLORFORMAT_PIXEL1FORMAT_RGB888 } |
EBI TFT Color format. | |
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_IMASKALPHA, ebiTFTMBEMask = EBI_TFTCTRL_MASKBLEND_EFBMASK, ebiTFTMBEAlpha = EBI_TFTCTRL_MASKBLEND_EFBALPHA, ebiTFTMBEMaskAlpha = EBI_TFTCTRL_MASKBLEND_EFBMASKALPHA, ebiTFTMBEIMask = EBI_TFTCTRL_MASKBLEND_IFBMASK, ebiTFTMBEIAlpha = EBI_TFTCTRL_MASKBLEND_IFBALPHA, ebiTFTMBEIMaskAlpha = EBI_TFTCTRL_MASKBLEND_IFBMASKALPHA } |
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] ebiInit
The 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] bank
A 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] banks
Banks to reconfigure, mask of EBI_BANK<n> flags. [in] enable
True to enable, false to disable.
◆ EBI_NANDFlashEnable()
void EBI_NANDFlashEnable | ( | uint32_t | banks, |
bool | enable |
||
) |
Enable or disable EBI NAND Flash Support.
- Parameters
-
[in] banks
Banks to reconfigure, mask of EBI_BANK<n> flags. [in] enable
True to enable, false to disable.
◆ EBI_TFTInit()
void EBI_TFTInit | ( | const EBI_TFTInit_TypeDef * | ebiTFTInit | ) |
Configure and initialize TFT Direct Drive.
- Parameters
-
[in] ebiTFTInit
The TFT Initialization structure.
◆ EBI_TFTSizeSet()
void EBI_TFTSizeSet | ( | uint32_t | horizontal, |
uint32_t | vertical |
||
) |