mirror of
https://github.com/FunKey-Project/FunKey-Project.github.io.git
synced 2025-12-12 18:28:51 +01:00
144 lines
6.1 KiB
Markdown
144 lines
6.1 KiB
Markdown
The second most important part in the **FunKey S** is certainly its
|
|
screen: in an overall form factor of roughly 45mm x 45mm x 15mm (1.75"
|
|
x 1.75" x 0.6"), it has to be comfortable enough to provide a good
|
|
gaming experience.
|
|
|
|
In theory, 1.75" would allows to shoehorn a 2.4" (diagonal) square
|
|
screen, but in practice, 2.4" screens are seldom square and more
|
|
rectangular in shape.
|
|
|
|
Unless you are a large manufacturer and selling millions of devices,
|
|
you are limited to using the existing screen sizes that are available
|
|
on the market, which most of the time were designed for a
|
|
long-forgotten specific devices (think of PDAs, MP3 players,
|
|
clam-shell phones, pods, etc.) and standard aspect ratio are either
|
|
1:1, 5:3 or 16:9. Thus, for a given pixel technology, this results in
|
|
rather standard screen sizes.
|
|
|
|
So the next available size down are 2" and 1.8", but these screens
|
|
tend to be quite thick and based on an older technology, so their
|
|
typical resolution is rather limited @ 128x160 pixels: too small for
|
|
gamers.
|
|
|
|
Still going down in size, you can find 1.5" to 1.55" screens with an
|
|
interesting resolution of 240x240 or even 320 x 320 ("Retina") pixels,
|
|
but most of them use a fast MIPI DSi interface. These particular
|
|
screens were popular as they were used in the 6th-generation "square"
|
|
iPods, but unfortunately, they require a dedicated controller on the
|
|
host side, which is only available in higher-end SoC.
|
|
|
|
Another important characteristic of the required screen is that it
|
|
needs to have a narrow flex cable in order to be rolled into the hinge
|
|
(like a _fly-paper_) in order to spread the mechanical flex constraint
|
|
over several loop rather than at always the same section, resulting in
|
|
less wear and an expected longer lifespan.
|
|
|
|
Fortunately, we found this 1.54" LCD screen on AliBaba:
|
|
|
|

|
|
|
|
What makes this screen special is its standard SPI interface, which
|
|
only requires a few wires and thus a narrow flex cable like the MIPI
|
|
DSi interface, so it is easy to roll into a hinge. But unlike the MIPI
|
|
DSi one, the SPI interface is readily available on most of the SoC,
|
|
including the Allwinner V3s.
|
|
|
|
This 1.54" display features a 240x240 16/18-bit full color pixel
|
|
resolution and is an **IPS** display, so the color looks great up to
|
|
80 degrees off-axis in any direction.
|
|
|
|
However, in order to achieve a 50 fps @ 240 x 240 pixel resolution in
|
|
RGB565 (2 bytes / pixel), this requires a ~44 MHz SPI clock rate,
|
|
which is rather high.
|
|
|
|
Once again, we were fortunate as both the V3s CPU and the screen
|
|
built-in controller (a Sitronix [ST7789V][1]) both support this high
|
|
clock speed (after checking with the manufacturer and despite the
|
|
controller datasheet that specifies only a serial clock cycle (Write)
|
|
of 66 ns or 15 MHz!).
|
|
|
|
We were even luckier as its backlight consists in 3 white LEDs in
|
|
parallel and not in series, such that no additional step-up DC-DC
|
|
converter is required, as a standard 3.3V / 60 mA (typical) power
|
|
supply is sufficient. Of course, we won't be able to drive this
|
|
current directly from a CPU GPIO and the backlight will require an
|
|
additional transistor to interface to the LCD backlight.
|
|
|
|
Its flex cable requires a mating Hirose 0.4 mm pitch
|
|
[DF37NB-24DS-0.4V][2] dual row SMT connector, out of which only one
|
|
single row is actually used.
|
|
|
|
## Customization
|
|
|
|
Unfortunately, the flex cable for the stock LCD screen we found does
|
|
not match our particular **FunKey S** mechanical design.
|
|
|
|
For the prototypes, we designed custom flex extension cables for a ~
|
|
$100 cost, but we had to design [our own custom flex][3] and have this
|
|
standard screen assembly attached to it for mass production, with a
|
|
one-time tooling fee of ~ $800.
|
|
|
|
## Schematic
|
|
|
|
The schematic is quite simple:
|
|
|
|
{.lightbox}
|
|
|
|
The main component is of course the Hirose screen connector **J3**,
|
|
with the following signals:
|
|
|
|
- LEDA: the backlight LED common Anode connection (+)
|
|
- GND
|
|
- +3V3 power supply
|
|
- /SPI_CS: SPI Chip Select
|
|
- SPI_MOSI: SPI Master Out / Slave In
|
|
- SPI_CLK: SPI Clock
|
|
- TE: Tearing Effect sync signal from the screen
|
|
- RS: LCD-specific Register/Memory Select (or Data/Control Select)
|
|
- LCD_RESET: LCD Reset
|
|
|
|
All data signals feature an ESD TVS protection diode **D19-D24** and
|
|
**D37**, and except for the power supplies and LEDA + LCD_RESET and TE
|
|
signals, all signals are directly connected to the V3s CPU's SPI
|
|
interface, so there is not much to say about these.
|
|
|
|
The LCD_RESET signal is controlled by a V3s GPIO (PB2 on pin 41).
|
|
|
|
The TE signal from the screen controller is fed to an
|
|
interrupt-enabled input pin PB1 (pin 40) in order to synchronize the
|
|
sending of data to the screen with its inactive period in order to
|
|
avoid the hardware tearing effect.
|
|
|
|
## Backlight PWM
|
|
|
|
The backlight control requires a few more components: a MOSFET-P
|
|
transistor **Q1** and 2 resistors **R5** and **R7** to provide its
|
|
polarization, more on this below.
|
|
|
|
As the backlight LEDs cathode (-) pin are directly tied to GND within
|
|
the screen, we need to drive these LEDs "from the high-side",
|
|
i.e. between the +3V3 power supply and the LEDA pin, so a MOSFET-P
|
|
transistor is necessary:
|
|
|
|
{.lightbox}
|
|
|
|
As we want the backlight to be on by default, we need to drive it to
|
|
GND by default: this is the role of **R7**. The role of **R5** is then
|
|
to make sure that -Vgs is driven below its threshold voltage and turns
|
|
off the transistor when the CPU drives a GPIO high.
|
|
|
|
As an ultimate sophistication, we can drive the backlight from the CPU
|
|
using one of its built-in PWM controllers PWM0 with a varying
|
|
duty-cycle, thus controlling the LCD backlight brightness
|
|
accurately. For this purpose, the other end of the **R5** resistor is
|
|
connected to the PB4 output (pin 43) on the V3s, wich provides this
|
|
function.
|
|
|
|
[1]: https://www.numworks.com/shared/binary/datasheets/st7789v-lcd-controller-73f8bc3e.pdf
|
|
[2]: https://github.com/FunKey-Project/FunKey-S-Hardware/blob/master/Datasheets/1811071030_HRS-Hirose-DF37NC-24DS-0-4V-51_C324720.pdf
|
|
[3]: https://github.com/FunKey-Project/FunKey-S-Hardware/blob/master/Datasheets/DISPLAY%20-%20SF-TC154B-8737A-N%20-%20CUSTOM%20FLEX%20-%200.3.PDF
|
|
|
|
--8<--
|
|
includes/glossary.md
|
|
--8<--
|