![]()  | 
  
    MCUXpresso SDK API Reference Manual
    Rev 2.15.000
    
   NXP Semiconductors 
   | 
 
The MCUXpresso SDK provides a peripheral driver for the Crossbar External Bus Interface (FlexBus) block of MCUXpresso SDK devices.
A multifunction external bus interface is provided on the device with a basic functionality to interface to slave-only devices. It can be directly connected to the following asynchronous or synchronous devices with little or no additional circuitry.
For asynchronous devices, a simple chip-select based interface can be used. The FlexBus interface has up to six general purpose chip-selects, FB_CS[5:0]. The number of chip selects available depends on the device and its pin configuration.
To configure the FlexBus driver, use on of the two ways to configure the flexbus_config_t structure.
To initialize and configure the FlexBus driver, call the FLEXBUS_Init() function and pass a pointer to the flexbus_config_t structure.
To de-initialize the FlexBus driver, call the FLEXBUS_Deinit() function.
This example shows how to write/read to external memory (MRAM) by using the FlexBus module.
Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/flexbus
Data Structures | |
| struct | _flexbus_config | 
| Configuration structure that the user needs to set.  More... | |
Typedefs | |
| typedef enum _flexbus_port_size | flexbus_port_size_t | 
| Defines port size for FlexBus peripheral.  | |
| 
typedef enum  _flexbus_write_address_hold  | flexbus_write_address_hold_t | 
| Defines number of cycles to hold address and attributes for FlexBus peripheral.  | |
| 
typedef enum  _flexbus_read_address_hold  | flexbus_read_address_hold_t | 
| Defines number of cycles to hold address and attributes for FlexBus peripheral.  | |
| typedef enum _flexbus_address_setup | flexbus_address_setup_t | 
| Address setup for FlexBus peripheral.  | |
| 
typedef enum  _flexbus_bytelane_shift  | flexbus_bytelane_shift_t | 
| Defines byte-lane shift for FlexBus peripheral.  | |
| 
typedef enum  _flexbus_multiplex_group1_signal  | flexbus_multiplex_group1_t | 
| Defines multiplex group1 valid signals.  | |
| 
typedef enum  _flexbus_multiplex_group2_signal  | flexbus_multiplex_group2_t | 
| Defines multiplex group2 valid signals.  | |
| 
typedef enum  _flexbus_multiplex_group3_signal  | flexbus_multiplex_group3_t | 
| Defines multiplex group3 valid signals.  | |
| 
typedef enum  _flexbus_multiplex_group4_signal  | flexbus_multiplex_group4_t | 
| Defines multiplex group4 valid signals.  | |
| 
typedef enum  _flexbus_multiplex_group5_signal  | flexbus_multiplex_group5_t | 
| Defines multiplex group5 valid signals.  | |
| typedef struct _flexbus_config | flexbus_config_t | 
| Configuration structure that the user needs to set.  | |
Driver version | |
| #define | FSL_FLEXBUS_DRIVER_VERSION (MAKE_VERSION(2, 1, 1)) | 
| Version 2.1.1.  More... | |
FlexBus functional operation | |
| void | FLEXBUS_Init (FB_Type *base, const flexbus_config_t *config) | 
| Initializes and configures the FlexBus module.  More... | |
| void | FLEXBUS_Deinit (FB_Type *base) | 
| De-initializes a FlexBus instance.  More... | |
| void | FLEXBUS_GetDefaultConfig (flexbus_config_t *config) | 
| Initializes the FlexBus configuration structure.  More... | |
| struct _flexbus_config | 
Data Fields | |
| uint8_t | chip | 
| Chip FlexBus for validation.  | |
| uint8_t | waitStates | 
| Value of wait states.  | |
| uint8_t | secondaryWaitStates | 
| Value of secondary wait states.  | |
| uint32_t | chipBaseAddress | 
| Chip base address for using FlexBus.  | |
| uint32_t | chipBaseAddressMask | 
| Chip base address mask.  | |
| bool | writeProtect | 
| Write protected.  | |
| bool | burstWrite | 
| Burst-Write enable.  | |
| bool | burstRead | 
| Burst-Read enable.  | |
| bool | byteEnableMode | 
| Byte-enable mode support.  | |
| bool | autoAcknowledge | 
| Auto acknowledge setting.  | |
| bool | extendTransferAddress | 
| Extend transfer start/extend address latch enable.  | |
| bool | secondaryWaitStatesEnable | 
| Enable secondary wait states.  | |
| flexbus_port_size_t | portSize | 
| Port size of transfer.  | |
| flexbus_bytelane_shift_t | byteLaneShift | 
| Byte-lane shift enable.  | |
| flexbus_write_address_hold_t | writeAddressHold | 
| Write address hold or deselect option.  | |
| flexbus_read_address_hold_t | readAddressHold | 
| Read address hold or deselect option.  | |
| flexbus_address_setup_t | addressSetup | 
| Address setup setting.  | |
| flexbus_multiplex_group1_t | group1MultiplexControl | 
| FlexBus Signal Group 1 Multiplex control.  | |
| flexbus_multiplex_group2_t | group2MultiplexControl | 
| FlexBus Signal Group 2 Multiplex control.  | |
| flexbus_multiplex_group3_t | group3MultiplexControl | 
| FlexBus Signal Group 3 Multiplex control.  | |
| flexbus_multiplex_group4_t | group4MultiplexControl | 
| FlexBus Signal Group 4 Multiplex control.  | |
| flexbus_multiplex_group5_t | group5MultiplexControl | 
| FlexBus Signal Group 5 Multiplex control.  | |
| #define FSL_FLEXBUS_DRIVER_VERSION (MAKE_VERSION(2, 1, 1)) | 
| enum _flexbus_port_size | 
| void FLEXBUS_Init | ( | FB_Type * | base, | 
| const flexbus_config_t * | config | ||
| ) | 
This function enables the clock gate for FlexBus module. Only chip 0 is validated and set to known values. Other chips are disabled. Note that in this function, certain parameters, depending on external memories, must be set before using the FLEXBUS_Init() function. This example shows how to set up the uart_state_t and the flexbus_config_t parameters and how to call the FLEXBUS_Init function by passing in these parameters.
| base | FlexBus peripheral address. | 
| config | Pointer to the configuration structure | 
| void FLEXBUS_Deinit | ( | FB_Type * | base | ) | 
This function disables the clock gate of the FlexBus module clock.
| base | FlexBus peripheral address. | 
| void FLEXBUS_GetDefaultConfig | ( | flexbus_config_t * | config | ) | 
This function initializes the FlexBus configuration structure to default value. The default values are.
| config | Pointer to the initialization structure. |