mirror of
https://github.com/goodtft/LCD-show.git
synced 2025-01-20 03:52:15 +01:00
83 lines
3.8 KiB
C
83 lines
3.8 KiB
C
#pragma once
|
|
|
|
#if defined(ILI9341) || defined(ILI9340)
|
|
|
|
// SPI_BUS_CLOCK_DIVISOR specifies how fast to communicate the SPI bus at. Possible values are 4, 6, 8, 10, 12, ... Smaller
|
|
// values are faster. On my PiTFT 2.8 and Waveshare32b displays, divisor value of 4 does not work, and
|
|
// 6 is the fastest possible. While developing, it was observed that a value of 12 or higher did not
|
|
// actually work either, and only 6, 8 and 10 were functioning properly.
|
|
|
|
// On Adafruit PiTFT 2.8", the following speed configurations have been tested (on a Pi 3B):
|
|
// core_freq=400: CDIV=6, results in 66.67MHz, works
|
|
// core_freq=294: CDIV=4, results in 73.50MHz, works
|
|
// core_freq=320: CDIV=4, would result in 80.00MHz, but this was too fast for the display
|
|
// core_freq=300: CDIV=4, would result in 75.00MHz, and would work for ~99% of the time, but develop rare occassional pixel glitches once a minute or so.
|
|
// core_freq=296: CDIV=4, would result in 74.50MHz, would produce tiny individual pixel glitches very rarely, once every few 10 minutes or so.
|
|
|
|
// On Waveshare 3.2", the following speed configurations have been observed to work (on a Pi 3B):
|
|
// core_freq=400: CDIV=6, results in 66.67MHz, works
|
|
// core_freq=310: CDIV=4, results in 77.50MHz, works
|
|
// core_freq=320: CDIV=4, would result in 80.00MHz, would work most of the time, but produced random occassional glitches every few minutes or so.
|
|
|
|
// On Adafruit 2.2" PiTFT HAT - 320x240 Display with ILI9340 controller, the following speed configurations have been tested (on a Pi 3B):
|
|
// core_freq=338: CDIV=4, results in 84.5MHz, works
|
|
// core_freq=339: CDIV=4, would result in 84.75MHz, would work most of the time, but every few minutes generated random glitched pixels.
|
|
|
|
// Data specific to the ILI9341 controller
|
|
#define DISPLAY_SET_CURSOR_X 0x2A
|
|
#define DISPLAY_SET_CURSOR_Y 0x2B
|
|
#define DISPLAY_WRITE_PIXELS 0x2C
|
|
|
|
// ILI9341 displays are able to update at any rate between 61Hz to up to 119Hz. Default at power on is 70Hz.
|
|
#define ILI9341_FRAMERATE_61_HZ 0x1F
|
|
#define ILI9341_FRAMERATE_63_HZ 0x1E
|
|
#define ILI9341_FRAMERATE_65_HZ 0x1D
|
|
#define ILI9341_FRAMERATE_68_HZ 0x1C
|
|
#define ILI9341_FRAMERATE_70_HZ 0x1B
|
|
#define ILI9341_FRAMERATE_73_HZ 0x1A
|
|
#define ILI9341_FRAMERATE_76_HZ 0x19
|
|
#define ILI9341_FRAMERATE_79_HZ 0x18
|
|
#define ILI9341_FRAMERATE_83_HZ 0x17
|
|
#define ILI9341_FRAMERATE_86_HZ 0x16
|
|
#define ILI9341_FRAMERATE_90_HZ 0x15
|
|
#define ILI9341_FRAMERATE_95_HZ 0x14
|
|
#define ILI9341_FRAMERATE_100_HZ 0x13
|
|
#define ILI9341_FRAMERATE_106_HZ 0x12
|
|
#define ILI9341_FRAMERATE_112_HZ 0x11
|
|
#define ILI9341_FRAMERATE_119_HZ 0x10
|
|
|
|
// Visually estimating NES Super Mario Bros 3 "match mushroom, flower, star" arcade game, 119Hz gives visually
|
|
// most pleasing result, so default to using that. You can also try other settings above. 119 Hz should give
|
|
// lowest latency, perhaps 61 Hz might give least amount of tearing, although this can be quite subjective.
|
|
#define ILI9341_UPDATE_FRAMERATE ILI9341_FRAMERATE_119_HZ
|
|
|
|
// Appears in ILI9341 Data Sheet v1.11 (2011/06/10), but not in older v1.02 (2010/12/06). This has a subtle effect on colors/saturation.
|
|
// Valid values are 0x20 and 0x30. Spec says 0x20 is default at boot, but doesn't seem so, more like 0x00 is default, giving supersaturated colors. I like 0x30 best.
|
|
// Value 0x30 doesn't seem to be available on ILI9340.
|
|
#define ILI9341_PUMP_CONTROL_2XVCI 0x20
|
|
#define ILI9341_PUMP_CONTROL_3XVCI 0x30
|
|
|
|
#ifdef ILI9341
|
|
#define ILI9341_PUMP_CONTROL ILI9341_PUMP_CONTROL_3XVCI
|
|
#else
|
|
#define ILI9341_PUMP_CONTROL ILI9341_PUMP_CONTROL_2XVCI
|
|
#endif
|
|
|
|
|
|
#define DISPLAY_NATIVE_WIDTH 240
|
|
#define DISPLAY_NATIVE_HEIGHT 320
|
|
|
|
#ifdef ADAFRUIT_ILI9341_PITFT
|
|
#include "pitft_28r_ili9341.h"
|
|
#elif defined(ADAFRUIT_HX8357D_PITFT)
|
|
#include "pitft_35r_hx8357d.h"
|
|
#elif defined(FREEPLAYTECH_WAVESHARE32B)
|
|
#include "freeplaytech_waveshare32b.h"
|
|
#endif
|
|
|
|
#define InitSPIDisplay InitILI9341
|
|
|
|
void InitILI9341(void);
|
|
|
|
#endif
|