1.25.7 LCD Controller (LCDC)
The LCD Controller (LCDC) consists of logic for transferring LCD image data from an external display buffer to an LCD module. The LCD has one display input buffer per overlay that fetches pixels through the dual AHB master interface and a lookup table to allow palletized display configurations.
The LCD controller is programmable on a per overlay basis, and supports different LCD resolutions, window sizes, image formats and pixel depths. The LCD is connected to the ARM Advanced High Performance Bus (AHB) as a master for reading pixel data. It also integrates an APB interface to configure its registers.
Using The Library
Refer LCDC API headers for the usage of the LCDC peripheral library.
Library Interface
LCD Controller peripheral library provides the following interfaces:
Functions
Name | Description |
---|---|
LCDCx_AddToQueueEnable | Indicates that a valid descriptor has been written to memory |
LCDCx_ClockReset | Resets the pixel clock module |
LCDCx_DISPSignalReset | Resets the DISP signal |
LCDCx_GetDisplaySignalStatusActivated | Gets the status of the DISP signal |
LCDCx_GetPixelClockStatusRunning | Gets the status of the pixel clock |
LCDCx_GetPWMSignalStatusActivated | Gets the status of the PWM signal |
LCDCx_GetSynchronizationStatusInProgress | Gets the status of clock domain synchronization |
LCDCx_GetTimingEngineStatusRunning | Gets the status of the timing engine |
LCDCx_IRQ_CallbackRegister | Registers a callback function for the LCDC IRQ handler |
LCDCx_IRQ_Disable | Disables the specified interrupt |
LCDCx_IRQ_Enable | Enables the specified interrupt |
LCDCx_IRQ_Status | Reads the value of the interrupt status register |
LCDCx_LAYER_IRQ_Disable | Disable the interrupt from the specified layer |
LCDCx_LAYER_IRQ_Enable | Enables the interrupt from the specified layer |
LCDCx_LAYER_IRQ_Status | Reads the status of the interrupt from the specified layer |
LCDCx_PWMReset | Resets the PWM module |
LCDCx_SetBlenderDMALayerEnable | Enables/disables the blender DMA channel |
LCDCx_SetBlenderGlobalAlpha | Sets the global alpha blending coefficient |
LCDCx_SetBlenderGlobalAlphaEnable | Enables/disables global alpha blending |
LCDCx_SetBlenderIteratedColorEnable | Enables use of iterated pixel value for final adder stage operand |
LCDCx_SetBlenderLocalAlphaEnable | Enables/disables local alpha blending |
LCDCx_SetBlenderOverlayLayerEnable | Enables/disables the overlay blender |
LCDCx_SetBlenderUseIteratedColor | Enables use of iterated pixel value for pixel difference |
LCDCx_SetChannelEnable | Enables/disables the DMA channel |
LCDCx_SetClockDivider | Sets the clock divider for the pixel clock |
LCDCx_SetClockSourceSelection | Sets the LCDC clock source |
LCDCx_SetDisplayGuardTime | Number of frames inserted before and after DISP assertion |
LCDCx_SetDisplaySignalPolarity | Sets the polarity of the DISP signal |
LCDCx_SetDisplaySignalSynchronization | Sets the sync of the DISP signal with the HYSNC pulse |
LCDCx_SetDISPSignalEnable | Enables/disables the DISP signal |
LCDCx_SetDitheringEnable | Enables/disables the LCDC dithering logical unit |
LCDCx_SetDMAAddressRegister | Sets the Frame Buffer base address |
LCDCx_SetDMADescriptorNextAddress | Sets next DMA descriptor address |
LCDCx_SetDMAHeadPointer | Sets the specified layer's Head Pointer to the DMA descriptor address |
LCDCx_SetHorizontalBackPorchWidth | Sets HSYNC front porch width, give in number of pixel clocks |
LCDCx_SetHorizontalFrontPorchWidth | Sets HSYNC front porch width, give in number of pixel clocks |
LCDCx_SetHSYNCPolarity | Sets the polarity of the HSYNC pulse |
LCDCx_SetHSYNCPulseWidth | Sets HSYNC pulse length, given in pixel clock cycles |
LCDCx_SetLayerClockGatingDisable | Disables/Enables the clock gating on the LCDC layers |
LCDCx_SetLCDDisableInterruptEnable | Enables/disables the LCD disable interrupt |
LCDCx_SetNumActiveRows | Sets the number of active lines (height) in the frame |
LCDCx_SetNumPixelsPerLine | Sets the number of pixels in a line (width) in the frame |
LCDCx_SetOutputMode | Sets the output mode of the LCDC |
LCDCx_SetPixelClockEnable | Enables/disables the pixel clock |
LCDCx_SetPixelClockPolarity | Sets the pixel clock signal polarity |
LCDCx_SetPostPocessingEnable | Enables/disables post processing |
LCDCx_SetPWMClockSourceSelection | Sets the LCDC PWM clock source |
LCDCx_SetPWMCompareValue | Sets the PWM compare value |
LCDCx_SetPWMEnable | Enables/disables the PWM signal |
LCDCx_SetPWMPrescaler | Sets the configuration of the counter prescaler module |
LCDCx_SetPWMSignalPolarity | Sets the polarity of the PWM signal |
LCDCx_SetRGBModeInput | Sets the input color mode for the specified layer |
LCDCx_SetSOFInterruptEnable | Enables/disables the start of frame interrupt |
LCDCx_SetSYNCEnable | Enables/disables the VSYNC and HSYNC signals |
LCDCx_SetTransferDescriptorFetchEnable | Enables/disables Transfer Descriptor Fetch |
LCDCx_SetUseDMAPathEnable | Enables/disables the DMA path for the specified layer |
LCDCx_SetVerticalBackPorchWidth | Sets VSYNC back porch width, give in number of lines |
LCDCx_SetVerticalFrontPorchWidth | Sets VSYNC front porch width, give in number of lines |
LCDCx_SetVSYNCPolarity | Sets the polarity of the VSYNC pulse |
LCDCx_SetVSYNCPulseEnd | Sets the HSYNC pulse edge where the VSYNC pulse second active edge is synchronized |
LCDCx_SetVSYNCPulseHoldConfig | Sets the VSYNC pulse sync with HSYNC pulse edge |
LCDCx_SetVSYNCPulseSetupConfig | Sets the VSYNC pulse sync with HSYNC pulse edge |
LCDCx_SetVSYNCPulseStart | Sets the HSYNC pulse edge where the VSYNC pulse first active edge is synchronized |
LCDCx_SetVSYNCPulseWidth | Sets VSYNC pulse length, given in pixel clock cycles |
LCDCx_SetWindowPosition | Sets the X, Y position of the specified layer |
LCDCx_SetWindowSize | Sets the size of the specified layer |
LCDCx_SYNCReset | Resets the timing engine |
LCDCx_UpdateAttribute | Updates the specified layer's window attributes |
LCDCx_UpdateOverlayAttributesEnable | Updates the layer attributes |
LCDCx_WaitForClockRunning | Waits for pixel clock to start running. Blocks until PCLK is running |
LCDCx_WaitForDISPSignal | Waits for DISP signal to be activated. Blocks until Timing engine is activated |
LCDCx_WaitForSynchronization | Waits for timing engine to start running. Blocks until Timing engine is running |
LCDCx_WaitForSyncInProgress | Waits for synchronization to complete. Unblocks when complete |
Data types and constants
Name | Type | Description |
---|---|---|
LCDCx_CLOCK_SOURCE | Enum | Defines the clock sources for the LCDC peripheral |
LCDCx_INPUT_COLOR_MODE | Enum | Defines the RGB color mode input types |
LCDCx_INTERRUPT | Enum | Defines the interrupts generated by the controller |
LCDCx_IRQ_CALLBACK | Typedef | Defines the data type and function signature for the LCDC callback function |
LCDCx_IRQ_CALLBACK_OBJECT | Struct | Struct for LCDC IRQ handler |
LCDCx_LAYER_ID | Enum | Defines the types for the LCDC hardware layers and overlays |
LCDCx_LAYER_INTERRUPT | Enum | Defines the interrupts generated by the layers |
LCDCx_OUTPUT_COLOR_MODE | Enum | Defines the controller output mode types |
LCDCx_PWM_CLOCK_SOURCE | Enum | Defines the clock sources for the LCDC PWM |
LCDCx_SIGNAL_POLARITY | Enum | Defines the polarity of the LCDC control signals |
LCDCx_VSYNC_SYNC_EDGE | Enum | Defines the HSYNC edge where VSYNC is synchronized |