I’m leaving this here in case someone else might want to try.
I wasn’t successful in getting a piscreen compatible display to work via SPI.
what I did:
-
enabled spidev0.0 this way: https://github.com/rt-net/JetsonNano_DT_SPI/tree/R32.2.1
-
tested spi loopback like this:
root@jetson:/home/jetson# sudo cat /sys/kernel/debug/tegra_gpio
Name:Bank:Port CNF OE OUT IN INT_STA INT_ENB INT_LVL
A: 0:0 64 40 40 04 00 00 000000
B: 0:1 f0 00 00 00 00 00 000000
C: 0:2 00 00 00 00 00 00 000000
jetson@jetson:~/Work/spi$ sudo ./spidev_test -D /dev/spidev0.0 -v -p “1234abcd”
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
TX | 31 32 33 34 61 62 63 64 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ |1234abcd|
RX | 31 32 33 34 61 62 63 64 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ |1234abcd| -
build kernel modules for fbtft in drivers/staging to include fbtft_device and fb_ili9486
used this repo https://github.com/JetsonHacksNano/buildKernelAndModules -
load the kernel module after boot
modprobe fbtft_device name=piscreen rotate=90 debug=5
[ 586.907843] fbtft_device: module is from the staging directory, the quality is unknown, you have been warned.
[ 586.918842] spidev spi0.0: spidev spi0.0 20000kHz 8 bits mode=0x00
[ 586.918852] qspi_mtd spi32766.0: MX25U3235F spi32766.0 104000kHz 8 bits mode=0x00
[ 586.919020] spidev spi0.0: Deleting spi0.0
[ 586.919785] fbtft_device: GPIOS used by ‘piscreen’:
[ 586.919791] fbtft_device: ‘reset’ = GPIO25
[ 586.919795] fbtft_device: ‘dc’ = GPIO24
[ 586.919798] fbtft_device: ‘led’ = GPIO22
[ 586.919808] qspi_mtd spi32766.0: MX25U3235F spi32766.0 104000kHz 8 bits mode=0x00
[ 586.919814] spi spi0.0: fb_ili9486 spi0.0 32000kHz 8 bits mode=0x00
[ 586.936431] fb_ili9486: module is from the staging directory, the quality is unknown, you have been warned.
[ 586.947016] fb_ili9486 spi0.0: fbtft_request_gpios: ‘reset’ = GPIO25
[ 586.947032] fb_ili9486 spi0.0: fbtft_request_gpios: ‘dc’ = GPIO24
[ 586.947046] fb_ili9486 spi0.0: fbtft_request_gpios: ‘led’ = GPIO22
[ 586.947051] fb_ili9486 spi0.0: fbtft_verify_gpios()
[ 586.947057] fb_ili9486 spi0.0: fbtft_reset()
[ 587.067107] fb_ili9486 spi0.0: init: write(0xB0) 0x00
[ 587.067437] fb_ili9486 spi0.0: init: write(0x11)
[ 587.067500] fb_ili9486 spi0.0: init: mdelay(250)
[ 587.317617] fb_ili9486 spi0.0: init: write(0x3A) 0x55
[ 587.317886] fb_ili9486 spi0.0: init: write(0xC2) 0x44
[ 587.318772] fb_ili9486 spi0.0: init: write(0xC5) 0x00 0x00 0x00 0x00
[ 587.318929] fb_ili9486 spi0.0: init: write(0xE0) 0x0F 0x1F 0x1C 0x0C 0x0F 0x08 0x48 0x98 0x37 0x0A 0x13 0x04 0x11 0x0D 0x00
[ 587.319081] fb_ili9486 spi0.0: init: write(0xE1) 0x0F 0x32 0x2E 0x0B 0x0D 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
[ 587.319219] fb_ili9486 spi0.0: init: write(0xE2) 0x0F 0x32 0x2E 0x0B 0x0D 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
[ 587.319341] fb_ili9486 spi0.0: init: write(0x11)
[ 587.319418] fb_ili9486 spi0.0: init: write(0x29)
[ 587.319577] fb_ili9486 spi0.0: fbtft_update_display(start_line=0, end_line=319)
[ 587.425507] fb_ili9486 spi0.0: Display update: 2832 kB/s, fps=0
[ 587.425927] graphics fb2: fb_ili9486 frame buffer, 480x320, 300 KiB video memory, 4 KiB DMA buffer memory, fps=20, spi0.0 at 32 MHz
[ 587.425935] fb_ili9486 spi0.0: fbtft_backlight_update_status: polarity=1, power=0, fb_blank=0
rmmod fbtft_device
[ 630.913826] fb_ili9486 spi0.0: fbtft_remove_common()
[ 630.913837] fb_ili9486 spi0.0: fbtft_backlight_update_status: polarity=1, power=4, fb_blank=0
- the display remains white - won’t initialize
I tested the display on raspberry pi 2 and it worked with no issues