EBI - External Bus Interface#

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.

Modules#

EBI_Init_TypeDef

Enumerations#

enum
ebiModeD8A8 = EBI_CTRL_MODE_D8A8
ebiModeD16A16ALE = EBI_CTRL_MODE_D16A16ALE
ebiModeD8A24ALE = EBI_CTRL_MODE_D8A24ALE
}

EBI Mode of operation.

enum
ebiActiveLow = 0
ebiActiveHigh = 1
}

EBI Polarity configuration.

enum
ebiLineARDY
ebiLineALE
ebiLineWE
ebiLineRE
ebiLineCS
}

EBI Pin Line types.

Functions#

void
EBI_Init(const EBI_Init_TypeDef *ebiInit)

Configure and enable the External Bus Interface.

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

Default configuration for EBI initialization structures.

Enumeration Documentation#

EBI_Mode_TypeDef#

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.


Definition at line 145 of file platform/emlib/inc/em_ebi.h

EBI_Polarity_TypeDef#

EBI_Polarity_TypeDef

EBI Polarity configuration.

Enumerator
ebiActiveLow

Active Low.

ebiActiveHigh

Active High.


Definition at line 159 of file platform/emlib/inc/em_ebi.h

EBI_Line_TypeDef#

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.


Definition at line 167 of file platform/emlib/inc/em_ebi.h

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.


Definition at line 107 of file platform/emlib/src/em_ebi.c

EBI_Disable#

void EBI_Disable (void )

Disable External Bus Interface.

Parameters
N/A

Definition at line 311 of file platform/emlib/src/em_ebi.c

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.


Definition at line 329 of file platform/emlib/src/em_ebi.c

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.


Definition at line 355 of file platform/emlib/src/em_ebi.c

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.


Definition at line 437 of file platform/emlib/src/em_ebi.c

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.


Definition at line 463 of file platform/emlib/src/em_ebi.c

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.


Definition at line 523 of file platform/emlib/src/em_ebi.c

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.


Definition at line 557 of file platform/emlib/src/em_ebi.c

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.


Definition at line 589 of file platform/emlib/src/em_ebi.c

Macro Definition Documentation#

EBI_BANK0#

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

EBI address bank 0.

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

Definition at line 68 of file platform/emlib/inc/em_ebi.h

EBI_BANK1#

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

EBI address bank 1.


Definition at line 69 of file platform/emlib/inc/em_ebi.h

EBI_BANK2#

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

EBI address bank 2.


Definition at line 70 of file platform/emlib/inc/em_ebi.h

EBI_BANK3#

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

EBI address bank 3.


Definition at line 71 of file platform/emlib/inc/em_ebi.h

EBI_CS0#

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

EBI chip select line 0.


Definition at line 73 of file platform/emlib/inc/em_ebi.h

EBI_CS1#

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

EBI chip select line 1.


Definition at line 74 of file platform/emlib/inc/em_ebi.h

EBI_CS2#

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

EBI chip select line 2.


Definition at line 75 of file platform/emlib/inc/em_ebi.h

EBI_CS3#

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

EBI chip select line 3.


Definition at line 76 of file platform/emlib/inc/em_ebi.h

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.


Definition at line 556 of file platform/emlib/inc/em_ebi.h