Skip to content

wrobell/smemlcd

Repository files navigation

Introduction
============
The smemlcd library provides C library (with Python 3 bindings) for Sharp
Memory LCDs

    http://www.sharpmemorylcd.com/

At the moment only 2.7" LCD screen (LS027B7DH01) is supported.

The screen was tested with Raspberry Pi, Arietta G25 and Kuzyatech Sharp
Memory LCD breakout A2

    https://www.tindie.com/products/kuzyatech/sharp-memory-lcd-breakout-a2/

Connecting 2.7" LCD
===================
The LCD should be connected to a board using the following connection
scheme::

    Breakout    Raspberry Pi     Arietta G25
    ---------------------------------------
    VIN         3V3 Power        3V3 Power
    GND         Ground           Ground
    DISP        GPIO 25          PA25
    SCS         GPIO 24          PA24
    SI          GPIO 10 (MOSI)   PA22 (SPI1 MOSI)
    SCLK        GPIO 11 (SCLK)   PA23 (SPI1 CK)

SPI Message Length
==================
SPI message length limit is 4096 bytes by default. For 2.7" screen it has
to be increased to 12482 bytes.

If spidev module is built into kernel, then parameter::

    spidev.bufsiz=12482

should be added into /boot/cmdline.txt file (Raspberry Pi) or bootloader
(i.e. Arietta G25).

Otherwise, create /etc/modprobe.d/spidev.conf file with the following
contents::

    options spidev bufsiz=12482

Compiling Library
=================
The library build system uses GNU Autotools. To build the library one has
to execute `configure` script followed by `make` command. The `BOARD`
variable has to be passed to `configure` script to build the library for
specific board, i.e.

    $ ./configure BOARD=at91

will build the library for Arietta G25 board.

The list of boards and `BOARD` variable values is contained in the table
below::

    Board           `BOARD` value
    -----------------------------
    Raspberry Pi    rpi
    Arietta G25     at91

Using Library
=============
The library is very basic and does not provide any drawing primitives.
Additional library like PIL or Cairo should be used to create framebuffer,
draw in the framebuffer and finally send the framebuffer to a LCD screen.

See `examples` directory for various examples.