Waveshare LCDs
Instructions to run the Waveshare 1.69in LCDs on the Jetson carrier boards
Note the Linux BCM mappings in the image shown. Theoretically with the Jetson.GPIO library, you are able to use either the physical board pin mapping or the BCM mapping, but this process has only been vetted for the BCM mode. When referring to pins in the Python package, use the BCM mapping. For example, if you use pin 32, use "D12" when referring to the pin. With the Adafruit package, this is written as "board.D12"
The 1.5 Inch LCD Module page actually tells you how to set up the Jetson for the Waveshare LCDs. However, since it uses a different controller, the actual firmware needs to be modified.
You can find the draft changes repo here.
Steps to reproduce:
- On Jetson, use the jetson-io to enable SPI1. Steps are shown in the Jetson Nano section in the 1.5in LCD Guide. Follow the "Enable SPI" and "Library Installation" sections. Stop before the "Download Example" section.
- Power down the Jetson and wire up the display using the following pinout:
Function | Jetson Pin | BCM Pin |
---|---|---|
3v3 | 1 | 3v3 |
GND | 6 | GND |
DIN/MOSI | 19 | D10 (Automatically selected by Jetson-GPIO) |
SCK | 23 | D11 (Automatically selected) |
CS | 24 | CE0 (Automatically selected) |
DC | 22 | D25 |
RST | 31 | D6 |
BL | 32 | D12 |
Clone the repository and launch run.py. You may need to install the following pip dependencies:
- Jetson.GPIO
- adafruit-circuitpython-busdevice
- spidev
- adafruit-blinka-displayio
- adafruit-circuitpython-rgb-display
- adafruit-circuitpython-st7789
- Pillow
You may also need to run "sudo modprobe spidev" to get the spidev driver loaded.
The example code should draw some shapes every 2 seconds, followed by the Waveshare logo, then a Yuan dynasty poem, and lastly a series of images.
Testing with 2 LCDsEdit
Ideally, we run both screens off the same SPI line and use the built-in chip-select pins on the Jetson. However, based on current testing, the Jetson-IO CS functionality does not work. If a device is connected to CS1 and CS0, CS0 will always remain low. The code in the repository assumes you use both spi lines (SPI0 and SPI2, so spidev0.0 and spidev2.0 respectively).
Wire up the second display as such:
Function | Jetson Pin | BCM Pin |
---|---|---|
3v3 | 17 | 3v3 |
GND | 9 | GND |
DIN/MOSI | 37 | D26 (Automatically selected by Jetson-GPIO) |
SCK | 13 | D27 (Automatically selected) |
CS | 18 | D24 (Automatically selected) |
DC | 36 | D16 |
RST | 38 | D20 |
BL | 33 | D13 |
The code in the repository should already specify these pins for the second screen.