{"id":14949,"date":"2023-07-07T09:28:22","date_gmt":"2023-07-07T03:58:22","guid":{"rendered":"https:\/\/fastbitlab.com\/?p=14949"},"modified":"2023-08-17T16:51:07","modified_gmt":"2023-08-17T11:21:07","slug":"ltdc-frame-buffer-configuration-pitch-line-length-total-lines","status":"publish","type":"post","link":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/","title":{"rendered":"STM32-LTDC, LCD-TFT, LVGL(MCU3) Lecture 40| LTDC Layers initialization coding contd"},"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 class=\"\">&nbsp;<\/p>\n<h1 class=\"\" style=\"text-align: center; font-family: 'Roboto Slab'; font-weight: 400; font-size: 35px; line-height: 50px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000080;\"><strong>LTDC Layers initialization coding<\/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=\"color: #000000;\"><span style=\"font-weight: 400;\">Configure pitch, line length, and total lines of the frame buffer . <\/span><span style=\"font-weight: 400;\">These parameters define how the display data is organized and how the LTDC accesses and refreshes the frame buffer.<\/span><\/span><\/p>\n<ol 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=\"\">\n<li><span style=\"color: #000000;\"><span style=\"text-decoration: underline; color: #9e2626;\"><b>Pitch:<\/b> <\/span><span style=\"font-weight: 400;\">The pitch is the number of bytes between two consecutive lines of the frame buffer. It determines the memory offset required to access the next line of pixels. The pitch value is usually set based on the display resolution and pixel format. It is calculated as the number of pixels per line multiplied by the number of bytes per pixel.<\/span><\/span><\/li>\n<li><span style=\"color: #000000;\"><span style=\"text-decoration: underline;\"><span style=\"color: #9e2626;\"><b><span style=\"color: #9e2626; text-decoration: underline;\">Line length:<\/span> <\/b><\/span><\/span><span style=\"font-weight: 400;\">The line length specifies the number of pixels in each line of the display. It indicates the width of the frame buffer and is closely related to the display resolution. The line length value should be set based on the actual physical width of the display.<\/span><\/span><\/li>\n<li><span style=\"color: #000000;\"><span style=\"text-decoration: underline; color: #9e2626;\"><strong>Total lines:<\/strong><\/span><span style=\"font-weight: 400;\"> The total lines parameter defines the number of lines present in the frame buffer. It corresponds to the height of the display and is typically determined by the display resolution.<\/span><\/span><\/li>\n<\/ol>\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;\">Here&#8217;s an example configuration for the frame buffer parameters in LTDC:<\/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;\">Display Resolution: 800&#215;480 pixels<\/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;\">Pixel Format: RGB888 (3 bytes per pixel)<\/span><\/p>\n<h2 class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"text-decoration: underline; color: #ff0000;\"><b>Pitch calculation:<\/b><\/span><\/h2>\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;\">Pitch = (Number of pixels per line) \u00d7 (Number of bytes per pixel)<\/span><\/p>\n<ol 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;\">Pitch = 800 \u00d7 3 = 2400 bytes<\/span><\/li>\n<\/ol>\n<p class=\"\">&nbsp;<\/p>\n<h3 class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"text-decoration: underline; color: #ff0000;\"><b>Line length:<\/b><\/span><\/h3>\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;\">Line length = Number of pixels per line<\/span><\/p>\n<p class=\"\" style=\"padding-left: 40px; 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;\">2. Line length = 800 pixels<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<h4 class=\"\" style=\"font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"text-decoration: underline; color: #ff0000;\"><b>Total lines:<\/b><\/span><\/h4>\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;\">Total lines = Number of lines in the display<\/span><\/p>\n<p class=\"\" style=\"padding-left: 40px; 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;\">3. Total lines = 480 lines<\/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;\">With these values, you can configure the LTDC&#8217;s frame buffer parameters. This example assumes an RGB888 pixel format, where each pixel is represented by 3 bytes (8 bits per channel). <\/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 pitch is set to 2400 bytes, indicating that each line is spaced by 2400 bytes in memory. The line length is set to 800 pixels, corresponding to the width of the display. The total lines are set to 480, representing the height of the 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;\">Please note that, the actual configuration and register settings for the LTDC may vary depending on the specific microcontroller or SoC being used. It&#8217;s important to consult the documentation or reference manual for your particular device to obtain the correct register addresses and bit assignments.<\/span><\/p>\n<pre class=\"color-5-text-contrast color5-background-color\" style=\"font-size: 12px; box-shadow: #cecece 0px 0px 0px 0px inset;\"><span style=\"color: #008000;\">\/\/Configure pitch, line length and total lines of the frame buffer<\/span>\r\ntmp = 0;\r\n<span style=\"color: #993366;\">uint32_t<\/span> pitch = BSP_LTDC_LAYER_WIDTH * 2;\r\n<span style=\"color: #993366;\">uint32_t<\/span> line_len = pitch + 3;\r\nREG_SET_VAL(tmp,pitch,0x1FFFU,LTDC_LxCFBLR_CFBP_Pos);\r\nREG_SET_VAL(tmp,line_len,0x1FFFU,LTDC_LxCFBLR_CFBLL_Pos);\r\nREG_WRITE(pLayer-&gt;<span style=\"color: #99ccff;\">CFBLR<\/span>,tmp);\r\n\r\nREG_SET_VAL(pLayer-&gt;<span style=\"color: #99ccff;\">CFBLNR<\/span>,BSP_LTDC_LAYER_HEIGHT,0x7FFU,LTDC_LxCFBLNR_CFBLNBR_Pos);<\/pre>\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: #993366;\"><b>tmp = 0;<\/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;\">Initializes a temporary variable <\/span><b>tmp<\/b> <span style=\"font-weight: 400;\">to zero.<\/span><\/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: #993366;\"><b>uint32_t pitch = BSP_LTDC_LAYER_WIDTH * 2;<\/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;\">Calculates the pitch value, which represents the number of bytes between the start of each line in the frame buffer. It is calculated by multiplying the width of the layer (<\/span><span style=\"font-weight: 400;\">BSP_LTDC_LAYER_WIDTH<\/span><span style=\"font-weight: 400;\">) by 2 (assuming 16 bits per pixel, as indicated by the multiplication).<\/span><\/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: #993366;\"><b>uint32_t line_len = pitch + 3;<\/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;\">Calculates the line length, which represents the total number of bytes per line, including the pitch. It is calculated by adding 3 to the pitch value.<\/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: #993366;\"><b>REG_SET_VAL(tmp, pitch, 0x1FFFU, LTDC_LxCFBLR_CFBP_Pos);<\/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;\">Sets the value of the pitch in the temporary variable <\/span><span style=\"font-weight: 400;\">tmp<\/span><span style=\"font-weight: 400;\"> using a register setting macro or function. The <\/span><span style=\"font-weight: 400;\">REG_SET_VAL<\/span><span style=\"font-weight: 400;\"> macro is not explicitly provided in the code snippet, but it likely sets the value of a specific field (<\/span><span style=\"font-weight: 400;\">LTDC_LxCFBLR_CFBP_Pos<\/span><span style=\"font-weight: 400;\">) within <\/span><span style=\"font-weight: 400;\">tmp<\/span><span style=\"font-weight: 400;\"> using a bitmask (<\/span><span style=\"font-weight: 400;\">0x1FFFU<\/span><span style=\"font-weight: 400;\">) and a shift operation.<\/span><\/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: #993366;\"><b>REG_SET_VAL(tmp, line_len, 0x1FFFU, LTDC_LxCFBLR_CFBLL_Pos);<\/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;\">Sets the value of the line length in the temporary variable <\/span><span style=\"font-weight: 400;\">tmp<\/span><span style=\"font-weight: 400;\"> using a similar register setting macro or function. It sets the value of a specific field (<\/span><span style=\"font-weight: 400;\">LTDC_LxCFBLR_CFBLL_Pos<\/span><span style=\"font-weight: 400;\">) within <\/span><span style=\"font-weight: 400;\">tmp<\/span><span style=\"font-weight: 400;\"> using a bitmask (<\/span><span style=\"font-weight: 400;\">0x1FFFU<\/span><span style=\"font-weight: 400;\">) and a shift operation.<\/span><\/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: #993366;\"><b>REG_WRITE(player-&gt;CFBLR, tmp);<\/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;\">Writes the value of the temporary variable <\/span><span style=\"font-weight: 400;\">tmp<\/span><span style=\"font-weight: 400;\"> to a specific register (<\/span><span style=\"font-weight: 400;\">player-&gt;CFBLR<\/span><span style=\"font-weight: 400;\">) that likely controls the frame buffer configuration.<\/span><\/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: #993366;\"><b>REG_SET_VAL(player-&gt;CFBLNR, BSP_LTDC_LAYER_HEIGHT, 0x7FFU, LTDC_LxCFBLNR_CFBLNBR_Pos);<\/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;\">Sets the value of the total lines (line count) in the frame buffer configuration register (<\/span><span style=\"font-weight: 400;\">player-&gt;CFBLNR<\/span><span style=\"font-weight: 400;\">). It sets the value of a specific field (<\/span><span style=\"font-weight: 400;\">LTDC_LxCFBLNR_CFBLNBR_Pos<\/span><span style=\"font-weight: 400;\">) using a bitmask (<\/span><span style=\"font-weight: 400;\">0x7FFU<\/span><span style=\"font-weight: 400;\">) and a shift operation. The <\/span><span style=\"font-weight: 400;\">BSP_LTDC_LAYER_HEIGHT<\/span><span style=\"font-weight: 400;\"> represents the height of the layer.<\/span><\/span><\/p>\n<p class=\"\">&nbsp;<\/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=\"color: #000000;\">In conclusion, this code snippet effectively establishes the configuration parameters associated with the frame buffer for an LTDC layer, including the pitch (bytes between lines), line length (total bytes per line), and the total number of lines in the frame buffer.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"font-size: 20px; line-height: 30px; font-family: 'Roboto Slab'; font-weight: 400;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000080;\"><strong>FastBit Embedded Brain Academy Courses<\/strong><\/span><\/p>\n<p class=\"\" style=\"font-size: 17px;\">&nbsp;<span style=\"color: #000000;\">Click here<\/span>: <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/fastbitlab.com\/course1\">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 coding &nbsp; Configure pitch, line length, and total lines of the frame buffer . These parameters define how the display data is organized and how the LTDC accesses and refreshes the frame buffer. Pitch: The pitch is the number of bytes between two consecutive lines of the frame buffer. It determines [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":14952,"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-14949","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>LTDC Frame Buffer Configuration: Pitch, Line Length, Total Lines<\/title>\n<meta name=\"description\" content=\"Learn how to configure the frame buffer parameters for an LTDC layer, including pitch, line length, and total lines. Understand how these\" \/>\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-frame-buffer-configuration-pitch-line-length-total-lines\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LTDC Frame Buffer Configuration: Pitch, Line Length, Total Lines\" \/>\n<meta property=\"og:description\" content=\"Learn how to configure the frame buffer parameters for an LTDC layer, including pitch, line length, and total lines. Understand how these\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/\" \/>\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-07-07T03:58:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-17T11:21:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-6.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1222\" \/>\n\t<meta property=\"og:image:height\" content=\"702\" \/>\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=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/\"},\"author\":{\"name\":\"FastBitLab\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\"},\"headline\":\"STM32-LTDC, LCD-TFT, LVGL(MCU3) Lecture 40| LTDC Layers initialization coding contd\",\"datePublished\":\"2023-07-07T03:58:22+00:00\",\"dateModified\":\"2023-08-17T11:21:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/\"},\"wordCount\":737,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Figure-1-6.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/\",\"name\":\"LTDC Frame Buffer Configuration: Pitch, Line Length, Total Lines\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Figure-1-6.png\",\"datePublished\":\"2023-07-07T03:58:22+00:00\",\"dateModified\":\"2023-08-17T11:21:07+00:00\",\"description\":\"Learn how to configure the frame buffer parameters for an LTDC layer, including pitch, line length, and total lines. Understand how these\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/#primaryimage\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Figure-1-6.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/Figure-1-6.png\",\"width\":1222,\"height\":702,\"caption\":\"Figure 1. Configure pitch, line length and total lines of the frame buffer\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\\\/#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 40| LTDC Layers initialization coding contd\"}]},{\"@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":"LTDC Frame Buffer Configuration: Pitch, Line Length, Total Lines","description":"Learn how to configure the frame buffer parameters for an LTDC layer, including pitch, line length, and total lines. Understand how these","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-frame-buffer-configuration-pitch-line-length-total-lines\/","og_locale":"en_US","og_type":"article","og_title":"LTDC Frame Buffer Configuration: Pitch, Line Length, Total Lines","og_description":"Learn how to configure the frame buffer parameters for an LTDC layer, including pitch, line length, and total lines. Understand how these","og_url":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/","og_site_name":"FastBit EBA","article_publisher":"https:\/\/www.facebook.com\/fastbiteba\/","article_published_time":"2023-07-07T03:58:22+00:00","article_modified_time":"2023-08-17T11:21:07+00:00","og_image":[{"width":1222,"height":702,"url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-6.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":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/#article","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/"},"author":{"name":"FastBitLab","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d"},"headline":"STM32-LTDC, LCD-TFT, LVGL(MCU3) Lecture 40| LTDC Layers initialization coding contd","datePublished":"2023-07-07T03:58:22+00:00","dateModified":"2023-08-17T11:21:07+00:00","mainEntityOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/"},"wordCount":737,"commentCount":0,"publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-6.png","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/","url":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/","name":"LTDC Frame Buffer Configuration: Pitch, Line Length, Total Lines","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/#primaryimage"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-6.png","datePublished":"2023-07-07T03:58:22+00:00","dateModified":"2023-08-17T11:21:07+00:00","description":"Learn how to configure the frame buffer parameters for an LTDC layer, including pitch, line length, and total lines. Understand how these","breadcrumb":{"@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/#primaryimage","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-6.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2023\/06\/Figure-1-6.png","width":1222,"height":702,"caption":"Figure 1. Configure pitch, line length and total lines of the frame buffer"},{"@type":"BreadcrumbList","@id":"https:\/\/fastbitlab.com\/blog\/ltdc-frame-buffer-configuration-pitch-line-length-total-lines\/#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 40| LTDC Layers initialization coding contd"}]},{"@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\/14949","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=14949"}],"version-history":[{"count":6,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14949\/revisions"}],"predecessor-version":[{"id":15199,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/14949\/revisions\/15199"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media\/14952"}],"wp:attachment":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media?parent=14949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/categories?post=14949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/tags?post=14949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}