ili9341 SPI TFT screen on buster

ili9341 SPI TFT screen on buster

The thrill of a new gadget! A brand new ILI9341 SPI TFT LCD just arrived on my doorstep, fresh from the digital depths of the online marketplace. Now, one burning question consumes me: does it work?

Wiring

For a quick and simple check I’m just using the default spi channel 0 from raspberry pi gpio, and here is the connection between them :

No ili9341 GPIO Note
1 Vcc Pin1 3v3
2 Gnd Pin6 Gnd
3 CS GPIO8 SPI1 CE0
4 RST GPIO25 Rst
5 DC GPIO24 D/C
6 MOSI GPIO10 SPI0 MOSI
7 SCLK GPIO11 SPI0 SCLK
8 LED GPIO18 Backlight
9 MISO GPIO9 SPI1 MISO

Software

On this test I’m using rpi 3A+ because … dunno, it’s just laying around on my drawer while the others still wired to some my unfinished project (you may use whatever rpi model from zero to rpi 4 as long as have gpio tho). Ok, so … I fire up a balena etcher to write a raspbian buster lite unto a flashdisk on my laptop and wait several minutes until complete and then fire up on rpi 3A+.

First thing after boot up, I use raspi-config to adjust localization, disable overscan and enable SPI interfacing and follow by a reboot.

After reboot, the spidev is active and I can do a modprobe for fbtft device :

sudo modprobe fbtft_device custom name=fb_ili9341 gpios=reset:25,dc:24,led:18 speed=16000000

The backlight of the LCD should kick in and I can see a faint glow on the screen which of course, is a good sign. Then to shows and sets mapping between consoles and LCD framebuffer I use :

con2fbmap 1 1

… and yaaay, it’s working.

alter-text

I’ve got what i want, the lcd is working good, but while the night is still young, I also want to test the fbcp which I always use for my other lcd projects on this ili9341 lcd. So, first thing first, I have to make this lcd load module stick on every boot before running the fbcp module.

I edit /etc/modules and add this module to load during boot :

spi-bcm2835
fbtft_device

and for the extra parameter setting for this lcd, I create /etc/modprobe.d/fbtft.conf and fill it in with this setting :

options fbtft_device name=fb_ili9341 gpios=reset:25,dc:24,led:18 bgr=1 rotate=90 speed=16000000 custom=1

do note, I use bgr color mode and rotate the screen to landscape to meet my needs. Then I reboot.
After reboot, I can see the lcd backlight is lit which tell me the module is loaded properly and all is good.

Now, for framebuffer copy tool aka fbcp, I do a quick compile as below :

sudo apt-get install cmake
git clone https://github.com/tasanakorn/rpi-fbcp
cd rpi-fbcp/
mkdir build
cd build/
cmake ../
make
sudo install fbcp

and then finally run fbcp :

fbcp

Great, fbcp is working without problem.

alter-text

To make it stick so fbcp will always run after boot you can use /etc/rc.local or using systemd or whatever it may suit you but for me right now, this is enough. I know the lcd that I buy is working good and ready for the next adventure.

comments powered by Disqus

Related Posts

Running Docker in LXC Container

Running Docker in LXC Container

VMs require more resources from the hypervisor and much slower compare to lxc container especially the boot speeds.

Read More
Northern Lights

Northern Lights

Weird, beautiful, eerie, and kind of mystical.

Read More
The Lonely Maiden

The Lonely Maiden

wish you were here ... I miss you like hell.

Read More