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.

Functions

void EBI_Init (const EBI_Init_TypeDef *ebiInit)
Configure and enable the External Bus Interface.
void EBI_Disable (void)
Disable External Bus Interface.
void EBI_BankEnable (uint32_t banks, bool enable)
Enable or disable EBI Bank.
uint32_t EBI_BankAddress (uint32_t bank)
Return the base address of the EBI bank.
void EBI_ChipSelectEnable (uint32_t cs, bool enable)
Enable or disable EBI Chip Select.
void EBI_PolaritySet ( EBI_Line_TypeDef line, EBI_Polarity_TypeDef polarity)
Configure EBI pin polarity.
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.

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_INIT_DEFAULT
Default configuration for EBI initialization structures.

Enumerations

enum EBI_Mode_TypeDef {
ebiModeD8A8 = EBI_CTRL_MODE_D8A8,
ebiModeD16A16ALE = EBI_CTRL_MODE_D16A16ALE,
ebiModeD8A24ALE = EBI_CTRL_MODE_D8A24ALE
}
EBI Mode of operation.
enum EBI_Polarity_TypeDef {
ebiActiveLow = 0,
ebiActiveHigh = 1
}
EBI Polarity configuration.
enum EBI_Line_TypeDef {
ebiLineARDY ,
ebiLineALE ,
ebiLineWE ,
ebiLineRE ,
ebiLineCS
}
EBI Pin Line types.

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_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_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_ChipSelectEnable()

void EBI_ChipSelectEnable ( uint32_t cs,
bool enable
)

Enable or disable EBI Chip Select.

Parameters
[in] cs ChipSelect lines to reconfigure, mask of EBI_CS<n> flags.
[in] enable True to enable, false to disable.

EBI_PolaritySet()

void EBI_PolaritySet ( EBI_Line_TypeDef line,
EBI_Polarity_TypeDef polarity
)

Configure EBI pin polarity.

Parameters
[in] line Which pin/line to configure.
[in] polarity Active high or active low.

EBI_ReadTimingSet()

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

Configure timing values of read bus accesses.

Parameters
[in] setupCycles A number of clock cycles for the address setup before REn is asserted.
[in] strobeCycles The 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] holdCycles The 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] setupCycles A number of clock cycles for the address setup before WEn is asserted.
[in] strobeCycles A number of cycles WEn is held active. If set to 0, 1 cycle is inserted by hardware.
[in] holdCycles A 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] setupCycles Sets the number of cycles the address is held after ALE is asserted.
[in] holdCycles Sets 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.

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_INIT_DEFAULT

#define EBI_INIT_DEFAULT
Value:
{ \
ebiModeD8A8, /* 8 bit address, 8 bit data. */ \
ebiActiveLow, /* ARDY polarity. */ \
ebiActiveLow, /* ALE polarity. */ \
ebiActiveLow, /* WE polarity. */ \
ebiActiveLow, /* RE polarity. */ \
ebiActiveLow, /* CS polarity. */ \
false, /* Enable ARDY. */ \
false, /* Do not disable ARDY timeout. */ \
EBI_BANK0, /* Enable bank 0. */ \
EBI_CS0, /* Enable chip select 0. */ \
0, /* Address setup cycles. */ \
1, /* Address hold cycles. */ \
0, /* Read setup cycles. */ \
0, /* Read strobe cycles. */ \
0, /* Read hold cycles. */ \
0, /* Write setup cycles. */ \
0, /* Write strobe cycles. */ \
1, /* Write hold cycles. */ \
true, /* Enable EBI. */ \
}

Default configuration for EBI initialization structures.

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.

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.