EFM32 Giant Gecko Software Documentation  efm32gg-doc-5.1.2
em_ebi.h
Go to the documentation of this file.
1 /***************************************************************************/
33 #ifndef EM_EBI_H
34 #define EM_EBI_H
35 
36 #include "em_device.h"
37 #if defined(EBI_COUNT) && (EBI_COUNT > 0)
38 
39 #include <stdint.h>
40 #include <stdbool.h>
41 #include "em_assert.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 /***************************************************************************/
52 /***************************************************************************/
57 /***************************************************************************/
71 /*******************************************************************************
72  ******************************* DEFINES ***********************************
73  ******************************************************************************/
74 
75 #define EBI_BANK0 (uint32_t)(1 << 1)
76 #define EBI_BANK1 (uint32_t)(1 << 2)
77 #define EBI_BANK2 (uint32_t)(1 << 3)
78 #define EBI_BANK3 (uint32_t)(1 << 4)
80 #define EBI_CS0 (uint32_t)(1 << 1)
81 #define EBI_CS1 (uint32_t)(1 << 2)
82 #define EBI_CS2 (uint32_t)(1 << 3)
83 #define EBI_CS3 (uint32_t)(1 << 4)
85 /*******************************************************************************
86  ******************************** ENUMS ************************************
87  ******************************************************************************/
88 
90 typedef enum
91 {
98 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
99 
101 #endif
103 
105 typedef enum
106 {
112 
114 typedef enum
115 {
126 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
127 
129 #endif
130 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
131 
141 #endif
143 
144 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
145 
146 typedef enum
147 {
157 
159 typedef enum
160 {
212 
214 typedef enum {
222 #endif
223 
224 /* TFT support */
225 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
226 
227 typedef enum
228 {
238 
240 typedef enum
241 {
247 
249 typedef enum
250 {
258 
260 typedef enum
261 {
267 
269 typedef enum
270 {
286 
288 typedef enum
289 {
297 
299 typedef enum
300 {
306 
307 #endif
308 
309 /*******************************************************************************
310  ******************************* STRUCTS ***********************************
311  ******************************************************************************/
312 
314 typedef struct
315 {
328 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
329 
332  bool blEnable;
334  bool noIdle;
335 #endif
336 
341  uint32_t banks;
343  uint32_t csLines;
348 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
349 
351 #endif
352 
358 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
359 
365 #endif
366 
372 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
373 
383 #endif
384 
385  bool enable;
387 
389 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
390 #define EBI_INIT_DEFAULT \
391 { \
392  ebiModeD8A8, /* 8 bit address, 8 bit data */ \
393  ebiActiveLow, /* ARDY polarity */ \
394  ebiActiveLow, /* ALE polarity */ \
395  ebiActiveLow, /* WE polarity */ \
396  ebiActiveLow, /* RE polarity */ \
397  ebiActiveLow, /* CS polarity */ \
398  ebiActiveLow, /* BL polarity */ \
399  false, /* enable BL */ \
400  false, /* enable NOIDLE */ \
401  false, /* enable ARDY */ \
402  false, /* don't disable ARDY timeout */ \
403  EBI_BANK0, /* enable bank 0 */ \
404  EBI_CS0, /* enable chip select 0 */ \
405  0, /* addr setup cycles */ \
406  1, /* addr hold cycles */ \
407  false, /* do not enable half cycle ALE strobe */ \
408  0, /* read setup cycles */ \
409  0, /* read strobe cycles */ \
410  0, /* read hold cycles */ \
411  false, /* disable page mode */ \
412  false, /* disable prefetch */ \
413  false, /* do not enable half cycle REn strobe */ \
414  0, /* write setup cycles */ \
415  0, /* write strobe cycles */ \
416  1, /* write hold cycles */ \
417  false, /* do not disable the write buffer */ \
418  false, /* do not enable halc cycle WEn strobe */ \
419  ebiALowA0, /* ALB - Low bound, address lines */ \
420  ebiAHighA0, /* APEN - High bound, address lines */ \
421  ebiLocation0, /* Use Location 0 */ \
422  true, /* enable EBI */ \
423 }
424 #else
425 #define EBI_INIT_DEFAULT \
426 { \
427  ebiModeD8A8, /* 8 bit address, 8 bit data */ \
428  ebiActiveLow, /* ARDY polarity */ \
429  ebiActiveLow, /* ALE polarity */ \
430  ebiActiveLow, /* WE polarity */ \
431  ebiActiveLow, /* RE polarity */ \
432  ebiActiveLow, /* CS polarity */ \
433  false, /* enable ARDY */ \
434  false, /* don't disable ARDY timeout */ \
435  EBI_BANK0, /* enable bank 0 */ \
436  EBI_CS0, /* enable chip select 0 */ \
437  0, /* addr setup cycles */ \
438  1, /* addr hold cycles */ \
439  0, /* read setup cycles */ \
440  0, /* read strobe cycles */ \
441  0, /* read hold cycles */ \
442  0, /* write setup cycles */ \
443  0, /* write strobe cycles */ \
444  1, /* write hold cycles */ \
445  true, /* enable EBI */ \
446 }
447 #endif
448 
449 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
450 
452 typedef struct
453 {
465  bool shiftDClk;
481  int hsize;
489  int vsize;
497  uint32_t addressOffset;
507 
509 #define EBI_TFTINIT_DEFAULT \
510 { \
511  ebiTFTBank0, /* Select EBI Bank 0 */ \
512  ebiTFTWidthHalfWord, /* Select 2-byte increments */ \
513  ebiTFTColorSrcMem, /* Use memory as source for mask/blending */ \
514  ebiTFTInterleaveUnlimited, /* Unlimited interleaved accesses */ \
515  ebiTFTFrameBufTriggerVSync, /* VSYNC as frame buffer update trigger */ \
516  false, /* Drive DCLK from negative edge of internal clock */ \
517  ebiTFTMBDisabled, /* No masking and alpha blending enabled */ \
518  ebiTFTDDModeExternal, /* Drive from external memory */ \
519  ebiActiveLow, /* CS Active Low polarity */ \
520  ebiActiveLow, /* DCLK Active Low polarity */ \
521  ebiActiveLow, /* DATAEN Active Low polarity */ \
522  ebiActiveLow, /* HSYNC Active Low polarity */ \
523  ebiActiveLow, /* VSYNC Active Low polarity */ \
524  320, /* Horizontal size in pixels */ \
525  1, /* Horizontal Front Porch */ \
526  29, /* Horizontal Back Porch */ \
527  2, /* Horizontal Synchronization Pulse Width */ \
528  240, /* Vertical size in pixels */ \
529  1, /* Vertical Front Porch */ \
530  4, /* Vertical Back Porch */ \
531  2, /* Vertical Synchronization Pulse Width */ \
532  0x0000, /* Address offset to EBI memory base */ \
533  5, /* DCLK Period */ \
534  2, /* DCLK Start */ \
535  1, /* DCLK Setup cycles */ \
536  1, /* DCLK Hold cycles */ \
537 }
538 
539 #endif
540 /*******************************************************************************
541  ***************************** PROTOTYPES **********************************
542  ******************************************************************************/
543 
544 void EBI_Init(const EBI_Init_TypeDef *ebiInit);
545 void EBI_Disable(void);
546 uint32_t EBI_BankAddress(uint32_t bank);
547 void EBI_BankEnable(uint32_t banks, bool enable);
548 
549 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
550 void EBI_TFTInit(const EBI_TFTInit_TypeDef *ebiTFTInit);
551 void EBI_TFTSizeSet(uint32_t horizontal, uint32_t vertical);
552 void EBI_TFTHPorchSet(int front, int back, int pulseWidth);
553 void EBI_TFTVPorchSet(int front, int back, int pulseWidth);
554 void EBI_TFTTimingSet(int dclkPeriod, int start, int setup, int hold);
555 #endif
556 
557 #if defined(_EFM32_GIANT_FAMILY) || defined(_EFM32_WONDER_FAMILY)
558 /* This functionality is only available on devices with independent timing support */
559 void EBI_BankReadTimingSet(uint32_t bank, int setupCycles, int strobeCycles, int holdCycles);
560 void EBI_BankReadTimingConfig(uint32_t bank, bool pageMode, bool prefetch, bool halfRE);
561 
562 void EBI_BankWriteTimingSet(uint32_t bank, int setupCycles, int strobeCycles, int holdCycles);
563 void EBI_BankWriteTimingConfig(uint32_t bank, bool writeBufDisable, bool halfWE);
564 
565 void EBI_BankAddressTimingSet(uint32_t bank, int setupCycles, int holdCycles);
566 void EBI_BankAddressTimingConfig(uint32_t bank, bool halfALE);
567 
568 void EBI_BankPolaritySet(uint32_t bank, EBI_Line_TypeDef line, EBI_Polarity_TypeDef polarity);
569 void EBI_BankByteLaneEnable(uint32_t bank, bool enable);
570 void EBI_AltMapEnable(bool enable);
571 
572 /***************************************************************************/
579 __STATIC_INLINE void EBI_TFTEnable(EBI_TFTDDMode_TypeDef mode)
580 {
581  EBI->TFTCTRL = (EBI->TFTCTRL & ~(_EBI_TFTCTRL_DD_MASK)) | (uint32_t) mode;
582 }
583 
584 
585 /***************************************************************************/
592 __STATIC_INLINE void EBI_TFTFrameBaseSet(uint32_t address)
593 {
594  EBI->TFTFRAMEBASE = (uint32_t) address;
595 }
596 
597 
598 /***************************************************************************/
606 __STATIC_INLINE void EBI_TFTPixelSet(int pixel, uint32_t color)
607 {
608  EFM_ASSERT(pixel == 0 || pixel == 1);
609 
610  if (pixel == 0)
611  {
612  EBI->TFTPIXEL0 = color;
613  }
614  if (pixel == 1)
615  {
616  EBI->TFTPIXEL1 = color;
617  }
618 }
619 
620 
621 /***************************************************************************/
627 __STATIC_INLINE void EBI_TFTMaskBlendMode(EBI_TFTMaskBlend_TypeDef maskBlend)
628 {
629  EBI->TFTCTRL = (EBI->TFTCTRL & (~_EBI_TFTCTRL_MASKBLEND_MASK))|maskBlend;
630 }
631 
632 
633 /***************************************************************************/
639 __STATIC_INLINE void EBI_TFTAlphaBlendSet(uint8_t alpha)
640 {
641  EBI->TFTALPHA = alpha;
642 }
643 
644 
645 /***************************************************************************/
650 __STATIC_INLINE void EBI_TFTMaskSet(uint32_t mask)
651 {
652  EBI->TFTMASK = mask;
653 }
654 
655 
656 /***************************************************************************/
661 __STATIC_INLINE uint32_t EBI_TFTVCount(void)
662 {
663  return((EBI->TFTSTATUS & _EBI_TFTSTATUS_VCNT_MASK) >> _EBI_TFTSTATUS_VCNT_SHIFT);
664 }
665 
666 
667 /***************************************************************************/
672 __STATIC_INLINE uint32_t EBI_TFTHCount(void)
673 {
674  return((EBI->TFTSTATUS & _EBI_TFTSTATUS_HCNT_MASK) >> _EBI_TFTSTATUS_HCNT_SHIFT);
675 }
676 
677 
678 /***************************************************************************/
689 {
690  EBI->TFTCTRL = ((EBI->TFTCTRL & ~_EBI_TFTCTRL_FBCTRIG_MASK)|sync);
691 }
692 
693 
694 /***************************************************************************/
701 __STATIC_INLINE void EBI_TFTHStrideSet(uint32_t nbytes)
702 {
703  EFM_ASSERT(nbytes < 0x1000);
704 
705  EBI->TFTSTRIDE = (EBI->TFTSTRIDE & ~(_EBI_TFTSTRIDE_HSTRIDE_MASK))|
707 }
708 
709 
710 /***************************************************************************/
717 __STATIC_INLINE void EBI_IntClear(uint32_t flags)
718 {
719  EBI->IFC = flags;
720 }
721 
722 
723 /***************************************************************************/
731 __STATIC_INLINE void EBI_IntSet(uint32_t flags)
732 {
733  EBI->IFS = flags;
734 }
735 
736 
737 /***************************************************************************/
745 __STATIC_INLINE void EBI_IntDisable(uint32_t flags)
746 {
747  EBI->IEN &= ~(flags);
748 }
749 
750 
751 /***************************************************************************/
759 __STATIC_INLINE void EBI_IntEnable(uint32_t flags)
760 {
761  EBI->IEN |= flags;
762 }
763 
764 
765 /***************************************************************************/
776 __STATIC_INLINE uint32_t EBI_IntGet(void)
777 {
778  return EBI->IF;
779 }
780 
781 
782 /***************************************************************************/
796 __STATIC_INLINE uint32_t EBI_IntGetEnabled(void)
797 {
798  uint32_t ien;
799 
800  ien = EBI->IEN;
801  return EBI->IF & ien;
802 }
803 
804 
805 /***************************************************************************/
809 __STATIC_INLINE void EBI_StartNandEccGen(void)
810 {
812 }
813 
814 
815 /***************************************************************************/
822 __STATIC_INLINE uint32_t EBI_StopNandEccGen( void )
823 {
824  EBI->CMD = EBI_CMD_ECCSTOP;
825  return EBI->ECCPARITY;
826 }
827 #endif
828 
829 void EBI_ChipSelectEnable(uint32_t banks, bool enable);
830 void EBI_ReadTimingSet(int setupCycles, int strobeCycles, int holdCycles);
831 void EBI_WriteTimingSet(int setupCycles, int strobeCycles, int holdCycles);
832 void EBI_AddressTimingSet(int setupCycles, int holdCycles);
834 
838 #ifdef __cplusplus
839 }
840 #endif
841 
842 #endif /* defined(EBI_COUNT) && (EBI_COUNT > 0) */
843 
844 #endif /* EM_EBI_H */
int addrSetupCycles
Definition: em_ebi.h:345
#define EBI_ROUTE_APEN_A16
Definition: efm32gg_ebi.h:487
int readStrobeCycles
Definition: em_ebi.h:355
int readSetupCycles
Definition: em_ebi.h:353
EBI_Polarity_TypeDef
Definition: em_ebi.h:105
void EBI_BankWriteTimingSet(uint32_t bank, int setupCycles, int strobeCycles, int holdCycles)
Configure timing values of write bus accesses.
Definition: em_ebi.c:894
void EBI_AltMapEnable(bool enable)
Configure Alternate Address Map support Enables or disables 256MB address range for all banks...
Definition: em_ebi.c:1181
#define EBI_ROUTE_APEN_A10
Definition: efm32gg_ebi.h:481
#define EBI_TFTCTRL_INTERLEAVE_UNLIMITED
Definition: efm32gg_ebi.h:1090
__STATIC_INLINE uint32_t EBI_StopNandEccGen(void)
Stop NAND flash ECC generator and return generated ECC.
Definition: em_ebi.h:822
EBI_Polarity_TypeDef dclkPolarity
Definition: em_ebi.h:473
Emlib peripheral API "assert" implementation.
#define EBI_CTRL_MODE_D16A16ALE
Definition: efm32gg_ebi.h:104
__STATIC_INLINE void EBI_TFTPixelSet(int pixel, uint32_t color)
Set TFT Pixel Color 0 or 1.
Definition: em_ebi.h:606
void EBI_WriteTimingSet(int setupCycles, int strobeCycles, int holdCycles)
Configure timing values of write bus accesses.
Definition: em_ebi.c:514
EBI_TFTMaskBlend_TypeDef maskBlend
Definition: em_ebi.h:467
EBI_TFTBank_TypeDef bank
Definition: em_ebi.h:455
EBI_ALow_TypeDef aLow
Definition: em_ebi.h:378
#define _EBI_TFTSTATUS_VCNT_SHIFT
Definition: efm32gg_ebi.h:1140
uint32_t EBI_BankAddress(uint32_t bank)
Return base address of EBI bank.
Definition: em_ebi.c:330
__STATIC_INLINE void EBI_IntClear(uint32_t flags)
Clear one or more pending EBI interrupts.
Definition: em_ebi.h:717
EBI_Polarity_TypeDef csPolarity
Definition: em_ebi.h:327
#define EBI_ROUTE_APEN_A26
Definition: efm32gg_ebi.h:497
bool ardyEnable
Definition: em_ebi.h:337
bool readHalfRE
Definition: em_ebi.h:364
__STATIC_INLINE void EBI_StartNandEccGen(void)
Start ECC generator on NAND flash transfers.
Definition: em_ebi.h:809
EBI_Polarity_TypeDef vsyncPolarity
Definition: em_ebi.h:479
#define EBI_ROUTE_ALB_A24
Definition: efm32gg_ebi.h:445
#define EBI_ROUTE_APEN_A12
Definition: efm32gg_ebi.h:483
#define EBI_ROUTE_APEN_A6
Definition: efm32gg_ebi.h:477
#define _EBI_TFTSTATUS_HCNT_SHIFT
Definition: efm32gg_ebi.h:1136
#define EBI_ROUTE_APEN_A22
Definition: efm32gg_ebi.h:493
EBI_Mode_TypeDef
Definition: em_ebi.h:90
int readHoldCycles
Definition: em_ebi.h:357
EBI_TFTWidth_TypeDef
Definition: em_ebi.h:299
void EBI_TFTHPorchSet(int front, int back, int pulseWidth)
Configure and initialize Horizontal Porch Settings.
Definition: em_ebi.c:653
__STATIC_INLINE void EBI_TFTFrameBaseSet(uint32_t address)
Configure frame buffer pointer.
Definition: em_ebi.h:592
CMSIS Cortex-M Peripheral Access Layer for Silicon Laboratories microcontroller devices.
EBI_Mode_TypeDef mode
Definition: em_ebi.h:317
EBI_Polarity_TypeDef csPolarity
Definition: em_ebi.h:471
#define _EBI_TFTSTRIDE_HSTRIDE_MASK
Definition: efm32gg_ebi.h:1157
#define EBI_ROUTE_APEN_A28
Definition: efm32gg_ebi.h:499
EBI_TFTFrameBufTrigger_TypeDef fbTrigger
Definition: em_ebi.h:463
void EBI_PolaritySet(EBI_Line_TypeDef line, EBI_Polarity_TypeDef polarity)
Configure EBI pin polarity.
Definition: em_ebi.c:418
int writeHoldCycles
Definition: em_ebi.h:371
__STATIC_INLINE void EBI_TFTEnable(EBI_TFTDDMode_TypeDef mode)
Enable or disable TFT Direct Drive.
Definition: em_ebi.h:579
__STATIC_INLINE uint32_t EBI_TFTVCount(void)
Get current vertical position counter.
Definition: em_ebi.h:661
EBI_TFTDDMode_TypeDef driveMode
Definition: em_ebi.h:469
#define EBI_TFTCTRL_INTERLEAVE_ONEPERDCLK
Definition: efm32gg_ebi.h:1091
#define EBI_TFTCTRL_WIDTH_BYTE
Definition: efm32gg_ebi.h:1109
#define EBI_TFTCTRL_FBCTRIG_HSYNC
Definition: efm32gg_ebi.h:1082
#define EBI_ROUTE_LOCATION_LOC0
Definition: efm32gg_ebi.h:521
EBI_TFTDDMode_TypeDef
Definition: em_ebi.h:288
EBI_Location_TypeDef location
Definition: em_ebi.h:382
#define EBI_TFTCTRL_MASKBLEND_EALPHA
Definition: efm32gg_ebi.h:1067
EBI_Polarity_TypeDef hsyncPolarity
Definition: em_ebi.h:477
#define EBI_ROUTE_APEN_A9
Definition: efm32gg_ebi.h:480
EBI_TFTMaskBlend_TypeDef
Definition: em_ebi.h:269
#define _EBI_TFTCTRL_DD_MASK
Definition: efm32gg_ebi.h:1042
__STATIC_INLINE void EBI_TFTMaskBlendMode(EBI_TFTMaskBlend_TypeDef maskBlend)
Masking and Blending Mode Set.
Definition: em_ebi.h:627
#define EBI_TFTCTRL_MASKBLEND_IALPHA
Definition: efm32gg_ebi.h:1064
uint32_t csLines
Definition: em_ebi.h:343
__STATIC_INLINE uint32_t EBI_IntGet(void)
Get pending EBI interrupt flags.
Definition: em_ebi.h:776
#define EBI_ROUTE_APEN_A18
Definition: efm32gg_ebi.h:489
EBI_Location_TypeDef
Definition: em_ebi.h:214
__STATIC_INLINE void EBI_IntEnable(uint32_t flags)
Enable one or more EBI interrupts.
Definition: em_ebi.h:759
#define _EBI_TFTSTATUS_VCNT_MASK
Definition: efm32gg_ebi.h:1141
#define EBI_TFTCTRL_BANKSEL_BANK2
Definition: efm32gg_ebi.h:1121
#define _EBI_TFTCTRL_FBCTRIG_MASK
Definition: efm32gg_ebi.h:1076
void EBI_AddressTimingSet(int setupCycles, int holdCycles)
Configure timing values of address latch bus accesses.
Definition: em_ebi.c:547
void EBI_BankEnable(uint32_t banks, bool enable)
Enable or disable EBI Bank.
Definition: em_ebi.c:299
#define _EBI_TFTSTATUS_HCNT_MASK
Definition: efm32gg_ebi.h:1137
EBI_TFTColorSrc_TypeDef colSrc
Definition: em_ebi.h:459
__STATIC_INLINE void EBI_TFTHStrideSet(uint32_t nbytes)
Set horizontal TFT stride value in number of bytes.
Definition: em_ebi.h:701
#define EBI_ROUTE_ALB_A16
Definition: efm32gg_ebi.h:444
#define EBI_CMD_ECCCLEAR
Definition: efm32gg_ebi.h:985
#define EBI_CTRL_MODE_D8A8
Definition: efm32gg_ebi.h:103
#define EBI_ROUTE_ALB_A0
Definition: efm32gg_ebi.h:442
__STATIC_INLINE uint32_t EBI_TFTHCount(void)
Get current horizontal position counter.
Definition: em_ebi.h:672
#define EBI_TFTCTRL_MASKBLEND_DISABLED
Definition: efm32gg_ebi.h:1062
#define EBI_ROUTE_ALB_A8
Definition: efm32gg_ebi.h:443
__STATIC_INLINE void EBI_TFTAlphaBlendSet(uint8_t alpha)
Set TFT Alpha Blending Factor.
Definition: em_ebi.h:639
#define EBI_ROUTE_APEN_A7
Definition: efm32gg_ebi.h:478
#define EBI_TFTCTRL_BANKSEL_BANK1
Definition: efm32gg_ebi.h:1120
EBI_TFTInterleave_TypeDef interleave
Definition: em_ebi.h:461
EBI_Line_TypeDef
Definition: em_ebi.h:114
#define EBI_ROUTE_APEN_A0
Definition: efm32gg_ebi.h:475
EBI_TFTWidth_TypeDef width
Definition: em_ebi.h:457
void EBI_BankByteLaneEnable(uint32_t bank, bool enable)
Configure Byte Lane Enable for select banks timing support.
Definition: em_ebi.c:1148
__STATIC_INLINE void EBI_IntDisable(uint32_t flags)
Disable one or more EBI interrupts.
Definition: em_ebi.h:745
void EBI_ChipSelectEnable(uint32_t banks, bool enable)
Enable or disable EBI Chip Select.
Definition: em_ebi.c:387
#define EBI_TFTCTRL_COLOR1SRC_MEM
Definition: efm32gg_ebi.h:1100
bool readPrefetch
Definition: em_ebi.h:362
#define EBI_ROUTE_APEN_A8
Definition: efm32gg_ebi.h:479
__STATIC_INLINE void EBI_TFTMaskSet(uint32_t mask)
Set TFT mask value Data accesses that matches this value are suppressed.
Definition: em_ebi.h:650
EBI_TFTColorSrc_TypeDef
Definition: em_ebi.h:240
#define EBI_TFTCTRL_MASKBLEND_IMASK
Definition: efm32gg_ebi.h:1063
void EBI_BankReadTimingSet(uint32_t bank, int setupCycles, int strobeCycles, int holdCycles)
Configure timing values of read bus accesses.
Definition: em_ebi.c:784
int writeSetupCycles
Definition: em_ebi.h:367
#define EBI_TFTCTRL_INTERLEAVE_PORCH
Definition: efm32gg_ebi.h:1092
#define EBI_ROUTE_APEN_A25
Definition: efm32gg_ebi.h:496
#define EBI_ROUTE_APEN_A23
Definition: efm32gg_ebi.h:494
int addrHoldCycles
Definition: em_ebi.h:347
EBI_ALow_TypeDef
Definition: em_ebi.h:146
void EBI_Init(const EBI_Init_TypeDef *ebiInit)
Configure and enable External Bus Interface.
Definition: em_ebi.c:64
__STATIC_INLINE uint32_t EBI_IntGetEnabled(void)
Get enabled and pending EBI interrupt flags. Useful for handling more interrupt sources in the same i...
Definition: em_ebi.h:796
#define EBI_ROUTE_APEN_A13
Definition: efm32gg_ebi.h:484
__STATIC_INLINE void EBI_IntSet(uint32_t flags)
Set one or more pending EBI interrupts.
Definition: em_ebi.h:731
void EBI_ReadTimingSet(int setupCycles, int strobeCycles, int holdCycles)
Configure timing values of read bus accesses.
Definition: em_ebi.c:478
void EBI_BankWriteTimingConfig(uint32_t bank, bool writeBufDisable, bool halfWE)
Configure write operation parameters for selected bank.
Definition: em_ebi.c:849
#define EBI_CMD_ECCSTOP
Definition: efm32gg_ebi.h:980
EBI_AHigh_TypeDef aHigh
Definition: em_ebi.h:380
#define EBI_TFTCTRL_DD_EXTERNAL
Definition: efm32gg_ebi.h:1050
bool writeHalfWE
Definition: em_ebi.h:376
#define EBI_TFTCTRL_FBCTRIG_VSYNC
Definition: efm32gg_ebi.h:1081
EBI_TFTInterleave_TypeDef
Definition: em_ebi.h:249
EBI_Polarity_TypeDef blPolarity
Definition: em_ebi.h:330
bool addrHalfALE
Definition: em_ebi.h:350
int writeStrobeCycles
Definition: em_ebi.h:369
bool ardyDisableTimeout
Definition: em_ebi.h:339
EBI_Polarity_TypeDef rePolarity
Definition: em_ebi.h:325
#define EBI_CMD_ECCSTART
Definition: efm32gg_ebi.h:975
#define EBI_TFTCTRL_MASKBLEND_EMASK
Definition: efm32gg_ebi.h:1066
bool readPageMode
Definition: em_ebi.h:360
EBI_Polarity_TypeDef alePolarity
Definition: em_ebi.h:321
#define EBI_TFTCTRL_WIDTH_HALFWORD
Definition: efm32gg_ebi.h:1110
#define EBI_TFTCTRL_BANKSEL_BANK0
Definition: efm32gg_ebi.h:1119
#define _EBI_TFTCTRL_MASKBLEND_MASK
Definition: efm32gg_ebi.h:1052
EBI_AHigh_TypeDef
Definition: em_ebi.h:159
uint32_t addressOffset
Definition: em_ebi.h:497
bool writeBufferDisable
Definition: em_ebi.h:374
EBI_TFTFrameBufTrigger_TypeDef
Definition: em_ebi.h:260
#define EBI_ROUTE_APEN_A21
Definition: efm32gg_ebi.h:492
#define EBI_ROUTE_APEN_A5
Definition: efm32gg_ebi.h:476
#define EBI
void EBI_BankPolaritySet(uint32_t bank, EBI_Line_TypeDef line, EBI_Polarity_TypeDef polarity)
Configure EBI pin polarity for selected bank(s) for devices with individual timing support...
Definition: em_ebi.c:1054
#define EBI_TFTCTRL_MASKBLEND_IMASKIALPHA
Definition: efm32gg_ebi.h:1065
#define EBI_ROUTE_APEN_A19
Definition: efm32gg_ebi.h:490
#define EBI_CTRL_MODE_D8A24ALE
Definition: efm32gg_ebi.h:105
#define EBI_TFTCTRL_MASKBLEND_EMASKEALPHA
Definition: efm32gg_ebi.h:1068
#define EBI_ROUTE_APEN_A17
Definition: efm32gg_ebi.h:488
#define EBI_TFTCTRL_DD_INTERNAL
Definition: efm32gg_ebi.h:1049
#define EBI_ROUTE_APEN_A11
Definition: efm32gg_ebi.h:482
void EBI_Disable(void)
Disable External Bus Interface.
Definition: em_ebi.c:280
void EBI_BankAddressTimingSet(uint32_t bank, int setupCycles, int holdCycles)
Configure timing values of address latch bus accesses.
Definition: em_ebi.c:994
#define EBI_TFTCTRL_COLOR1SRC_PIXEL1
Definition: efm32gg_ebi.h:1101
#define _EBI_TFTSTRIDE_HSTRIDE_SHIFT
Definition: efm32gg_ebi.h:1156
#define EBI_ROUTE_LOCATION_LOC1
Definition: efm32gg_ebi.h:523
#define EBI_ROUTE_APEN_A15
Definition: efm32gg_ebi.h:486
#define EBI_CTRL_MODE_D16
Definition: efm32gg_ebi.h:106
#define EBI_TFTCTRL_DD_DISABLED
Definition: efm32gg_ebi.h:1048
#define EBI_TFTCTRL_BANKSEL_BANK3
Definition: efm32gg_ebi.h:1122
EBI_Polarity_TypeDef dataenPolarity
Definition: em_ebi.h:475
__STATIC_INLINE void EBI_TFTFBTriggerSet(EBI_TFTFrameBufTrigger_TypeDef sync)
Set Frame Buffer Trigger.
Definition: em_ebi.h:688
#define EBI_ROUTE_APEN_A27
Definition: efm32gg_ebi.h:498
void EBI_BankReadTimingConfig(uint32_t bank, bool pageMode, bool prefetch, bool halfRE)
Configure read operation parameters for selected bank.
Definition: em_ebi.c:735
EBI_TFTBank_TypeDef
Definition: em_ebi.h:227
void EBI_TFTSizeSet(uint32_t horizontal, uint32_t vertical)
Configure and initialize TFT size settings.
Definition: em_ebi.c:633
void EBI_TFTTimingSet(int dclkPeriod, int start, int setup, int hold)
Configure TFT Direct Drive Timing Settings.
Definition: em_ebi.c:704
void EBI_TFTVPorchSet(int front, int back, int pulseWidth)
Configure Vertical Porch Settings.
Definition: em_ebi.c:676
#define EBI_ROUTE_LOCATION_LOC2
Definition: efm32gg_ebi.h:524
#define EBI_ROUTE_APEN_A24
Definition: efm32gg_ebi.h:495
EBI_Polarity_TypeDef wePolarity
Definition: em_ebi.h:323
void EBI_TFTInit(const EBI_TFTInit_TypeDef *ebiTFTInit)
Configure and initialize TFT Direct Drive.
Definition: em_ebi.c:573
EBI_Polarity_TypeDef ardyPolarity
Definition: em_ebi.h:319
#define EBI_ROUTE_APEN_A20
Definition: efm32gg_ebi.h:491
void EBI_BankAddressTimingConfig(uint32_t bank, bool halfALE)
Configure address operation parameters for selected bank.
Definition: em_ebi.c:956
#define EBI_ROUTE_APEN_A14
Definition: efm32gg_ebi.h:485
uint32_t banks
Definition: em_ebi.h:341