{"id":14893,"date":"2023-06-24T14:14:08","date_gmt":"2023-06-24T08:44:08","guid":{"rendered":"https:\/\/fastbitlab.com\/?p=14893"},"modified":"2023-08-17T16:19:45","modified_gmt":"2023-08-17T10:49:45","slug":"ltdc-layers-initialization","status":"publish","type":"post","link":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/","title":{"rendered":"STM32-LTDC, LCD-TFT, LVGL(MCU3) Lecture 38| LTDC layers initialization"},"content":{"rendered":"<div class=\"boldgrid-section color4-background-color color-4-text-contrast bg-background-color\">\n<div class=\"container\">\n<div class=\"row\">\n<div class=\"col-lg-1 col-md-12 col-sm-12 col-xs-12\"><\/div>\n<div class=\"col-lg-10 col-md-12 col-xs-12 col-sm-12\">\n<p>&nbsp;<\/p>\n<h1 class=\"\" style=\"text-align: center; font-size: 35px; line-height: 50px; font-family: 'Roboto Slab'; font-weight: 400;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000080;\"><strong>LTDC layers initialization<\/strong><\/span><\/h1>\n<div class=\"row bg-editor-hr-wrap\">\n<div class=\"col-lg-12 col-md-12 col-xs-12 col-sm-12\">\n<div>\n<div class=\"bg-hr bg-hr-16 color2-color\" style=\"border-style: solid; border-width: 0px 0px 2px; box-shadow: #cecece 0px 0px 0px 0px;\"><\/div>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The LTDC (Layered Transmission Display Controller) is a hardware component commonly found in embedded systems and graphics display controllers. It allows for the simultaneous display of multiple layers of graphics, text, and other visual elements on a single display.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">In an LTDC system, each layer is represented by a separate framebuffer, which contains the pixel data for that layer. The LTDC controller then combines the pixel data from each layer according to a set of blending rules to create the final output image that is displayed on the screen.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">LTDC layers Initialization steps:&nbsp;<\/span><\/p>\n<ul class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\">\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; color: #000000;\">LTDC supports 2 layers<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; color: #000000;\">You can active either of the layers or all layers as per your application need<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; color: #000000;\">Programmable default color settings for each layer<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; color: #000000;\">Programmable frame buffer address settings for each layer<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; color: #000000;\">Flexible blending options(Constant and pixel alpha blending)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; color: #000000;\">Programmable window positioning for each layer<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400; color: #000000;\">Most LTDC layer registers are shadow registers, and you need to activate loading shadow values to real registers explicitly. <\/span><\/li>\n<\/ul>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Essentially, layers in LTDC refer to frame buffers, representing different visual elements or graphics that can be displayed simultaneously.<\/span><\/p>\n<figure id=\"attachment_14896\" aria-describedby=\"caption-attachment-14896\" style=\"width: 678px\" class=\"wp-caption aligncenter\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-14896 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-1-4.png\" alt=\"Figure 1. LTDC layers\" width=\"678\" height=\"401\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4.png 1645w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4-300x177.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4-1024x606.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4-768x454.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4-600x355.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4-1536x909.png 1536w\" sizes=\"(max-width: 678px) 100vw, 678px\" \/><figcaption id=\"caption-attachment-14896\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 1. LTDC layers<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">For example, there are two layers that display two different colors. Layer 1 has its own frame buffer in the memory, and Layer 2 also has its own frame buffer in the memory. This means that you can simultaneously use two frame buffers and display different pixel values, images, colors, and so on.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Moreover, with the concept of layers, you can control the width and height of each layer. Additionally, you can position a layer wherever you desire by utilizing the horizontal offset, vertical offset, and other related parameters. Each layer is equipped with its own set of configuration registers, allowing you to adjust these settings accordingly.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">To use a layer successfully, there are some points you need to remember. The first thing is you have to properly configure the blending options.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>Layer and Blending<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">I have obtained the diagram below from the reference manual of the STM32F4 microcontroller. When both layers are activated, the following is the order in which the layers will be displayed on the screen, as depicted in Figure 2.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Firstly, there will be a background color, and layer 1 will be positioned above it, followed by layer 2. It is not possible to modify this order. Each layer will have its own blending option.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Blending is the process of combining the various layers of the LTDC compression technique to create a final, compressed version of the video frame. The blending process involves using mathematical algorithms to combine the information from the different layers in a way that optimizes the quality and compression of the final image.<\/span><\/p>\n<figure id=\"attachment_14897\" aria-describedby=\"caption-attachment-14897\" style=\"width: 708px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-14897 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-2-3.png\" alt=\"Figure 2. Layers and blending \" width=\"708\" height=\"342\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-2-3.png 1717w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-2-3-300x145.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-2-3-1024x494.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-2-3-768x371.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-2-3-600x290.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-2-3-1536x742.png 1536w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><figcaption id=\"caption-attachment-14897\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 2. Layers and blending<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #993366;\"><b>Example:<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Let&#8217;s consider a project, where you have activated only Layer-1. For Layer-1, you have its own frame buffer and let&#8217;s say the frame buffer contains pixels to represent rgb(0, 0, 128). It&#8217;s kind of dark blue color.<\/span><\/p>\n<figure id=\"attachment_14898\" aria-describedby=\"caption-attachment-14898\" style=\"width: 609px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-14898 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-3-3.png\" alt=\"Figure 3. Blending colors\" width=\"609\" height=\"298\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-3-3.png 1839w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-3-3-300x147.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-3-3-1024x501.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-3-3-768x375.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-3-3-600x293.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-3-3-1536x751.png 1536w\" sizes=\"(max-width: 609px) 100vw, 609px\" \/><figcaption id=\"caption-attachment-14898\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 3. Blending colors<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">rgb(0, 0, 128) is Layer-1&#8217;s color. And rgb(0, 0, 48) is the background color.&nbsp;<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The Layer-1 will blend with the background color to produce blended colors. For instance, rgb(0, 0, 123) is an example of a blended color. You can control this blended color by adjusting the constant alpha configuration item of Layer-1.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC layerx control register<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">If you refer to the reference manual and navigate to the LTDC registers, explore the layer registers. Whenever you encounter Lx, it corresponds to the layer register. &#8216;x&#8217; may be 1 or 2, because there are two layers.<\/span><\/p>\n<figure id=\"attachment_14899\" aria-describedby=\"caption-attachment-14899\" style=\"width: 646px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14899 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-4-2.png\" alt=\"Figure 4. LTDC layerx control register\" width=\"646\" height=\"318\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-4-2.png 1743w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-4-2-300x148.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-4-2-1024x505.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-4-2-768x378.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-4-2-600x296.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-4-2-1536x757.png 1536w\" sizes=\"(max-width: 646px) 100vw, 646px\" \/><figcaption id=\"caption-attachment-14899\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 4. LTDC layerx control register<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC Layerx Constant Alpha Configuration Register<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The LTDC Layer x Constant Alpha Configuration Register allows you to control the opacity of a layer. The maximum value for this field is 255.<\/span><\/p>\n<figure id=\"attachment_14900\" aria-describedby=\"caption-attachment-14900\" style=\"width: 682px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14900\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-5-2.png\" alt=\"LTDC layers initialization\" width=\"682\" height=\"327\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-5-2.png 1733w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-5-2-300x144.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-5-2-1024x491.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-5-2-768x368.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-5-2-600x288.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-5-2-1536x737.png 1536w\" sizes=\"(max-width: 682px) 100vw, 682px\" \/><figcaption id=\"caption-attachment-14900\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 5. LTDC Layerx Constant Alpha Configuration Register<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">When you set the constant alpha of Layer-1 to 255, it means that Layer-1 is fully opaque to the background.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Now, let&#8217;s consider a scenario(Figure 3) where the constant alpha of Layer-1 is set to 240. In this case, the LTDC will calculate the constant alpha value by dividing the constant alpha value of 240 by 255, resulting in 0.94. The blending process occurs using the following equation: BC = BF1 x C + BF2 x Cs.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">BF1 represents the calculated value of 0.94, multiplied by C, C denotes the color of the top layer (Layer-1), that is 128.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">That means 94% of the top layer will be used +&nbsp; 6% of the subjacent layer. Cs or the color beneath this layer, that is the background color. 6% of the background color is used to get the blended color 123. So, the LTDC will start transmitting this color. That&#8217;s why you can control this proportion using this constant alpha value.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">It&#8217;s important to note that blending always occurs in the following order: background color (BG) \u2192 Layer1 \u2192 Layer2. When all the layers are enabled, the final color will be a combination of Layer 2, Layer 1, and the background color.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>Layer windowing <\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Layer windowing refers to the ability to define and manipulate multiple layers or regions on a display screen. The LTDC is a peripheral commonly used in microcontrollers or systems-on-chip (SoCs) to control and drive LCD or TFT display panels.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Layer windowing allows you to divide the display screen into multiple independent regions or layers, each with its own content and properties. This capability is particularly useful when you want to display different graphics, images, or videos in different parts of the screen simultaneously or overlay them on top of each other. For example, you may want to show a background image or video while displaying some dynamic data or graphical elements on top of it.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The LTDC typically supports multiple hardware layers, each associated with a specific framebuffer in memory. Each layer has its own configuration, such as position, size, transparency, and blending options. By configuring these parameters, you can control how each layer is displayed on the screen and how it interacts with other layers.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">You need to set the appropriate horizontal offset, vertical offset, layer width, and layer height. Make sure to properly configure these values in the LTDC_LxWVPCR, LTDC_LxWHPCR, and LTDC_LxWVPCR registers.<\/span><\/p>\n<figure id=\"attachment_14901\" aria-describedby=\"caption-attachment-14901\" style=\"width: 789px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14901 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-6-2.png\" alt=\"Figure 6. Layer windowing\" width=\"789\" height=\"381\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-6-2.png 1759w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-6-2-300x145.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-6-2-1024x494.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-6-2-768x371.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-6-2-600x290.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-6-2-1536x741.png 1536w\" sizes=\"(max-width: 789px) 100vw, 789px\" \/><figcaption id=\"caption-attachment-14901\" class=\"wp-caption-text\">Figure 6. Layer windowing<\/figcaption><\/figure>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">Everything is mentioned in the <\/span><a style=\"color: #000000;\" href=\"https:\/\/www.st.com\/resource\/en\/reference_manual\/rm0090-stm32f405415-stm32f407417-stm32f427437-and-stm32f429439-advanced-armbased-32bit-mcus-stmicroelectronics.pdf\"><span style=\"font-weight: 400;\">reference manual<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">Let&#8217;s begin with the first register: the LTDC Layer Control Register<\/span><span style=\"font-weight: 400;\">.<\/span><\/span><\/p>\n<figure id=\"attachment_14902\" aria-describedby=\"caption-attachment-14902\" style=\"width: 731px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14902\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-7-1-1024x518.png\" alt=\"Control Register(LTDC_LxCR)\" width=\"731\" height=\"370\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-7-1-1024x518.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-7-1-300x152.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-7-1-768x389.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-7-1-600x304.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-7-1-1536x777.png 1536w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-7-1.png 1741w\" sizes=\"(max-width: 731px) 100vw, 731px\" \/><figcaption id=\"caption-attachment-14902\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 7. LTDC Layerx Control Register(LTDC_LxCR)<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Currently, you can only use this register to enable the &#8220;LEN&#8221; (layer enable) feature. So, the layer should be enabled by using this bit, otherwise, it will not work. <\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC Layerx Window Horizontal Position Configuration Register<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The horizontal positioning you can configure by using this register is shown in Figure 8.&nbsp;<\/span><\/p>\n<figure id=\"attachment_14903\" aria-describedby=\"caption-attachment-14903\" style=\"width: 710px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14903\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-8.png\" alt=\"window Horizontal position Configuration Register\" width=\"710\" height=\"362\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-8.png 1741w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-8-300x153.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-8-1024x522.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-8-768x391.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-8-600x306.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-8-1536x783.png 1536w\" sizes=\"(max-width: 710px) 100vw, 710px\" \/><figcaption id=\"caption-attachment-14903\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 8. LTDC Layerx window Horizontal position Configuration Register<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC Layerx Window Vertical Position Configuration Register<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">For vertical positioning, you can use this register is shown in Figure 9.<\/span><\/p>\n<figure id=\"attachment_14904\" aria-describedby=\"caption-attachment-14904\" style=\"width: 722px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14904\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-9.png\" alt=\"Window Vertical Position Configuration Register\" width=\"722\" height=\"370\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-9.png 1743w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-9-300x154.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-9-1024x525.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-9-768x393.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-9-600x307.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-9-1536x787.png 1536w\" sizes=\"(max-width: 722px) 100vw, 722px\" \/><figcaption id=\"caption-attachment-14904\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 9. LTDC Layerx Window Vertical Position Configuration Register<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC Layerx Pixel Format Configuration Register<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><span style=\"font-weight: 400;\">The pixel format for the layer, which you can configure using this register is shown in Figure 10.<\/span><span style=\"font-weight: 400;\">&nbsp; <\/span><\/span><\/p>\n<figure id=\"attachment_14905\" aria-describedby=\"caption-attachment-14905\" style=\"width: 739px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14905\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-10.png\" alt=\"Pixel Format Configuration register\" width=\"739\" height=\"349\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-10.png 1735w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-10-300x142.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-10-1024x483.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-10-768x363.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-10-600x283.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-10-1536x725.png 1536w\" sizes=\"(max-width: 739px) 100vw, 739px\" \/><figcaption id=\"caption-attachment-14905\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 10.LTDC Layers Pixel Format Configuration register<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-size: 20px; font-family: 'Roboto Slab'; font-weight: 400; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC Layerx Constant Alpha Configuration Register<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">This is the place where you can set the constant alpha value. Each layer has its own default color, which is black because its value is zero. However, you have the flexibility to configure a different color if desired.<\/span><\/p>\n<figure id=\"attachment_14906\" aria-describedby=\"caption-attachment-14906\" style=\"width: 636px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14906\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-11.png\" alt=\"Figure 11. LTDC Layer constant alpha configuration register\" width=\"636\" height=\"520\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-11.png 1113w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-11-300x246.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-11-1024x838.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-11-768x629.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-11-600x491.png 600w\" sizes=\"(max-width: 636px) 100vw, 636px\" \/><figcaption id=\"caption-attachment-14906\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 11. LTDC Layer constant alpha configuration register<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Here it shows, the default color is used outside the defined layer window or when a layer is disabled. <\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC Layerx Blending Factors Configuration Register<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The LTDC Layerx Blending Factors Configuration Register defines the blending factor and is also one of the crucial registers that require configuration.<\/span><\/p>\n<figure id=\"attachment_14907\" aria-describedby=\"caption-attachment-14907\" style=\"width: 631px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14907\" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-12.png\" alt=\"Figure 12. LTDC Layerx blending factors configuration Register\" width=\"631\" height=\"321\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-12.png 1739w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-12-300x153.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-12-1024x521.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-12-768x391.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-12-600x305.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-12-1536x782.png 1536w\" sizes=\"(max-width: 631px) 100vw, 631px\" \/><figcaption id=\"caption-attachment-14907\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 12. LTDC Layerx blending factors configuration Register<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC Layerx Color Frame Buffer Length Register<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">You can configure the framebuffer address register here.<\/span><\/p>\n<figure id=\"attachment_14908\" aria-describedby=\"caption-attachment-14908\" style=\"width: 675px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14908 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-13.png\" alt=\"Figure 13. LTDC Layerx Color Frame Buffer Length register\" width=\"675\" height=\"622\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-13.png 1068w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-13-300x276.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-13-1024x943.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-13-768x707.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-13-600x552.png 600w\" sizes=\"(max-width: 675px) 100vw, 675px\" \/><figcaption id=\"caption-attachment-14908\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 13. LTDC Layerx Color Frame Buffer Length register<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">This register defines the color frame buffer line length and pitch.&nbsp;<\/span><\/p>\n<p class=\"\" style=\"font-size: 17px; line-height: 30px; font-family: 'Roboto Slab'; font-weight: 400;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Pitch is specified in bytes and is the increment from the start of one line of pixels to the start of the next line. These bits define the pitch value.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">To calculate the line length, add the length of one line of pixels in bytes and add 3. Therefore, you need to add 3 to this value.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC Layerx ColorFrame Buffer Line Number Register<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The number of lines of the frame buffer should be configured in Layer ColourFrame Buffer Line Number Register.<\/span><\/p>\n<figure id=\"attachment_14909\" aria-describedby=\"caption-attachment-14909\" style=\"width: 627px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14909 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-14.png\" alt=\"Figure 14. LTDC Layerx ColorFrame Buffer Line Number Register\" width=\"627\" height=\"318\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-14.png 1751w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-14-300x152.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-14-1024x520.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-14-768x390.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-14-600x305.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-14-1536x780.png 1536w\" sizes=\"(max-width: 627px) 100vw, 627px\" \/><figcaption id=\"caption-attachment-14909\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 14. LTDC Layerx ColorFrame Buffer Line Number Register<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The LTDC Layerx ColorFrame Buffer Line Number Register is responsible for configuring the number of lines in the frame buffer for each layer. It is important to ensure that the configured number matches the actual memory area of the frame buffer. Otherwise, there is a risk of encountering FIFO underrun.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The number of lines and line length settings determine the amount of data fetched per frame for each layer. If the configuration specifies fewer bytes than required, a FIFO underrun interrupt will occur. This means that the LTDC will attempt to fetch more bytes from the frame buffer than it can hold, resulting in a FIFO underrun error.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Therefore, it is crucial to consider these points when configuring the layers of the LTDC.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"text-decoration: underline; color: #000080;\"><b>LTDC Shadow Reload Configuration Register<\/b><\/span><\/p>\n<figure id=\"attachment_14910\" aria-describedby=\"caption-attachment-14910\" style=\"width: 837px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-14910 \" src=\"https:\/\/fastbitlab.com\/wp-content\/uploads\/2023\/06\/Figure-15.png\" alt=\"Figure 15. LTDC Shadow Reload Configuration Register\" width=\"837\" height=\"431\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-15.png 1729w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-15-300x155.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-15-1024x528.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-15-768x396.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-15-600x309.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-15-1536x792.png 1536w\" sizes=\"(max-width: 837px) 100vw, 837px\" \/><figcaption id=\"caption-attachment-14910\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 15. LTDC Shadow Reload Configuration Register<\/span><\/figcaption><\/figure>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Please note that most of the registers in this layer are Shadow registers. If you set the IMR bit to 1, an immediate reload will occur. This means you need to configure all the LTDC layer registers and, as a final step, set the IMR bit to 1. By doing so, all the values stored in the shadow registers will be loaded into the actual registers. Alternatively, you can automate this process using the VBR field.<\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">If the VBR bit is set to 1, the shadow registers will be reloaded during the vertical blanking period, specifically at the beginning of the first line after the Active Display Area.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-size: 20px; font-family: 'Roboto Slab'; font-weight: 400; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000080;\"><b>FastBit Embedded Brain Academy Courses<\/b><\/span><\/p>\n<p class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\">Click here:<span style=\"color: #0000ff;\">&nbsp;<a style=\"color: #0000ff;\" href=\"https:\/\/fastbitlab.com\/course1\" target=\"_blank\" rel=\"noopener\">https:\/\/fastbitlab.com\/course1<\/a><\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<\/div>\n<div class=\"col-lg-1 col-md-12 col-sm-12 col-xs-12\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; LTDC layers initialization &nbsp; The LTDC (Layered Transmission Display Controller) is a hardware component commonly found in embedded systems and graphics display controllers. It allows for the simultaneous display of multiple layers of graphics, text, and other visual elements on a single display. In an LTDC system, each layer is represented by a separate [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":14896,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[],"footnotes":""},"categories":[8],"tags":[],"class_list":["post-14893","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mastering LTDC Layer Initialization: Configuration, Blending, and Windowing<\/title>\n<meta name=\"description\" content=\"Explore the intricacies of LTDC layers initialization in embedded systems and graphics display controllers. Learn how to configure multiple\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mastering LTDC Layer Initialization: Configuration, Blending, and Windowing\" \/>\n<meta property=\"og:description\" content=\"Explore the intricacies of LTDC layers initialization in embedded systems and graphics display controllers. Learn how to configure multiple\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/\" \/>\n<meta property=\"og:site_name\" content=\"FastBit EBA\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/fastbiteba\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-24T08:44:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-17T10:49:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1645\" \/>\n\t<meta property=\"og:image:height\" content=\"973\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"FastBitLab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:site\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"FastBitLab\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/\"},\"author\":{\"name\":\"FastBitLab\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\"},\"headline\":\"STM32-LTDC, LCD-TFT, LVGL(MCU3) Lecture 38| LTDC layers initialization\",\"datePublished\":\"2023-06-24T08:44:08+00:00\",\"dateModified\":\"2023-08-17T10:49:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/\"},\"wordCount\":1769,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Figure-1-4.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/\",\"name\":\"Mastering LTDC Layer Initialization: Configuration, Blending, and Windowing\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Figure-1-4.png\",\"datePublished\":\"2023-06-24T08:44:08+00:00\",\"dateModified\":\"2023-08-17T10:49:45+00:00\",\"description\":\"Explore the intricacies of LTDC layers initialization in embedded systems and graphics display controllers. Learn how to configure multiple\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/#primaryimage\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Figure-1-4.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Figure-1-4.png\",\"width\":1645,\"height\":973,\"caption\":\"Figure 1. LTDC layers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-layers-initialization\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"STM32-LTDC, LCD-TFT, LVGL(MCU3) Lecture 38| LTDC layers initialization\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"name\":\"FastBit EBA\",\"description\":\"Your Online Academy of Embedded Systems\",\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\",\"name\":\"FastBit EBA\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"width\":640,\"height\":640,\"caption\":\"FastBit EBA\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/fastbiteba\\\/\",\"https:\\\/\\\/x.com\\\/fastbiteba\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fastbit-embedded-brain-academy-b3167b124\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCa1REBV9hyrzGp2mjJCagBg\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\",\"name\":\"FastBitLab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"caption\":\"FastBitLab\"},\"description\":\"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mastering LTDC Layer Initialization: Configuration, Blending, and Windowing","description":"Explore the intricacies of LTDC layers initialization in embedded systems and graphics display controllers. Learn how to configure multiple","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/","og_locale":"en_US","og_type":"article","og_title":"Mastering LTDC Layer Initialization: Configuration, Blending, and Windowing","og_description":"Explore the intricacies of LTDC layers initialization in embedded systems and graphics display controllers. Learn how to configure multiple","og_url":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/","og_site_name":"FastBit EBA","article_publisher":"https:\/\/www.facebook.com\/fastbiteba\/","article_published_time":"2023-06-24T08:44:08+00:00","article_modified_time":"2023-08-17T10:49:45+00:00","og_image":[{"width":1645,"height":973,"url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4.png","type":"image\/png"}],"author":"FastBitLab","twitter_card":"summary_large_image","twitter_creator":"@fastbiteba","twitter_site":"@fastbiteba","twitter_misc":{"Written by":"FastBitLab","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/#article","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/"},"author":{"name":"FastBitLab","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d"},"headline":"STM32-LTDC, LCD-TFT, LVGL(MCU3) Lecture 38| LTDC layers initialization","datePublished":"2023-06-24T08:44:08+00:00","dateModified":"2023-08-17T10:49:45+00:00","mainEntityOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/"},"wordCount":1769,"commentCount":0,"publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4.png","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/","url":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/","name":"Mastering LTDC Layer Initialization: Configuration, Blending, and Windowing","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/#primaryimage"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4.png","datePublished":"2023-06-24T08:44:08+00:00","dateModified":"2023-08-17T10:49:45+00:00","description":"Explore the intricacies of LTDC layers initialization in embedded systems and graphics display controllers. Learn how to configure multiple","breadcrumb":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/#primaryimage","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-4.png","width":1645,"height":973,"caption":"Figure 1. LTDC layers"},{"@type":"BreadcrumbList","@id":"https:\/\/fastbitlab.com\/blog\/ltdc-layers-initialization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fastbitlab.com\/blog\/"},{"@type":"ListItem","position":2,"name":"STM32-LTDC, LCD-TFT, LVGL(MCU3) Lecture 38| LTDC layers initialization"}]},{"@type":"WebSite","@id":"https:\/\/fastbitlab.com\/blog\/#website","url":"https:\/\/fastbitlab.com\/blog\/","name":"FastBit EBA","description":"Your Online Academy of Embedded Systems","publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fastbitlab.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fastbitlab.com\/blog\/#organization","name":"FastBit EBA","url":"https:\/\/fastbitlab.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","width":640,"height":640,"caption":"FastBit EBA"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/fastbiteba\/","https:\/\/x.com\/fastbiteba","https:\/\/www.linkedin.com\/in\/fastbit-embedded-brain-academy-b3167b124\/","https:\/\/www.youtube.com\/channel\/UCa1REBV9hyrzGp2mjJCagBg"]},{"@type":"Person","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d","name":"FastBitLab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","caption":"FastBitLab"},"description":"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries."}]}},"_links":{"self":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/comments?post=14893"}],"version-history":[{"count":5,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14893\/revisions"}],"predecessor-version":[{"id":14921,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14893\/revisions\/14921"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media\/14896"}],"wp:attachment":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media?parent=14893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/categories?post=14893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/tags?post=14893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}