19. Liquid crystal display controller (LCD)

This section applies to STM32U083xx and STM32U073xx devices only.

19.1 LCD introduction

The LCD controller is a digital controller/driver for monochrome passive liquid crystal display (LCD) with up to eight common terminals, and up to 52 segment terminals to drive 208 (4x52) or 384 (8x48) LCD picture elements (pixels). The exact number of terminals depends on the device pinout as described in the datasheet.

The LCD is made up of several segments (pixels or complete symbols) that can be turned visible or invisible. Each segment consists of a layer of liquid crystal molecules aligned between two electrodes. When a voltage greater than a threshold voltage is applied across the liquid crystal, the segment becomes visible. The segment voltage must be alternated to avoid an electrophoresis effect in the liquid crystal (which degrades the display). The waveform across a segment must then be generated, so to avoid having a direct current (DC).

Glossary

Bias: number of voltage levels used when driving an LCD

It is defined as \( 1 / (\text{number of voltage levels used to drive an LCD display} - 1) \) .

Boost circuit: contrast controller circuit

Common: electrical connection terminal connected to several segments (52 segments)

Duty ratio: number defined as \( 1 / (\text{number of common terminals on a given LCD display}) \)

Frame: one period of the waveform written to a segment

Frame rate: number of frames per second (number of times the LCD segments are energized per second)

LCD (liquid crystal display): passive display panel with terminals leading directly to a segment

Segment: smallest viewing element (a single bar or dot that is used to help create a character on an LCD display)

19.2 LCD main features

Note: When the LCD relies on the internal stepup converter, the VLCD pin must be connected to \( V_{SS} \) with a capacitor. Its typical value is 1 \( \mu F \) (see \( C_{EXT} \) value in the datasheet for details).

19.3 LCD functional description

19.3.1 General description

The LCD controller has five main blocks (see Figure 74 ):

Figure 74. LCD controller block diagram

Figure 74. LCD controller block diagram. The diagram shows the internal architecture of the LCD controller. On the left, an 'Address bus' and 'Data bus' connect to 'LCD regs', 'LCD RAM (32x16 bits)', and another 'LCD regs' block. The 'LCD RAM' connects to an '8-to-1 mux', which feeds into a 'SEG driver'. The 'SEG driver' outputs are labeled SEG[51:0] (52 lines) and SEG[47:0] (48 lines). These connect to an 'Analog switch array' on the right. The 'Analog switch array' has multiple output pins labeled COM0, COM3, SEG0, SEG47, SEG48/COM4, SEG49/COM5, SEG50/COM6, and SEG51/COM7. Below the 'SEG driver', a 'SEG COM MUX' receives inputs from the 'SEG driver' (labeled SEG[51:48] and SEG[31:28]) and outputs to the 'Analog switch array' (labeled SEG[51:48]). Above the 'SEG driver', a 'COM driver' receives inputs from the '8-to-1 mux' (labeled COM[7:4]) and outputs to the 'Analog switch array' (labeled COM[3:0]). The 'COM driver' also has an 'Interrupt' output and a 'READY' input. At the top, a 'Frequency generator' block contains a '16-bit prescaler' (input LCDCLK, output LCDCLK/32768), a 'Clock mux' (inputs LCDCLK, PS[3:0], and output of 'Divide by 16 to 31' block; output ck_ps), and a 'Divide by 16 to 31' block (input DIV[3:0], output ck_div). The 'ck_div' output connects to the 'COM driver'. At the bottom, an 'Analog stepup converter' block contains a 'Voltage generator' (inputs STATIC, VSEL, EN, HD, BIAS[1:0], CCI[2:0]; outputs Vss, 1/3-1/4 V_LCD, 2/3-3/4 V_LCD, 1/2 V_LCD, V_LCD) and a 'Contrast controller' (inputs STATIC, VSEL, EN, HD, BIAS[1:0], CCI[2:0]; output READY). The 'Voltage generator' outputs connect to the 'Analog switch array'. The 'Contrast controller' also has a 'READY' output. The 'Pulse generator' block (inputs STATIC, VSEL, EN, HD, BIAS[1:0], CCI[2:0]; output HD) connects to the 'Voltage generator'. The 'Analog switch array' is connected to 'I/O ports' at the bottom right. The diagram is labeled MSV33071V2 at the bottom right.
Figure 74. LCD controller block diagram. The diagram shows the internal architecture of the LCD controller. On the left, an 'Address bus' and 'Data bus' connect to 'LCD regs', 'LCD RAM (32x16 bits)', and another 'LCD regs' block. The 'LCD RAM' connects to an '8-to-1 mux', which feeds into a 'SEG driver'. The 'SEG driver' outputs are labeled SEG[51:0] (52 lines) and SEG[47:0] (48 lines). These connect to an 'Analog switch array' on the right. The 'Analog switch array' has multiple output pins labeled COM0, COM3, SEG0, SEG47, SEG48/COM4, SEG49/COM5, SEG50/COM6, and SEG51/COM7. Below the 'SEG driver', a 'SEG COM MUX' receives inputs from the 'SEG driver' (labeled SEG[51:48] and SEG[31:28]) and outputs to the 'Analog switch array' (labeled SEG[51:48]). Above the 'SEG driver', a 'COM driver' receives inputs from the '8-to-1 mux' (labeled COM[7:4]) and outputs to the 'Analog switch array' (labeled COM[3:0]). The 'COM driver' also has an 'Interrupt' output and a 'READY' input. At the top, a 'Frequency generator' block contains a '16-bit prescaler' (input LCDCLK, output LCDCLK/32768), a 'Clock mux' (inputs LCDCLK, PS[3:0], and output of 'Divide by 16 to 31' block; output ck_ps), and a 'Divide by 16 to 31' block (input DIV[3:0], output ck_div). The 'ck_div' output connects to the 'COM driver'. At the bottom, an 'Analog stepup converter' block contains a 'Voltage generator' (inputs STATIC, VSEL, EN, HD, BIAS[1:0], CCI[2:0]; outputs Vss, 1/3-1/4 V_LCD, 2/3-3/4 V_LCD, 1/2 V_LCD, V_LCD) and a 'Contrast controller' (inputs STATIC, VSEL, EN, HD, BIAS[1:0], CCI[2:0]; output READY). The 'Voltage generator' outputs connect to the 'Analog switch array'. The 'Contrast controller' also has a 'READY' output. The 'Pulse generator' block (inputs STATIC, VSEL, EN, HD, BIAS[1:0], CCI[2:0]; output HD) connects to the 'Voltage generator'. The 'Analog switch array' is connected to 'I/O ports' at the bottom right. The diagram is labeled MSV33071V2 at the bottom right.

Note: LCDCLK is the same as RTCCLK. Refer to the RTC/LCD clock description in the RCC section.

The frequency generator allows the user to achieve various LCD frame rates starting from an LCD input clock frequency (LCDCLK), which can vary from 32 kHz up to 1 MHz.

Three different clock sources can be used to provide the LCD clock (LCDCLK/RTCCLK):

19.3.2 Frequency generator

This clock source must be stable to obtain accurate LCD timing, and hence to minimize DC voltage offset across LCD segments. The input clock LCDCLK can be divided by any value from 1 to \( 2^{15} \times 31 \) (see Section 19.6.2 ).

The frequency generator consists of a prescaler (16-bit ripple counter), and a 16 to 31 clock divider. PS[3:0] in LCD_FCR selects LCDCLK divided by \( 2^{\text{PS}[3:0]} \) . If a finer resolution rate is required, DIV[3:0] in LCD_FCR can be used to divide the clock further by 16 to 31.

In this way, the user can roughly scale the frequency, and then fine-tune it by linearly scaling the clock with the counter. The output of the frequency generator block is \( f_{\text{ck\_div}} \) , which constitutes the time base for the entire LCD controller. This frequency is equivalent to the LCD phase frequency, rather than the frame frequency (they are equal only in case of static duty).

The frame frequency ( \( f_{\text{frame}} \) ) is obtained from \( f_{\text{ck\_div}} \) by dividing it by the number of active common terminals (or by multiplying it for the duty).

The relation between the input clock frequency ( \( f_{\text{LCDCLK}} \) ) of the frequency generator and its output clock frequency \( f_{\text{ck\_div}} \) is:

\[ f_{\text{ckdiv}} = \frac{f_{\text{LCDCLK}}}{2^{\text{PS}} \times (16 + \text{DIV})} \]

\[ f_{\text{frame}} = f_{\text{ckdiv}} \times \text{duty} \]

This makes the frequency generator very flexible. An example of frame rate calculation is shown in the table below.

Table 100. Example of frame rate calculation

LCDCLKPS[3:0]DIV[3:0]RatioDuty\( f_{\text{frame}} \)
32.768 kHz311361/830.12 Hz
32.768 kHz412721/430.12 Hz
32.768 kHz463521/331.03 Hz
32.768 kHz515441/230.12 Hz
32.768 kHz611088static30.12 Hz
32.768 kHz14401/8102.40 Hz
32.768 kHz24801/4102.40 Hz
32.768 kHz2111081/3101.14 Hz
32.768 kHz341601/2102.40 Hz
32.768 kHz44320static102.40 Hz
1.00 MHz6312161/8102.80 Hz
1.00 MHz7324321/4102.80 Hz
1.00 MHz71033281/3100.16 Hz
1.00 MHz8348641/2102.80 Hz
1.00 MHz939728static102.80 Hz

The frame frequency must be selected to be within a range of around ~30 Hz to ~100 Hz. This is a compromise between power consumption and the acceptable refresh rate. In addition, a dedicated blink prescaler selects the blink frequency.

This frequency is defined as \( f_{\text{BLINK}} = f_{\text{ck\_div}} / 2^{(\text{BLINKF} + 3)} \) , with \( \text{BLINKF}[2:0] = 0, 1, 2, \dots, 7 \)

The blink frequency achieved is in the range of 0.5, 1, 2, or 4 Hz.

19.3.3 Common driver

Common signals are generated by the common driver block (see Figure 74 ).

COM signal bias

Each COM signal has identical waveforms, but different phases. It has its max amplitude \( V_{\text{LCD}} \) or \( V_{\text{SS}} \) only in the corresponding phase of a frame cycle, while during the other phases, the signal amplitude is:

The selection between \( 1/2 \) , \( 1/3 \) , and \( 1/4 \) bias mode can be done through \( \text{BIAS}[1:0] \) in \( \text{LCD\_CR} \) .

A pixel is activated when both of its corresponding common and segment lines are active during the same phase: when the voltage difference between common and segment is maximum during this phase. Common signals are phase inverted in order to reduce EMI.

As shown in the figure below, with phase inversion, there is a mean voltage of \( 1/2 V_{\text{LCD}} \) at the end of every odd cycle.

Figure 75. 1/3 bias, 1/4 duty

Timing diagram for 1/3 bias, 1/4 duty. The diagram shows Common and Segment signal waveforms over two frames (Odd and Even). The Common signal has four levels: V_LCD, 2/3 V_LCD, 1/3 V_LCD, and V_SS. The Segment signal also has four levels: V_LCD, 2/3 V_LCD, 1/3 V_LCD, and V_SS. The diagram is divided into phases 0, 1, 2, and 3 for each frame. The Common signal is active in phases 0 and 2, and inactive in phases 1 and 3. The Segment signal is active in phases 0 and 1, and inactive in phases 2 and 3. The waveforms show transitions between the four voltage levels. The diagram is labeled with 'MS33438V2' in the bottom right corner.
Timing diagram for 1/3 bias, 1/4 duty. The diagram shows Common and Segment signal waveforms over two frames (Odd and Even). The Common signal has four levels: V_LCD, 2/3 V_LCD, 1/3 V_LCD, and V_SS. The Segment signal also has four levels: V_LCD, 2/3 V_LCD, 1/3 V_LCD, and V_SS. The diagram is divided into phases 0, 1, 2, and 3 for each frame. The Common signal is active in phases 0 and 2, and inactive in phases 1 and 3. The Segment signal is active in phases 0 and 1, and inactive in phases 2 and 3. The waveforms show transitions between the four voltage levels. The diagram is labeled with 'MS33438V2' in the bottom right corner.

In case of \( 1/2 \) bias ( \( \text{BIAS} = 01 \) ), the \( V_{\text{LCD}} \) pin generates an intermediate voltage equal to \( 1/2 V_{\text{LCD}} \) on node b for odd and even frames (see Figure 78 ).

COM signal duty

Depending on DUTY[2:0] in LCD_CR, the COM signals are generated with static duty (see Figure 77), 1/2 duty (see Figure 78), 1/3 duty (see Figure 79), 1/4 duty (see Figure 80), or 1/8 duty (see Figure 81).

COM[ n ] n [0 to 7] is active during phase n in the odd frame, so the COM pin is driven to \( V_{LCD} \) .

During phase n of the even frame, the COM pin is driven to \( V_{SS} \) .

In the case of 1/3 or 1/4 bias, COM[ n ] is inactive during phases other than n , so the COM pin is driven to 1/3 (1/4) \( V_{LCD} \) during odd frames, and to 2/3 (3/4) \( V_{LCD} \) during even frames.

In the case of 1/2 bias, if COM[ n ] is inactive during phases other than n , the COM pin is always driven (odd and even frame) to 1/2 \( V_{LCD} \) .

When static duty is selected, the segment lines are not multiplexed, which means that each segment output corresponds to one pixel. In this way, only up to 51 pixels can be driven. COM[0] is always active while COM[7:1] are not used and are driven to \( V_{SS} \) .

When LCDEN in LCD_CR is reset, all common lines are pulled down to \( V_{SS} \) , and the ENS flag in LCD_SR becomes 0. Static duty means that COM[0] is always active, and only two voltage levels are used for segment and common lines: \( V_{LCD} \) and \( V_{SS} \) . A pixel is active if the corresponding SEG line has a voltage opposite to that of the COM, and inactive when the voltages are equal. In this way the LCD has maximum contrast (see Figure 76, Figure 77).

In the figure below, pixel 0 is active while pixel 1 is inactive.

Figure 76. Static duty case 1

Timing diagram for static duty case 1 showing waveforms for COM0, SEG0, SEG1, and differential voltages COM0-SEG0 and COM0-SEG1 over four frames.

The diagram illustrates the voltage waveforms for static duty mode over four frames: Odd frame, Even frame, Odd frame, and Even frame.

Reference: MS33439V1

Timing diagram for static duty case 1 showing waveforms for COM0, SEG0, SEG1, and differential voltages COM0-SEG0 and COM0-SEG1 over four frames.

In each frame, there is only one phase, this is why \( f_{frame} \) is equal to \( f_{LCD} \) . If 1/4 duty is selected there are four phases in a frame in which COM[0] is active during phase 0, COM[1] is active during phase 1, COM[2] is active during phase 2, and COM[3] is active during phase 3.

Figure 77. Static duty case 2

Figure 77: Static duty case 2. Diagram showing LCD terminal connections and timing waveforms.

The figure illustrates the static duty case 2 for an LCD controller. On the left, a diagram shows the liquid crystal display and its terminal connections. The COM0 terminal is connected to a common line, and SEG0 through SEG7 are connected to segment lines. The SEG0 line is further divided into SEG0, SEG1, SEG2, SEG3, and SEG4. On the right, timing waveforms are shown for PIN COM0, PIN SEG0, PIN SEG1, COM0-SEG0 selected waveform, and COM0-SEG1 non selected waveform. The waveforms show a periodic switching between 1/1 V and 0/1 V for the COM and SEG lines, and a more complex waveform for the selected and non-selected pixel lines. The diagram is labeled MS33440V1.

Figure 77: Static duty case 2. Diagram showing LCD terminal connections and timing waveforms.

In this mode, the segment terminals are multiplexed, and each of them control four pixels. A pixel is activated only when both of its corresponding SEG and COM lines are active in the same phase. In case of 1/4 duty, to deactivate pixel 0 connected to COM[0], SEG[0] needs to be inactive during the phase 0 when COM[0] is active. To activate pixel 0 connected to COM[1], SEG[0] needs to be active during phase 1 when COM[1] is active (see Figure 80). To activate pixels from 0 to 51 connected to COM[0], SEG[0:51] needs to be active during phase 0 when COM[0] is active. These considerations can be extended to the other pixels.

Eight-to-one mux

When COM[0] is active the common driver block, it also drives the eight-to-one mux shown in Figure 74 in order to select the content of first two RAM register locations. When COM[7] is active, the output of the eight-to-one mux is the content of the last two RAM locations.

Figure 78. 1/2 duty, 1/2 bias

Timing diagram for 1/2 duty, 1/2 bias LCD driving. It shows waveforms for COM0, COM1, SEG0, and SEG1 pins, along with selected and non-selected waveforms for COM0-SEG0 and COM0-SEG1. Includes a terminal connection diagram on the left.

The figure illustrates the driving waveforms for an LCD in 1/2 duty, 1/2 bias mode. On the left, a diagram shows the terminal connections for a 4-segment display (SEG0, SEG1, SEG2, SEG3) and common lines (COM0, COM1). The main part shows timing diagrams for several pins and waveforms over time, divided into phases by vertical dashed lines. The voltage levels are indicated on the right: 2/2 V, 1/2 V, 0/2 V, -1/2 V, and -2/2 V. The waveforms shown are:

The identifier MS33441V1 is present in the bottom right corner of the diagram area.

Timing diagram for 1/2 duty, 1/2 bias LCD driving. It shows waveforms for COM0, COM1, SEG0, and SEG1 pins, along with selected and non-selected waveforms for COM0-SEG0 and COM0-SEG1. Includes a terminal connection diagram on the left.

19.3.4 Segment driver

The segment driver block controls the SEG lines according to the pixel data coming from the eight-to-one mux driven in each phase by the common driver block.

In the case of 1/4 or 1/8 duty

When COM[0] is active, the pixel information (active/inactive) related to the pixel connected to COM[0] (content of the first two LCD_RAM locations) goes through the eight-to-one mux.

The SEG[n] pin n [0 to 51] is driven to V SS (indicating pixel n is active when COM[0] is active) in phase 0 of the odd frame.

The SEG[n] pin is driven to V LCD in phase 0 of the even frame. If pixel n is inactive then the SEG[n] pin is driven to 2/3 (2/4) V LCD in the odd frame or 1/3 (2/4) V LCD in the even frame (current inversion in V LCD pad) (see Figure 75).

In case of 1/2 bias, if the pixel is inactive the SEG[n] pin is driven to V LCD in the odd and to V SS in the even frame.

When the LCD controller is disabled (LCDEN cleared in LCD_CR), then the SEG lines are pulled down to V SS .

Figure 79. 1/3 duty, 1/3 bias

Timing diagram for 1/3 duty, 1/3 bias LCD controller showing terminal connections and voltage waveforms for COM and SEG pins over one frame.

The figure illustrates the terminal connections and timing waveforms for an LCD controller. On the left, two diagrams show the 'Liquid crystal display and terminal connection'. The top diagram shows common terminals COM0, COM1, and COM2 connected to the LCD. The bottom diagram shows segment terminals SEG0, SEG1, and SEG2 connected to the LCD. On the right, a timing diagram shows the voltage waveforms for these terminals over one frame. The vertical axis represents voltage levels: 3/3 V, 2/3 V, 1/3 V, 0/3 V, -1/3 V, -2/3 V, and -3/3 V. The horizontal axis represents time, with a '1 frame' duration indicated. The waveforms are as follows:

The diagram is labeled MS33442V1.

Timing diagram for 1/3 duty, 1/3 bias LCD controller showing terminal connections and voltage waveforms for COM and SEG pins over one frame.

Figure 80. 1/4 duty, 1/3 bias

Timing diagram for 1/4 duty, 1/3 bias LCD controller showing terminal connections and waveforms for COM0, COM1, COM2, SEG0, SEG1, selected waveform (COM0-SEG1), and non selected waveform (COM0-SEG0).

The figure illustrates the terminal connections and timing waveforms for an LCD controller. On the left, a diagram shows the 'Liquid crystal display and terminal connection' with terminals COM3, COM2, COM1, COM0, SEG0, and SEG1. The main part of the figure shows timing diagrams for several pins and waveforms:

A horizontal double-headed arrow indicates a duration of '1 frame'. The identifier 'MS33443V1' is located in the bottom right corner.

Timing diagram for 1/4 duty, 1/3 bias LCD controller showing terminal connections and waveforms for COM0, COM1, COM2, SEG0, SEG1, selected waveform (COM0-SEG1), and non selected waveform (COM0-SEG0).

Figure 81. 1/8 duty, 1/4 bias

Timing diagram for 1/8 duty, 1/4 bias LCD controller showing terminal connections and voltage waveforms for COM and SEG pins over one frame.

The figure illustrates the terminal connections and voltage waveforms for an LCD controller operating in 1/8 duty and 1/4 bias mode. On the left, two diagrams show the 'Liquid crystal display and terminal connection'. The top diagram shows connections for COM7, COM6, COM5, COM4, COM3, COM2, COM1, and COM0 to a 7-segment display digit. The bottom diagram shows connections for SEG0 and COM0. The main part of the figure is a timing diagram showing voltage levels over time for several pins. The vertical axis on the right lists voltage levels: 4/4 V, 3/4 V, 2/4 V, 1/4 V, 0/4 V, and for the differential waveforms, it extends to -1/4 V, -2/4 V, -3/4 V, and -4/4 V. The horizontal axis represents time, with a '1 frame' duration indicated by a double-headed arrow. The waveforms shown are:

The diagram is labeled 'MS33444V1' in the bottom right corner.

Timing diagram for 1/8 duty, 1/4 bias LCD controller showing terminal connections and voltage waveforms for COM and SEG pins over one frame.

The segment driver also implements a programmable blink feature to allow some pixels to continuously switch on at a specific frequency. The blink mode can be configured by BLINK[1:0] in LCD_FCR, making possible to blink up to 1, 2, 4, 8, or all pixels (see Section 19.6.2 ). The blink frequency can be selected from eight different values using BLINKF[2:0] in LCD_FCR.

Table 101 gives examples of different blink frequencies (as a function of ck_div frequency).

Table 101. Blink frequency

BLINKF[2:0]ck_div frequency (with LCDCLK frequency of 32.768 kHz)
32 Hz64 Hz128 Hz256 Hz
0004.0 HzN/AN/AN/A
0012.0 Hz4.0 HzN/AN/A
0101.0 Hz2.0 Hz4.0 HzN/A
0110.5 Hz1.0 Hz2.0 Hz4.0 Hz
1000.25 Hz0.5 Hz1.0 Hz2.0 Hz
101N/A0.25 Hz0.5 Hz1.0 Hz
110N/AN/A0.25 Hz0.5 Hz
111N/AN/AN/A0.25 Hz

19.3.5 Voltage generator and contrast control

LCD supply source

The LCD power supply source comes from either the internal stepup converter, or from an external voltage applied on the VLCD pin. The internal or external voltage source can be selected using VSEL in LCD_CR. In case of external source selected, the internal boost circuit (stepup converter) is disabled to reduce power consumption.

When the stepup converter is selected as \( V_{LCD} \) source, the \( V_{LCD} \) value can be chosen among a wide set of values from \( V_{LCDmin} \) to \( V_{LCDmax} \) by means of CC[2:0] (contrast control) in LCD_FCR (see Section 19.6.2 ). New values of \( V_{LCD} \) takes effect every beginning of a new frame.

When external power source is selected as \( V_{LCD} \) source, the \( V_{LCD} \) voltage must be chosen in the range of \( V_{LCDmin} \) to \( V_{LCDmax} \) (see datasheets). The contrast can then be controlled by programming a dead time between frames (see Deadtime ).

LCD intermediate voltages

The LCD intermediate voltage levels are generated through an internal resistor divider network as shown in Figure 82 .

The LCD voltage generator issues intermediate voltage levels between \( V_{SS} \) and \( V_{LCD} \) :

LCD drive selection

Two resistive networks, one with low-value resistors ( \( R_L \) ), and one with high-value resistors ( \( R_H \) ) are respectively used to increase the current during transitions, and to reduce power consumption in static state.

The EN switch follows the rules described below (see Figure 82 ):

PON[2:0] (pulse on duration) in LCD_FCR configures the time during which \( R_L \) is enabled through the HD (high drive) switch when the levels of the common and segment lines change (see Figure 82 ). A short drive time leads to lower power consumption, but displays with high internal resistance may need a longer drive time to achieve satisfactory contrast.

Figure 82. LCD voltage control

Figure 82: LCD voltage control circuit diagram. The diagram shows two resistive divider networks connected to V_LCD. The left network uses low-value resistors (R_L) and is controlled by the HD (High Drive) switch. The right network uses high-value resistors (R_H) and is controlled by the EN (Enable) switch. Taps from the R_L network provide voltages of 3/4 x V_LCD, 2/3 x V_LCD, 1/2 x V_LCD, 1/3 x V_LCD, and 1/4 x V_LCD. These are connected to three buffer stages (BUFEN) which output V_LCDRail3, V_LCDRail2, and V_LCDRail1. A STATIC switch connects the bottom of the R_H network to V_SS. A BIAS[1] input is also shown. The diagram is labeled MS33445V2.
Figure 82: LCD voltage control circuit diagram. The diagram shows two resistive divider networks connected to V_LCD. The left network uses low-value resistors (R_L) and is controlled by the HD (High Drive) switch. The right network uses high-value resistors (R_H) and is controlled by the EN (Enable) switch. Taps from the R_L network provide voltages of 3/4 x V_LCD, 2/3 x V_LCD, 1/2 x V_LCD, 1/3 x V_LCD, and 1/4 x V_LCD. These are connected to three buffer stages (BUFEN) which output V_LCDRail3, V_LCDRail2, and V_LCDRail1. A STATIC switch connects the bottom of the R_H network to V_SS. A BIAS[1] input is also shown. The diagram is labeled MS33445V2.

1. \( R_{LN} \) and \( R_{HN} \) are the low value resistance network and the high value resistance network, respectively.

The \( R_{LN} \) divider can be always switched on using HD in LCD_FCR (see Section 19.6.2 ).

The HD switch follows the rules described below:

After LCDEN is activated, RDY is set in LCD_SR to indicate that voltage levels are stable and the LCD controller can start to work.

Buffered mode

When voltage output buffers are enabled by setting BUFEN in LCD_CR, the LCD driving capability is improved as buffers prevent the LCD capacitive loads from loading the resistor bridge unacceptably and interfering with its voltage generation. As a result, intermediate voltage levels are more stable, which improves RMS voltage applied to the LCD pixels.

In buffer mode, intermediate voltages are generated by the high value resistor bridge R HN to reduce power consumption. The low value resistor bridge R LN is automatically disabled whatever HD or PON[2:0] configuration.

Buffers can be used independently of the V LCD supply source (internal or external), but they can only be enabled or disabled when the LCD controller is not activated.

Deadtime

In addition to using CC[2:0], the contrast can be controlled by programming a dead time between each frame. During the dead time, the COM and SEG values are put to V SS . DEAD[2:0] in LCD_FCR can be used to program a time of up to eight phase periods. This dead time reduces the contrast without modifying the frame rate.

Figure 83. Deadtime

Timing diagram showing the sequence of frames and dead time. The diagram illustrates the transition between an Odd frame, an Even frame, a Dead time period, and then another Odd frame and Even frame. The signal levels are shown as step functions over time, with vertical dashed lines marking the boundaries between frames and the dead time period. The signal is high during the Odd frame, low during the Even frame, and returns to high during the next Odd frame. The Dead time period is a short duration where the signal is held at a low level between the Even frame and the next Odd frame.
Timing diagram showing the sequence of frames and dead time. The diagram illustrates the transition between an Odd frame, an Even frame, a Dead time period, and then another Odd frame and Even frame. The signal levels are shown as step functions over time, with vertical dashed lines marking the boundaries between frames and the dead time period. The signal is high during the Odd frame, low during the Even frame, and returns to high during the next Odd frame. The Dead time period is a short duration where the signal is held at a low level between the Even frame and the next Odd frame.

19.3.6 Double-buffer memory

Using its double-buffer memory, the LCD controller ensures the coherency of the displayed information without having to use interrupts to control the LCD_RAM modification.

The application software can access the first buffer level (LCD_RAM) through the APB interface. Once it has modified the LCD_RAM, it sets UDR in LCD_SR. This UDR flag (update display request) requests the updated information to be moved into the second buffer level (LCD_DISPLAY).

This operation is done synchronously with the frame (at the beginning of the next frame). Until the update is completed, the LCD_RAM is write protected, and the UDR flag stays high. Once the update is completed, another flag (UDD, update display done) is set and generates an interrupt if UDDIE is set in LCD_FCR.

The time it takes to update LCD_DISPLAY is, in the worst case, one odd and one even frame.

The update does not occur (UDR = 1 and UDD = 0) until the display is enabled (LCDEN = 1)

19.3.7 COM and SEG multiplexing

Output pins versus duty modes

The output pins consists of:

Depending on the duty configuration, the COM and SEG output pins can have different functions:

Remapping capability for small packages

Additionally, it is possible to remap four segments by setting MUX_SEG in LCD_CR. This is particularly useful when using 64-pin devices.

When MUX_SEG is set, output pins SEG[51:48] have the same function as SEG[31:28].

This feature is available only if the mode 1/8 duty is not selected.

For the considered package, check the availability of the SEG/COM multiplexing pin:

Summary of COM and SEG functions versus duty and remap

All the possible ways of multiplexing the COM and SEG functions are described in the following table.

Table 102. Remapping capability

Configuration bitsSEG x COMOutput pinFunction
DUTYMUX_SEG
1/8X48x8SEG[51:48]/SEG[31:28]/COM[7:4]COM[7:4]
COM[3:0]COM[3:0]
SEG[39:0]SEG[39:0]

Table 102. Remapping capability (continued)

Configuration bitsSEG x COMOutput pinFunction
DUTYMUX_SEG
1/4052x4COM[3:0]COM[3:0]
SEG[51:48]/SEG[31:28]/COM[7:4]SEG[51:48]
SEG[39:0]SEG[39:0]
148x4COM[3:0]COM[3:0]
SEG[51:48]/SEG[31:28]/COM[7:4]SEG[31:28]
SEG[39:32]SEG[39:32]
SEG[31:28]not used
SEG[27:0]SEG[27:0]
1/3052x3COM3not used
COM[2:0]COM[2:0]
SEG[51:48]/SEG[31:28]/COM[7:4]SEG[51:48]
SEG[39:0]SEG[39:0]
148x3COM3not used
COM[2:0]COM[2:0]
SEG[51:48]/SEG[31:28]/COM[7:4]SEG[31:28]
SEG[39:32]SEG[39:32]
SEG[31:28]not used
SEG[27:0]SEG[27:0]
1/2052x2COM[3:2]not used
COM[1:0]COM[1:0]
SEG[51:48]/SEG[31:28]/COM[7:4]SEG[51:48]
SEG[39:0]SEG[39:0]
148x2COM[3:2]not used
COM[1:0]COM[1:0]
SEG[51:48]/SEG[31:28]/COM[7:4]SEG[31:28]
SEG[39:32]SEG[39:32]
SEG[31:28]not used
SEG[27:0]SEG[27:0]

Table 102. Remapping capability (continued)

Configuration bitsSEG x COMOutput pinFunction
DUTYMUX_SEG
STATIC052x1COM[3:1]not used
COM0COM0
SEG[51:48]/SEG[31:28]/COM[7:4]SEG[51:48]
SEG[39:0]SEG[39:0]
148x1COM[3:1]not used
COM0COM0
SEG[51:48]/SEG[31:28]/COM[7:4]SEG[31:28]
SEG[39:32]SEG[39:32]
SEG[31:28]not used
SEG[27:0]SEG[27:0]

19.3.8 Flowchart

Figure 84. Flowchart example

Flowchart for LCD controller initialization and management. It starts with START, followed by INIT (enable GPIO clocks, configure pins, configure controller). Then load initial data to LCD_RAM and set UDR in LCD_SR. Program frame rate (PS, DIV in LCD_FCR) and contrast (CC in LCD_FCR). Enable display (LCDEN in LCD_CR). A loop for adjusting contrast, modifying data (if UDR=1), changing blink, and disabling LCD. Ends when ENS=0.
graph TD; START([START]) --> INIT["INIT<br/>- Enable the GPIO port clocks<br/>- Configure the LCD GPIO pins as alternate functions<br/>- Configure LCD controller according to the display to be driven"]; INIT --> LoadData["- Load the initial data to be displayed into<br/>LCD_RAM and set the UDR in LCD_SR"]; LoadData --> ProgramFCR["- Program the desired frame rate (PS and DIV in LCD_FCR)<br/>- Program the contrast (CC in LCD_FCR)"]; ProgramFCR --> EnableDisplay["Enable the display (LCDEN in LCD_CR)"]; EnableDisplay --> AdjustContrast{Adjust contrast?}; AdjustContrast -- Yes --> ChangeFCR["Change PS, DIV, CC, PON,<br/>DEAD, or HD in LCD_FCR"]; AdjustContrast -- No --> ModifyData{Modify data?}; ModifyData -- Yes --> UDR1{UDR = 1?}; UDR1 -- Yes --> AdjustContrast; UDR1 -- No --> ModifyRAM["Modify the LCD_RAM"]; ModifyRAM --> SetUDR["Set UDR in LCD_SR"]; SetUDR --> AdjustContrast; ModifyData -- No --> ChangeBlink{Change blink?}; ChangeBlink -- Yes --> ChangeBlinkFCR["Change BLINK or BLINKF<br/>in LCD_FCR"]; ChangeBlinkFCR --> AdjustContrast; ChangeBlink -- No --> DisableLCD{Disable LCD?}; DisableLCD -- Yes --> DisableDisplay["Disable the display (LCDEN in LCD_CR)"]; DisableDisplay --> ENS0{ENS = 0?}; ENS0 -- No --> DisableDisplay; ENS0 -- Yes --> END([END]);
Flowchart for LCD controller initialization and management. It starts with START, followed by INIT (enable GPIO clocks, configure pins, configure controller). Then load initial data to LCD_RAM and set UDR in LCD_SR. Program frame rate (PS, DIV in LCD_FCR) and contrast (CC in LCD_FCR). Enable display (LCDEN in LCD_CR). A loop for adjusting contrast, modifying data (if UDR=1), changing blink, and disabling LCD. Ends when ENS=0.

MS33450V1

19.4 LCD low-power modes

The LCD controller can be displayed in Stop mode, or can be fully disabled to reduce power consumption.

19.5 LCD interrupts

The table below gives the list of LCD interrupt requests.

Table 103. LCD interrupt requests

Interrupt eventEvent flagEvent flag
Interrupt clearing method
Interrupt enable
control bit
Start of frame (SOF)SOFWrite SOFC = 1SOFIE
Update display done (UDD)UDDWrite UDDC = 1UDDIE

Start of frame (SOF)

The LCD start of frame interrupt is executed if SOFIE (start of frame interrupt enable) is set in LCD_FCR. SOF is cleared by writing SOFC to 1 in LCD_CLR when executing the corresponding interrupt handling vector.

Update display done (UDD)

The LCD update display interrupt is executed if UDDIE (update display done interrupt enable) is set in LCD_FCR. UDD is cleared by writing the UDDC to 1 in LCD_CLR when executing the corresponding interrupt handling vector.

Depending on the product implementation, all these interrupts events can either share the same interrupt vector (LCD global interrupt), or be grouped into two interrupt vectors (LCD SOF interrupt and LCD UDD interrupt). Refer to Table 55: Vector table for details.

To enable the LCD interrupts, the following sequence is required:

  1. 1. Configure and enable the LCD IRQ channel in the NVIC.
  2. 2. Configure the LCD to generate interrupts.

19.6 LCD registers

These registers are accessed by words (32-bit).

19.6.1 LCD control register (LCD_CR)

Address offset: 0x00

Reset value: 0x0000 0000

VSEL, MUX_SEG, BIAS, DUTY, and BUFEN bitfields are write-protected when the LCD is enabled (ENS =1 in LCD_SR).

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.BUFENMUX_SEGBIAS[1:0]DUTY[2:0]VSELLCDEN
rwrwrwrwrwrwrwrwrw

Bits 31:9 Reserved, must be kept at reset value.

Bit 8 BUFEN : Voltage output buffer enable

This bit is used to enable/disable the voltage output buffer for higher driving capability.

0: Output buffer disabled

1: Output buffer enabled

Bit 7 MUX_SEG : Mux segment enable

This bit is used to enable SEG pin remapping. Four SEG pins can be multiplexed with SEG[31:28]. See Section 19.3.7 .

0: SEG pin multiplexing disabled

1: SEG[31:28] multiplexed with SEG[51:48]

Bits 6:5 BIAS[1:0] : Bias selector

These bits determine the bias used. Value 11 is forbidden.

00: Bias 1/4

01: Bias 1/2

10: Bias 1/3

11: Reserved

Bits 4:2 DUTY[2:0] : Duty selection

These bits determine the duty cycle. Values 101, 110 and 111 are forbidden.

000: Static duty

001: 1/2 duty

010: 1/3 duty

011: 1/4 duty

100: 1/8 duty

Others: Reserved

Bit 1 VSEL : Voltage source selection

This bit determines the voltage source for the LCD.

0: Internal source (voltage stepup converter)

1: External source (VLCD pin)

Bit 0 LCDEN : LCD controller enable

This bit is set by software to enable the LCD controller/driver. It is cleared by software to turn off the LCD at the beginning of the next frame. When the LCD is disabled, all COM and SEG pins are driven to \( V_{SS} \) .

0: LCD controller disabled

1: LCD controller enabled

19.6.2 LCD frame control register (LCD_FCR)

Address offset: 0x04

Reset value: 0x0000 0000

This register can be updated any time, but the new values are applied only at the beginning of the next frame (except for UDDIE, SOFIE that affect the device behavior immediately). The new value of CC[2:0] is also applied immediately, but its effect on the device is delayed at the beginning of the next frame by the voltage generator.

Reading this register gives the last value written in the register, and not the configuration used to display the current frame.

When BUFEN is set in LCD_CR, the low resistor divider network is automatically disabled whatever HD or PON[2:0] configuration.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.PS[3:0]DIV[3:0]BLINK[1:0]
rwrwrwrwrwrwrwrwrwrw
1514131211109876543210
BLINKF[2:0]CC[2:0]DEAD[2:0]PON[2:0]UDDIERes.SOFIEHD
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:26 Reserved, must be kept at reset value.

Bits 25:22 PS[3:0] : PS 16-bit prescaler

These bits are written by software to define the division factor of the PS 16-bit prescaler.

\( ck\_ps = LCDCLK/(2^{PS[3:0]}) \) . See Section 19.3.2 .

0000: \( ck\_ps = LCDCLK \)

0001: \( ck\_ps = LCDCLK/2 \)

0002: \( ck\_ps = LCDCLK/4 \)

...

1111: \( ck\_ps = LCDCLK/32768 \)

Bits 21:18 DIV[3:0] : DIV clock divider

These bits are written by software to define the division factor of the DIV divider (see Section 19.3.2 .)

0000: \( ck\_div = ck\_ps/16 \)

0001: \( ck\_div = ck\_ps/17 \)

0002: \( ck\_div = ck\_ps/18 \)

...

1111: \( ck\_div = ck\_ps/31 \)

Bits 17:16 BLINK[1:0] : Blink mode selection

Bits 15:13 BLINKF[2:0] : Blink frequency selection

Bits 12:10 CC[2:0] : Contrast control

These bits specify one of the \( V_{LCD} \) maximum voltages (independent of \( V_{DD} \) ). It ranges from 2.60 V to 3.51V.

Note: Refer to the datasheet for the \( V_{LCDx} \) values.

Bits 9:7 DEAD[2:0] : Dead time duration

These bits are written by software to configure the length of the dead time between frames. During the dead time the COM and SEG voltage levels are held at 0 V to reduce the contrast without modifying the frame rate.

Bits 6:4 PON[2:0] : Pulse ON duration

These bits are written by software to define the pulse duration in terms of ck_ps pulses.

A short pulse leads to lower power consumption, but displays with high internal resistance may need a longer pulse to achieve satisfactory contrast.

Note that the pulse is never longer than one half prescaled LCD clock period.

000: 0

001: 1/ck_ps

010: 2/ck_ps

011: 3/ck_ps

100: 4/ck_ps

101: 5/ck_ps

110: 6/ck_ps

111: 7/ck_ps

PON duration example with LCDCLK = 32.768 kHz and PS=0x03:

000: 0 µs

001: 244 µs

010: 488 µs

011: 782 µs

100: 976 µs

101: 1.22 ms

110: 1.46 ms

111: 1.71 ms

Bit 3 UDDIE : Update display done interrupt enable

This bit is set and cleared by software.

0: LCD update display done interrupt disabled

1: LCD update display done interrupt enabled

Bit 2 Reserved, must be kept at reset value.

Bit 1 SOFIE : Start of frame interrupt enable

This bit is set and cleared by software.

0: LCD start-of-frame interrupt disabled

1: LCD start-of-frame interrupt enabled

Bit 0 HD : High drive enable

This bit is written by software to enable a low resistance divider. Displays with high internal resistance may need a longer drive time to achieve satisfactory contrast. This bit is useful in this case if some additional power consumption can be tolerated.

0: Permanent high drive disabled

1: Permanent high drive enabled. When HD = 1, PON[2:0] must be programmed to 001.

19.6.3 LCD status register (LCD_SR)

Address offset: 0x08

Reset value: 0x0000 0020

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.FCRSFRDYUDDUDRSOFENS
rrrrsrr

Bits 31:6 Reserved, must be kept at reset value.

Bit 5 FCRSF : LCD frame control register synchronization flag

This bit is set by hardware each time the LCD_FCR register is updated in the LCDCLK domain. It is cleared by hardware when writing to the LCD_FCR register.

0: LCD frame control register not yet synchronized

1: LCD frame control register synchronized

Bit 4 RDY : Ready flag

This bit is set and cleared by hardware. It indicates the status of the stepup converter.

0: Not ready

1: Stepup converter enabled and ready to provide the correct voltage

Bit 3 UDD : Update display done

This bit is set by hardware. It is cleared by writing 1 to UDDC in LCD_CLR. The bit set has priority over the clear.

0: No event

1: Update display request done. A UDD interrupt is generated if UDDIE = 1 in LCD_FCR.

Note: If the device is in Stop mode (PCLK not provided), UDD does not generate an interrupt even if UDDIE = 1. If the display is not enabled, the UDD interrupt never occurs.

Bit 2 UDR : Update display request

Each time software modifies the LCD_RAM, it must set this bit to transfer the updated data to the second level buffer. This bit stays set until the end of the update. During this time, the LCD_RAM is write protected.

0: No effect

1: Update display request

Note: When the display is disabled, the update is performed for all LCD_DISPLAY locations. When the display is enabled, the update is performed only for locations for which commons are active (depending on DUTY). For example if DUTY = 1/2, only the LCD_DISPLAY of COM0 and COM1 are updated.

Writing 0 on this bit or writing 1 when it is already 1 has no effect. This bit can be cleared by hardware only. It can be cleared only when LCDEN = 1

Bit 1 SOF : Start-of-frame flag

This bit is set by hardware at the beginning of a new frame, at the same time as the display data is updated. It is cleared by writing a 1 to SOFC in LCD_CLR. The bit clear has priority over the set.

0: No event

1: Start-of-frame event occurred. An LCD SOF interrupt is generated if SOFIE is set.

Bit 0 ENS : LCD enabled status

This bit is set and cleared by hardware. It indicates the LCD controller status.

0: LCD controller disabled

1: LCD controller enabled

Note: This bit is set immediately when LCDEN in LCD_CR goes from 0 to 1. On deactivation, it reflects the real LCD status. It becomes 0 at the end of the last displayed frame.

19.6.4 LCD clear register (LCD_CLR)

Address offset: 0x0C

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.UDDCRes.SOFCRes.
ww

Bits 31:4 Reserved, must be kept at reset value.

Bit 3 UDDC : Update display done clear

This bit is written by software to clear UDD in LCD_SR.

0: No effect

1: Clear UDD flag.

Bit 2 Reserved, must be kept at reset value.

Bit 1 SOFC : Start-of-frame flag clear

This bit is written by software to clear SOF in LCD_SR.

0: No effect

1: Clear SOF flag.

Bit 0 Reserved, must be kept at reset value.

19.6.5 LCD display memory (LCD_RAMx)

Address offset: \( 0x14 + 0x4 * x \) , ( \( x = 0, 2, 4, 6, 8, 10, 12, 14 \) )

Reset value: 0x0000 0000

31302928272625242322212019181716
SEGMENT_DATA[31:16]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
SEGMENT_DATA[15:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:0 SEGMENT_DATA[31:0] :

Each bit corresponds to one pixel of the LCD display.

0: Pixel inactive

1: Pixel active

19.6.6 LCD display memory (LCD_RAMx)

Address offset: \( 0x14 + 0x4 * x \) , ( \( x = 1, 3, 5, 7 \) )

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.SEGMENT_DATA[51:48]
rwrwrwrw
1514131211109876543210
SEGMENT_DATA[47:32]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:20 Reserved, must be kept at reset value.

Bits 19:0 SEGMENT_DATA[51:32]:

Each bit corresponds to one pixel of the LCD display.

0: Pixel inactive

1: Pixel active

19.6.7 LCD display memory (LCD_RAMx)

Address offset: 0x14 + 0x4 * x, (x = 9, 11, 13, 15)

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
SEGMENT_DATA[47:32]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:16 Reserved, must be kept at reset value.

Bits 15:0 SEGMENT_DATA[47:32]:

Each bit corresponds to one pixel of the LCD display.

0: Pixel inactive

1: Pixel active

19.6.8 LCD register map

Table 104. LCD register map and reset values

OffsetRegister name313029282726252423222120191817161514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
0x00LCD_CRBUFENMUX_SEGBIAS [1:0]DUTY [2:0]VSELLCDEN
Reset value000000000
0x04LCD_FCRPS[3:0]DIV[3:0]BLINK [1:0]BLINKF [2:0]CC[2:0]DEAD [2:0]PON[2:0]UDDIESOFIEHD
Reset value0000000000000000000000000
0x08LCD_SRFCRSFRDYUDDUDRSOFENS
Reset value100000
0x0CLCD_CLRUDDCSOFC
Reset value00

Table 104. LCD register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x14LCD_RAM
(COM0)
S31S30S29S28S27S26S25S24S23S22S21S20S19S18S17S16S15S14S13S12S11S10S09S08S07S06S05S04S03S02S01S00
00000000000000000000000000000000
0x1CLCD_RAM
(COM1)
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.S51S50S49S48S47S46S45S44S43S42S41S40S39S38S37S36S35S34S33S32
00000000000000000000
0x24LCD_RAM
(COM2)
S31S30S29S28S27S26S25S24S23S22S21S20S19S18S17S16S15S14S13S12S11S10S09S08S07S06S05S04S03S02S01S00
00000000000000000000000000000000
0x2CLCD_RAM
(COM3)
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.S51S50S49S48S47S46S45S44S43S42S41S40S39S38S37S36S35S34S33S32
00000000000000000000
0x34LCD_RAM
(COM4)
S31S30S29S28S27S26S25S24S23S22S21S20S19S18S17S16S15S14S13S12S11S10S09S08S07S06S05S04S03S02S01S00
00000000000000000000000000000000
0x3CLCD_RAM
(COM5)
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.S47S46S45S44S43S42S41S40S39S38S37S36S35S34S33S32
0000000000000000
0x44LCD_RAM
(COM6)
S31S30S29S28S27S26S25S24S23S22S21S20S19S18S17S16S15S14S13S12S11S10S09S08S07S06S05S04S03S02S01S00
00000000000000000000000000000000
0x48Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.S47S46S45S44S43S42S41S40S39S38S37S36S35S34S33S32
0000000000000000

Table 104. LCD register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
S31S30S29S28S27S26S25S24S23S22S21S20S19S18S17S16S15S14S13S12S11S10S09S08S07S06S05S04S03S02S01S00
0x4CLCD_RAM
(COM7)
00000000000000000000000000000000
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.S47S46S45S44S43S42S41S40S39S38S37S36S35S34S33S32
0x500000000000000000

Refer to Section 2.2 for the register boundary addresses table.