Display protocol
The device uses a Sharp LS021B7DD02 reflective memory-in-pixel LCD. The panel has 240 × 320 pixels.
Each subpixel has a one-bit latch. The panel retains the image without scan traffic.
The framebuffer uses RGB222. Each channel has four levels, and each pixel has 64 possible colors.
The FLPR writes pixels through a six-bit parallel bus. The M33 generates the continuous polarity waveform.
Signal paths
VA or VB rail.Do not stop VCOM, VA, or VB while the panel has power. A DC bias can damage the liquid crystal.
The hardware timer generates this waveform independently of the scan operation.
Pixel encoding
The panel makes four levels with area gradation. Each subpixel contains a large block and a small block.
Each two-bit channel has this mapping:
Level l | (MSB, LSB) | Lit area | Appears as |
|---|---|---|---|
| 0 | (0, 0) | 0 | black |
| 1 | (0, 1) | 1/3 | LSB / middle band |
| 2 | (1, 0) | 2/3 | MSB / top + bottom |
| 3 | (1, 1) | 3/3 | full (channel on) |
Use msb = (l >> 1) & 1 and lsb = l & 1. The packer does not need a lookup table.
Source-bus interleave
The six data lines carry one bit for each channel of two adjacent pixels.
| Lines | Pixel | Channel |
|---|---|---|
R[0] G[0] B[0] | even column | R / G / B |
R[1] G[1] B[1] | odd column | R / G / B |
Each BCK edge clocks one pixel pair. Thus, 120 pairs require 60 BCK cycles.
Present a new pair before each rising and falling edge. Do not hold one pair for a complete cycle.
Gate scan
The display has one gate line for each of its 320 rows. Write both area planes to the same gate line.
GCKHIGH selects the two-thirds MSB block.GCKLOW selects the one-third LSB block.
One GCK period writes one row. The rising edge advances the gate. The falling edge keeps the same gate selected.
GCK is high. Send the LSB plane while GCK is low. Pulse GEN after each plane.Writing a frame
A frame scans the 320 rows. Keep INTB high for the complete scan.
INTB = HIGH
GSP = pulse
send two leading dummy gate periods
for each row:
set GCK HIGH
shift the MSB plane
pulse GEN
set GCK LOW
shift the LSB plane
pulse GEN
send six trailing dummy gate periods
INTB = LOW
INTBLOW holds the current image.- One
GCKperiod advances one row. - Each row uses two
GENpulses. - Each plane uses 120 data words and four dummy words.
- Pulse
GSPat the start. Release it on the firstGCKedge.
Partial update
The presenter compares row hashes and sends changed row spans to the FLPR. The FLPR advances past unchanged rows without GEN pulses.
The FLPR writes all 240 columns of each changed row. It stops after the last changed row.
Thus, the scan time depends mainly on the number and position of changed rows.
Power-on, power-off, and retention
- During power-on, write a black frame. Wait at least 30 µs, and then start the COM waveform.
- During power-off, write the safe state before you stop the COM waveform.
- Refresh a static image at least once every two days.
Signal & timing reference
Pins
| Signal | Group | Rail | Role |
|---|---|---|---|
GSP | Gate | VDD2 (~5.0 V) | Gate start pulse — once per frame |
GCK | Gate | VDD2 | Gate clock and MSB/LSB phase select (HIGH = MSB/⅔, LOW = LSB/⅓); one period per row |
GEN | Gate | VDD2 | Gate output enable — pulsed once per phase to latch the selected block |
INTB | Gate | VDD2 | Frame envelope — HIGH for the whole frame; LOW = Hold (no write) |
BSP | Source | VDD1 (~3.2 V) | Sub-line (start-of-line) pulse |
BCK | Source | VDD1 | Source shift clock; 124 edge words per plane |
R[0] G[0] B[0] | Source data | VDD1 | Even-column R/G/B bit |
R[1] G[1] B[1] | Source data | VDD1 | Odd-column R/G/B bit |
VCOM | COM | — | Common AC reference (free-running ~60 Hz) |
VB | COM | — | In phase with VCOM — the "black" rail |
VA | COM | — | Inverse of VCOM — the "white" rail |
Timing
| Parameter | Value | Notes |
|---|---|---|
BCK max frequency | 0.758 MHz | Source/shift clock ceiling |
BCK minimum high / low | 660 ns each | Datasheet limit |
| COM frequency | 54–66 Hz (60 typ) | 48–52 % duty |
| COM edge (rise/fall) | ≤ 100 µs | Into ~56–77 nF per line; high-drive GPIO / buffer as needed |
GCK ↔ GEN setup & hold | ≥ 16.37 µs | Keep GEN clear of GCK edges |
GEN high width | ≥ 24.56 µs | Valid-output / latch window |
| Power-on settle (black → COM) | ≥ 30 µs | See power-on order above |
| Current full-frame scan | 44.1 ms | Measured on one development panel |
The current FLPR uses approximately 210 ns for each BCK half-period. This gives a 420 ns period and approximately 2.38 MHz. It exceeds the 0.758 MHz maximum and violates the 660 ns minimum high and low times.
This timing passed a visual test on one panel at room temperature. It is not production validation. See the timing record.
Power
The datasheet gives these typical module values. The values exclude COM capacitive-load current.
| State | Power |
|---|---|
| Hold / static | ≈ 32 µW |
| 1 Hz update | ≈ 45 µW |
| 30 Hz update | ≈ 290 µW |
Power increases with the update rate. Partial updates reduce the number of rows that the FLPR writes.
Implementation
- COM driver:
com.rsandcom_hw.rs - FLPR scan:
flpr_scan.c - Wire packer:
wire.rs - Presenter: Rendering pipeline