mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
initial commit of support for CYD. Displays graphics on LCD.
This commit is contained in:
parent
af38afd77b
commit
e3f61b0e6e
237
boards/ESP32_CYD.py
Executable file
237
boards/ESP32_CYD.py
Executable file
@ -0,0 +1,237 @@
|
|||||||
|
#!/bin/false
|
||||||
|
# This file is part of Espruino, a JavaScript interpreter for Microcontrollers
|
||||||
|
#
|
||||||
|
# Copyright (C) 2013 Gordon Williams <gw@pur3.co.uk>
|
||||||
|
#
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
#
|
||||||
|
# ----------------------------------------------------------------------------------------
|
||||||
|
# This file contains information for a specific board - the available pins, and where LEDs,
|
||||||
|
# Buttons, and other in-built peripherals are. It is used to build documentation as well
|
||||||
|
# as various source and header files for Espruino.
|
||||||
|
# ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# A Note about the 'variables' parameter on ESP32 Builds
|
||||||
|
# ------------------------------------------------------
|
||||||
|
#
|
||||||
|
# For the ESP32 build, the number of JsVars is governed by two factors:
|
||||||
|
# * Available memory
|
||||||
|
# * Maximum number of JsVars for the used JsVar format
|
||||||
|
#
|
||||||
|
# This setting will chose the optimum JsVar format for a given number
|
||||||
|
# of JsVars.
|
||||||
|
|
||||||
|
# If you add PSRAM to your ESP32 or compile with modules removed, you
|
||||||
|
# may wish to select a value using this table:
|
||||||
|
#
|
||||||
|
# Value | Max JsVars | Bytes per JsVar | Maximum References |
|
||||||
|
# ------+--------------+-----------------+--------------------+
|
||||||
|
# 4095 | 4095 | 13 | 255 |
|
||||||
|
# 8191 | 8191 | 13 | 15 |
|
||||||
|
# 16383 | 16383 | 14 | 255 |
|
||||||
|
# 65535 | 65535 | 16 | 255 |
|
||||||
|
# ------+--------------+-----------------+--------------------+
|
||||||
|
|
||||||
|
# CAUTION: Chosing 8191 only allows 15 references to a variable. This
|
||||||
|
# may be too restrictive to run some code.
|
||||||
|
|
||||||
|
# Using too large a JsVar format may limit how many JsVars can fit into
|
||||||
|
# available memory. Using too small a JsVar format will under utilise
|
||||||
|
# available memory.
|
||||||
|
|
||||||
|
|
||||||
|
import pinutils;
|
||||||
|
info = {
|
||||||
|
'name' : "ESP32_CYD",
|
||||||
|
'espruino_page_link' : 'ESP32',
|
||||||
|
'default_console' : "EV_SERIAL1",
|
||||||
|
'default_console_baudrate' : "115200",
|
||||||
|
'variables' : 16383, # See note above
|
||||||
|
'io_buffer_size' : 1024, # How big is the input buffer (in 4 byte words). Default is 256, but this makes us less likely to drop data
|
||||||
|
'binary_name' : 'espruino_%v_esp32_cyd.bin',
|
||||||
|
'build' : {
|
||||||
|
'optimizeflags' : '-Og',
|
||||||
|
'libraries' : [
|
||||||
|
'ESP32',
|
||||||
|
'NET',
|
||||||
|
'GRAPHICS',
|
||||||
|
'CRYPTO','SHA256','SHA512',
|
||||||
|
'TLS',
|
||||||
|
'TELNET',
|
||||||
|
# 'NEOPIXEL',
|
||||||
|
'FILESYSTEM',
|
||||||
|
'BLUETOOTH',
|
||||||
|
'LCD_SPI_UNBUF'
|
||||||
|
],
|
||||||
|
'makefile' : [
|
||||||
|
'DEFINES+=-DESP_PLATFORM -DESP32=1',
|
||||||
|
'DEFINES+=-DESP_STACK_SIZE=25000',
|
||||||
|
'DEFINES+=-DJSVAR_MALLOC', # Allocate space for variables at jsvInit time
|
||||||
|
'DEFINES+=-DESPR_GRAPHICS_INTERNAL -DESPR_GRAPHICS_SELF_INIT', # ensure graphics instantiates itself
|
||||||
|
'DEFINES+=-DUSE_FONT_6X8 -DSPISENDMANY_BUFFER_SIZE=1600',
|
||||||
|
'ESP32_FLASH_MAX=1572864'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
chip = {
|
||||||
|
'part' : "ESP32",
|
||||||
|
'family' : "ESP32",
|
||||||
|
'package' : "",
|
||||||
|
'ram' : 512,
|
||||||
|
'flash' : 0,
|
||||||
|
'speed' : 240,
|
||||||
|
'usart' : 3,
|
||||||
|
'spi' : 2,
|
||||||
|
'i2c' : 2,
|
||||||
|
'adc' : 2,
|
||||||
|
'dac' : 0,
|
||||||
|
'saved_code' : {
|
||||||
|
'address' : 0x320000,
|
||||||
|
'page_size' : 4096,
|
||||||
|
'pages' : 64,
|
||||||
|
'flash_available' : 1344, # firmware can be up to this size - see partitions_espruino.csv
|
||||||
|
},
|
||||||
|
};
|
||||||
|
devices = {
|
||||||
|
#https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/blob/main/PINS.md
|
||||||
|
'LED1' : { 'pin' : 'D4' }, # FIXME swap polarity of LEDs
|
||||||
|
'LED2' : { 'pin' : 'D16' },
|
||||||
|
'LED3' : { 'pin' : 'D17' },
|
||||||
|
'BTN1' : { 'pin' : 'D0', "inverted":1, 'pinstate' : 'IN_PULLUP' }, # FIXME swap polarity of button
|
||||||
|
'SD' : { 'pin_cs' : 'D5',
|
||||||
|
'pin_di' : 'D23',
|
||||||
|
'pin_do' : 'D19',
|
||||||
|
'pin_clk' : 'D18' },
|
||||||
|
'QWIIC0' : { # CN1
|
||||||
|
'pin_sda' : 'D22',
|
||||||
|
'pin_scl' : 'D27'
|
||||||
|
},
|
||||||
|
'QWIIC1' : { # P1
|
||||||
|
'pin_sda' : 'D1',
|
||||||
|
'pin_scl' : 'D3'
|
||||||
|
},
|
||||||
|
'QWIIC3' : { # P3
|
||||||
|
'pin_sda' : 'D35',
|
||||||
|
'pin_scl' : 'D22',
|
||||||
|
'pin_vcc' : 'D21',
|
||||||
|
},
|
||||||
|
'TOUCHSCREEN' : { # XPT2046
|
||||||
|
'pin_irq' : 'D36',
|
||||||
|
'pin_cs' : 'D33',
|
||||||
|
'pin_sck' : 'D25',
|
||||||
|
'pin_miso' : 'D39',
|
||||||
|
'pin_mosi' : 'D32'
|
||||||
|
},
|
||||||
|
'LCD' : {
|
||||||
|
'width' : 320, 'height' : 240, 'bpp' : 16, 'controller' : 'ili9341',
|
||||||
|
'pin_dc' : 'D2',
|
||||||
|
'pin_cs' : 'D15',
|
||||||
|
'pin_sck' : 'D14',
|
||||||
|
'pin_mosi' : 'D13',
|
||||||
|
'pin_miso' : 'D12',
|
||||||
|
'pin_bl' : 'D21', # backlight pwm
|
||||||
|
'spi_device' : 'EV_SPI1'
|
||||||
|
},
|
||||||
|
# LCD on pin 34
|
||||||
|
};
|
||||||
|
|
||||||
|
# left-right, or top-bottom order
|
||||||
|
board_esp32 = {
|
||||||
|
};
|
||||||
|
board_esp32["_css"] = """
|
||||||
|
#board {
|
||||||
|
width: 600px;
|
||||||
|
height: 435px;
|
||||||
|
left: 50px;
|
||||||
|
top: 170px;
|
||||||
|
background-image: url(img/ESP32_CYD.jpg);
|
||||||
|
}
|
||||||
|
#boardcontainer {
|
||||||
|
height: 700px;
|
||||||
|
}
|
||||||
|
#board #right {
|
||||||
|
top: 80px;
|
||||||
|
left: 600px;
|
||||||
|
}
|
||||||
|
#board #top {
|
||||||
|
bottom: 440px;
|
||||||
|
left: 155px;
|
||||||
|
}
|
||||||
|
#board #bottom {
|
||||||
|
top: 435px;
|
||||||
|
left: 155px;
|
||||||
|
}
|
||||||
|
#board .rightpin {
|
||||||
|
height: 28px;
|
||||||
|
}
|
||||||
|
#board .toppin, #board .bottompin {
|
||||||
|
width: 24px;
|
||||||
|
}
|
||||||
|
""";
|
||||||
|
|
||||||
|
boards = [ board_esp32 ];
|
||||||
|
|
||||||
|
def get_pins():
|
||||||
|
|
||||||
|
|
||||||
|
# { "name":"PD20", "sortingname":"D20", "port":"D", "num":"30", "functions":{ "I2C1_SDA":0 }, "csv":{} },
|
||||||
|
|
||||||
|
|
||||||
|
# pins = pinutils.generate_pins(0,5);
|
||||||
|
##6-11 are used by Flash chip
|
||||||
|
# pins.extend(pinutils.generate_pins(12,23));
|
||||||
|
|
||||||
|
# pins.extend(pinutils.generate_pins(25,27));
|
||||||
|
##32-33 are routed to rtc for xtal
|
||||||
|
# pins.extend(pinutils.generate_pins(34,39));
|
||||||
|
|
||||||
|
# pins = pinutils.fill_gaps_in_pin_list(pins);
|
||||||
|
|
||||||
|
pins = pinutils.generate_pins(0,39) # 40 General Purpose I/O Pins.
|
||||||
|
|
||||||
|
pinutils.findpin(pins, "PD36", True)["functions"]["ADC1_IN0"]=0;
|
||||||
|
pinutils.findpin(pins, "PD37", True)["functions"]["ADC1_IN1"]=0;
|
||||||
|
pinutils.findpin(pins, "PD38", True)["functions"]["ADC1_IN2"]=0;
|
||||||
|
pinutils.findpin(pins, "PD39", True)["functions"]["ADC1_IN3"]=0;
|
||||||
|
pinutils.findpin(pins, "PD32", True)["functions"]["ADC1_IN4"]=0;
|
||||||
|
pinutils.findpin(pins, "PD33", True)["functions"]["ADC1_IN5"]=0;
|
||||||
|
pinutils.findpin(pins, "PD34", True)["functions"]["ADC1_IN6"]=0;
|
||||||
|
pinutils.findpin(pins, "PD35", True)["functions"]["ADC1_IN7"]=0;
|
||||||
|
|
||||||
|
#ADC2 not supported yet, waiting for driver from espressif
|
||||||
|
# pinutils.findpin(pins, "PD4", True)["functions"]["ADC2_IN0"]=0;
|
||||||
|
# pinutils.findpin(pins, "PD0", True)["functions"]["ADC2_IN1"]=0;
|
||||||
|
# pinutils.findpin(pins, "PD2", True)["functions"]["ADC2_IN2"]=0;
|
||||||
|
# pinutils.findpin(pins, "PD15", True)["functions"]["ADC2_IN3"]=0;
|
||||||
|
# pinutils.findpin(pins, "PD13", True)["functions"]["ADC2_IN4"]=0;
|
||||||
|
# pinutils.findpin(pins, "PD12", True)["functions"]["ADC2_IN5"]=0;
|
||||||
|
# pinutils.findpin(pins, "PD14", True)["functions"]["ADC2_IN6"]=0;
|
||||||
|
# pinutils.findpin(pins, "PD27", True)["functions"]["ADC2_IN7"]=0;
|
||||||
|
|
||||||
|
pinutils.findpin(pins, "PD25", True)["functions"]["DAC_OUT1"]=0;
|
||||||
|
pinutils.findpin(pins, "PD26", True)["functions"]["DAC_OUT2"]=0;
|
||||||
|
|
||||||
|
pinutils.findpin(pins, "PD0", True)["functions"]["LED_1"]=0;
|
||||||
|
|
||||||
|
pinutils.findpin(pins, "PD10", True)["functions"]["USART0_TX"]=0;
|
||||||
|
pinutils.findpin(pins, "PD16", True)["functions"]["USART2_RX"]=0;
|
||||||
|
pinutils.findpin(pins, "PD17", True)["functions"]["USART2_TX"]=0;
|
||||||
|
pinutils.findpin(pins, "PD32", True)["functions"]["USART0_RX"]=0;
|
||||||
|
|
||||||
|
pinutils.findpin(pins, "PD13", True)["functions"]["SPI1_MOSI"]=0;
|
||||||
|
pinutils.findpin(pins, "PD12", True)["functions"]["SPI1_MISO"]=0;
|
||||||
|
pinutils.findpin(pins, "PD14", True)["functions"]["SPI1_SCLK"]=0;
|
||||||
|
pinutils.findpin(pins, "PD23", True)["functions"]["SPI2_MOSI"]=0;
|
||||||
|
pinutils.findpin(pins, "PD19", True)["functions"]["SPI2_MISO"]=0;
|
||||||
|
pinutils.findpin(pins, "PD18", True)["functions"]["SPI2_SCLK"]=0;
|
||||||
|
|
||||||
|
|
||||||
|
# everything is non-5v tolerant
|
||||||
|
#for pin in pins:
|
||||||
|
# pin["functions"]["3.3"]=0;
|
||||||
|
return pins
|
||||||
@ -29,6 +29,9 @@
|
|||||||
#ifdef USE_LCD_ST7789_8BIT
|
#ifdef USE_LCD_ST7789_8BIT
|
||||||
#include "lcd_st7789_8bit.h"
|
#include "lcd_st7789_8bit.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef USE_LCD_SPI_UNBUF
|
||||||
|
#include "lcd_spi_unbuf.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "jswrap_functions.h" // for asURL
|
#include "jswrap_functions.h" // for asURL
|
||||||
#include "jswrap_object.h" // for getFonts
|
#include "jswrap_object.h" // for getFonts
|
||||||
@ -560,6 +563,10 @@ void jswrap_graphics_init() {
|
|||||||
gfx->data.type = JSGRAPHICSTYPE_FSMC;
|
gfx->data.type = JSGRAPHICSTYPE_FSMC;
|
||||||
lcdInit_FSMC(gfx);
|
lcdInit_FSMC(gfx);
|
||||||
lcdSetCallbacks_FSMC(gfx);
|
lcdSetCallbacks_FSMC(gfx);
|
||||||
|
#elif defined(USE_LCD_SPI_UNBUF)
|
||||||
|
gfx->data.type = JSGRAPHICSTYPE_LCD_SPI_UNBUF;
|
||||||
|
lcd_spi_unbuf_init(gfx);
|
||||||
|
lcd_spi_unbuf_setCallbacks(gfx);
|
||||||
#else
|
#else
|
||||||
#error Unknown LCD type
|
#error Unknown LCD type
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -17,6 +17,7 @@
|
|||||||
"class" : "lcd_spi_unbuf"
|
"class" : "lcd_spi_unbuf"
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
#include "lcd_spilcd_info.h"
|
||||||
#include "lcd_spi_unbuf.h"
|
#include "lcd_spi_unbuf.h"
|
||||||
#include "jsutils.h"
|
#include "jsutils.h"
|
||||||
#include "jsinteractive.h"
|
#include "jsinteractive.h"
|
||||||
@ -63,6 +64,20 @@ static inline _put_pixel( uint16_t c) {
|
|||||||
if (_chunk_index==LCD_SPI_UNBUF_LEN) flush_chunk_buffer();
|
if (_chunk_index==LCD_SPI_UNBUF_LEN) flush_chunk_buffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lcdSendInitCmd_SPILCD() {
|
||||||
|
// Send initialization commands to ST7735
|
||||||
|
const unsigned char *cmd = SPILCD_INIT_CODE;
|
||||||
|
while(cmd[CMDINDEX_DATALEN]!=255) {
|
||||||
|
jshPinSetValue(_pin_cs, 0);
|
||||||
|
spi_cmd(cmd[CMDINDEX_CMD]);
|
||||||
|
if (cmd[CMDINDEX_DATALEN]) spi_data(&cmd[3], cmd[CMDINDEX_DATALEN]);
|
||||||
|
if (cmd[CMDINDEX_DELAY])
|
||||||
|
jshDelayMicroseconds(1000*cmd[CMDINDEX_DELAY]);
|
||||||
|
jshPinSetValue(_pin_cs, 1);
|
||||||
|
cmd += 3 + cmd[CMDINDEX_DATALEN];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// flush chunk buffer to screen
|
/// flush chunk buffer to screen
|
||||||
void lcd_flip(JsVar *parent) {
|
void lcd_flip(JsVar *parent) {
|
||||||
if(_chunk_index == 0) return;
|
if(_chunk_index == 0) return;
|
||||||
@ -164,6 +179,45 @@ JsVar *jswrap_lcd_spi_unbuf_connect(JsVar *device, JsVar *options) {
|
|||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef LCD_SPI_DEVICE
|
||||||
|
void lcd_spi_unbuf_init(JsGraphics *gfx) {
|
||||||
|
gfx->data.width = LCD_WIDTH;
|
||||||
|
gfx->data.height = LCD_HEIGHT;
|
||||||
|
gfx->data.bpp = LCD_BPP;
|
||||||
|
|
||||||
|
_pin_mosi = LCD_SPI_MOSI;
|
||||||
|
_pin_clk = LCD_SPI_SCK;
|
||||||
|
_pin_cs = LCD_SPI_CS;
|
||||||
|
_pin_dc = LCD_SPI_DC;
|
||||||
|
_device = LCD_SPI_DEVICE;
|
||||||
|
_colstart = 0;
|
||||||
|
_rowstart = 0;
|
||||||
|
|
||||||
|
#ifdef LCD_BL
|
||||||
|
jshPinOutput(LCD_BL, 1);
|
||||||
|
#endif
|
||||||
|
#ifdef LCD_EN
|
||||||
|
jshPinOutput(LCD_EN, 1);
|
||||||
|
#endif
|
||||||
|
jshPinOutput(_pin_dc, 1);
|
||||||
|
jshPinOutput(_pin_cs, 1);
|
||||||
|
|
||||||
|
JshSPIInfo inf;
|
||||||
|
jshSPIInitInfo(&inf);
|
||||||
|
#ifndef LCD_SPI_BITRATE
|
||||||
|
#define LCD_SPI_BITRATE 8000000
|
||||||
|
#endif
|
||||||
|
inf.baudRate = LCD_SPI_BITRATE;
|
||||||
|
inf.pinMOSI = LCD_SPI_MOSI;
|
||||||
|
#ifdef LCD_SPI_MISO
|
||||||
|
inf.pinMISO = LCD_SPI_MISO;
|
||||||
|
#endif
|
||||||
|
inf.pinSCK = LCD_SPI_SCK;
|
||||||
|
jshSPISetup(_device, &inf);
|
||||||
|
lcdSendInitCmd_SPILCD();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void disp_spi_transfer_addrwin(int x1, int y1, int x2, int y2) {
|
void disp_spi_transfer_addrwin(int x1, int y1, int x2, int y2) {
|
||||||
unsigned char wd[4];
|
unsigned char wd[4];
|
||||||
flush_chunk_buffer();
|
flush_chunk_buffer();
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
*
|
*
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
* Graphics Backend for drawing to SPI displays in unbuffered mode
|
* Graphics Backend for drawing to SPI displays in unbuffered mode
|
||||||
* ----------------------------------------------------------------------------
|
* ----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -27,6 +27,8 @@ typedef struct {
|
|||||||
int rowstart; //!< Aditional starting address some pixels dont begin at 0
|
int rowstart; //!< Aditional starting address some pixels dont begin at 0
|
||||||
} JshLCD_SPI_UNBUFInfo;
|
} JshLCD_SPI_UNBUFInfo;
|
||||||
|
|
||||||
|
void lcd_spi_unbuf_init(JsGraphics *gfx);
|
||||||
|
|
||||||
bool jswrap_lcd_spi_unbuf_idle();
|
bool jswrap_lcd_spi_unbuf_idle();
|
||||||
JsVar *jswrap_lcd_spi_unbuf_connect(JsVar *device, JsVar *options);
|
JsVar *jswrap_lcd_spi_unbuf_connect(JsVar *device, JsVar *options);
|
||||||
void lcd_spi_unbuf_setCallbacks(JsGraphics *gfx);
|
void lcd_spi_unbuf_setCallbacks(JsGraphics *gfx);
|
||||||
|
|||||||
@ -18,6 +18,40 @@
|
|||||||
#define CMDINDEX_DELAY 1
|
#define CMDINDEX_DELAY 1
|
||||||
#define CMDINDEX_DATALEN 2
|
#define CMDINDEX_DATALEN 2
|
||||||
|
|
||||||
|
#ifdef LCD_CONTROLLER_ILI9341
|
||||||
|
static const unsigned char SPILCD_INIT_CODE[] = {
|
||||||
|
// CMD,DELAY,DATA_LEN,D0,D1,D2...
|
||||||
|
0xCF/*ILI_PCB*/, 0, 3, 0x00, 0xC1, 0X30,
|
||||||
|
0xED/*ILI_POSC*/, 0, 4, 0x64, 0x03, 0X12, 0X81,
|
||||||
|
0xE8/*ILI_DTCA_ic*/, 0, 3, 0x85, 0x10, 0x7A,
|
||||||
|
0xCB/*ILI_PCA*/, 0, 5, 0x39, 0x2C, 0x00, 0x34, 0x02,
|
||||||
|
0xF7/*ILI_PRC*/,0, 1, 0x20,
|
||||||
|
0xEA/*ILI_DTCB*/, 0, 2, 0x00, 0x00,
|
||||||
|
0xC0/*ILI_PWCTRL1*/, 0, 1, 0x1B,
|
||||||
|
0xC1/*ILI_PWCTRL2*/,0, 1, 0x01,
|
||||||
|
0xC5/*ILI_VMCTRL1*/, 0, 2, 0x30, 0x30,
|
||||||
|
0xC7/*ILI_VMCTRL2*/, 0, 1, 0XB7,
|
||||||
|
0x36/*ILI_MADCTL*/, 0, 1, 0x48,
|
||||||
|
0x3A/*ILI_PIXSET*/, 0, 1, 0x55,
|
||||||
|
0xB1/*ILI_FRMCTR1*/, 0, 2, 0x00, 0x1A,
|
||||||
|
0xB6/*ILI_DISCTRL*/, 0, 2, 0x0A, 0xA2,
|
||||||
|
0xF2/*ILI_E3G*/, 0, 1, 0x00,
|
||||||
|
0x26/*ILI_GAMSET*/, 0, 1, 0x01,
|
||||||
|
0xE0/*ILI_PGAMCTRL*/, 0, 15, 0x0F, 0x2A, 0x28, 0x08, 0x0E, 0x08, 0x54, 0XA9, 0x43, 0x0A, 0x0F, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xE1/*ILI_NGAMCTRL*/, 0, 15, 0x00, 0x15, 0x17, 0x07, 0x11, 0x06, 0x2B, 0x56, 0x3C, 0x05, 0x10, 0x0F, 0x3F, 0x3F, 0x0F,
|
||||||
|
0x2B/*ILI_PASET*/, 0, 4, 0x00, 0x00, 0x01, 0x3f,
|
||||||
|
0x2A/*ILI_CASET*/, 0, 4, 0x00, 0x00, 0x00, 0xef,
|
||||||
|
0x11/*ILI_SLPOUT*/, 120, 0,
|
||||||
|
0x29/*ILI_DISPON*/, 0, 0,
|
||||||
|
0x36/*ILI_MADCTL*/, 0, 1, 0x68,
|
||||||
|
// End
|
||||||
|
0, 0, 255/*DATA_LEN = 255 => END*/
|
||||||
|
};
|
||||||
|
|
||||||
|
const unsigned char SPILCD_CMD_WINDOW_X = 0x2A;
|
||||||
|
const unsigned char SPILCD_CMD_WINDOW_Y = 0x2B;
|
||||||
|
const unsigned char SPILCD_CMD_DATA = 0x2C;
|
||||||
|
#endif
|
||||||
#ifdef LCD_CONTROLLER_ST7735
|
#ifdef LCD_CONTROLLER_ST7735
|
||||||
static const unsigned char SPILCD_INIT_CODE[] = {
|
static const unsigned char SPILCD_INIT_CODE[] = {
|
||||||
// CMD,DELAY,DATA_LEN,D0,D1,D2...
|
// CMD,DELAY,DATA_LEN,D0,D1,D2...
|
||||||
@ -130,7 +164,7 @@ static const unsigned char SPILCD_INIT_CODE[] = {
|
|||||||
0x36,0,1, 0xB8, // Memory Access Control (rotated 270 degrees)
|
0x36,0,1, 0xB8, // Memory Access Control (rotated 270 degrees)
|
||||||
#else
|
#else
|
||||||
0x36,0,1, 0x88, // Memory Access Control (no rotation)
|
0x36,0,1, 0x88, // Memory Access Control (no rotation)
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
0x36,0,1, 0x88, // Memory Access Control (no rotation)
|
0x36,0,1, 0x88, // Memory Access Control (no rotation)
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -430,19 +430,22 @@ if "LCD" in board.devices:
|
|||||||
if "pin_reset" in board.devices["LCD"]:
|
if "pin_reset" in board.devices["LCD"]:
|
||||||
codeOutDevicePin("LCD", "pin_reset", "LCD_RESET")
|
codeOutDevicePin("LCD", "pin_reset", "LCD_RESET")
|
||||||
if board.devices["LCD"]["controller"]=="ssd1306" or board.devices["LCD"]["controller"]=="st7567" or board.devices["LCD"]["controller"]=="st7789v" or board.devices["LCD"]["controller"]=="st7735" or board.devices["LCD"]["controller"]=="gc9a01":
|
if board.devices["LCD"]["controller"]=="ssd1306" or board.devices["LCD"]["controller"]=="st7567" or board.devices["LCD"]["controller"]=="st7789v" or board.devices["LCD"]["controller"]=="st7735" or board.devices["LCD"]["controller"]=="gc9a01":
|
||||||
codeOutDevicePin("LCD", "pin_mosi", "LCD_SPI_MOSI")
|
|
||||||
codeOutDevicePin("LCD", "pin_sck", "LCD_SPI_SCK")
|
|
||||||
codeOutDevicePin("LCD", "pin_cs", "LCD_SPI_CS")
|
|
||||||
codeOutDevicePin("LCD", "pin_dc", "LCD_SPI_DC")
|
|
||||||
codeOutDevicePin("LCD", "pin_rst", "LCD_SPI_RST")
|
codeOutDevicePin("LCD", "pin_rst", "LCD_SPI_RST")
|
||||||
if board.devices["LCD"]["controller"]=="LPM013M126":
|
if board.devices["LCD"]["controller"]=="LPM013M126":
|
||||||
codeOutDevicePin("LCD", "pin_mosi", "LCD_SPI_MOSI")
|
|
||||||
codeOutDevicePin("LCD", "pin_sck", "LCD_SPI_SCK")
|
|
||||||
codeOutDevicePin("LCD", "pin_cs", "LCD_SPI_CS")
|
|
||||||
codeOutDevicePin("LCD", "pin_disp", "LCD_DISP")
|
codeOutDevicePin("LCD", "pin_disp", "LCD_DISP")
|
||||||
codeOutDevicePin("LCD", "pin_extcomin", "LCD_EXTCOMIN")
|
codeOutDevicePin("LCD", "pin_extcomin", "LCD_EXTCOMIN")
|
||||||
|
if "pin_cs" in board.devices["LCD"]:
|
||||||
|
codeOutDevicePin("LCD", "pin_cs", "LCD_SPI_CS")
|
||||||
|
if "pin_mosi" in board.devices["LCD"]:
|
||||||
|
codeOutDevicePin("LCD", "pin_mosi", "LCD_SPI_MOSI")
|
||||||
if "pin_miso" in board.devices["LCD"]:
|
if "pin_miso" in board.devices["LCD"]:
|
||||||
codeOutDevicePin("LCD", "pin_miso", "LCD_SPI_MISO")
|
codeOutDevicePin("LCD", "pin_miso", "LCD_SPI_MISO")
|
||||||
|
if "pin_sck" in board.devices["LCD"]:
|
||||||
|
codeOutDevicePin("LCD", "pin_sck", "LCD_SPI_SCK")
|
||||||
|
if "pin_dc" in board.devices["LCD"]:
|
||||||
|
codeOutDevicePin("LCD", "pin_dc", "LCD_SPI_DC")
|
||||||
|
if "spi_device" in board.devices["LCD"]:
|
||||||
|
codeOut("#define LCD_SPI_DEVICE "+board.devices["LCD"]["spi_device"])
|
||||||
if "pin_tearing" in board.devices["LCD"]:
|
if "pin_tearing" in board.devices["LCD"]:
|
||||||
codeOutDevicePin("LCD", "pin_tearing", "LCD_TEARING")
|
codeOutDevicePin("LCD", "pin_tearing", "LCD_TEARING")
|
||||||
|
|
||||||
@ -453,8 +456,8 @@ if "SD" in board.devices:
|
|||||||
if "pin_cd" in board.devices["SD"]: codeOutDevicePin("SD", "pin_cd", "SD_DETECT_PIN")
|
if "pin_cd" in board.devices["SD"]: codeOutDevicePin("SD", "pin_cd", "SD_DETECT_PIN")
|
||||||
if "pin_pwr" in board.devices["SD"]: codeOutDevicePin("SD", "pin_pwr", "SD_POWER_PIN")
|
if "pin_pwr" in board.devices["SD"]: codeOutDevicePin("SD", "pin_pwr", "SD_POWER_PIN")
|
||||||
if "pin_cs" in board.devices["SD"]: codeOutDevicePin("SD", "pin_cs", "SD_CS_PIN")
|
if "pin_cs" in board.devices["SD"]: codeOutDevicePin("SD", "pin_cs", "SD_CS_PIN")
|
||||||
if "pin_di" in board.devices["SD"]: codeOutDevicePin("SD", "pin_di", "SD_DI_PIN")
|
if "pin_di" in board.devices["SD"]: codeOutDevicePin("SD", "pin_di", "SD_DI_PIN") # MOSI
|
||||||
if "pin_do" in board.devices["SD"]: codeOutDevicePin("SD", "pin_do", "SD_DO_PIN")
|
if "pin_do" in board.devices["SD"]: codeOutDevicePin("SD", "pin_do", "SD_DO_PIN") # MISO
|
||||||
if "pin_clk" in board.devices["SD"]:
|
if "pin_clk" in board.devices["SD"]:
|
||||||
codeOutDevicePin("SD", "pin_clk", "SD_CLK_PIN")
|
codeOutDevicePin("SD", "pin_clk", "SD_CLK_PIN")
|
||||||
if not "pin_d3" in board.devices["SD"]: # NOT SDIO - normal SD
|
if not "pin_d3" in board.devices["SD"]: # NOT SDIO - normal SD
|
||||||
@ -469,7 +472,7 @@ if "SD" in board.devices:
|
|||||||
if "pin_d1" in board.devices["SD"]: codeOutDevicePin("SD", "pin_d1", "SD_D1_PIN")
|
if "pin_d1" in board.devices["SD"]: codeOutDevicePin("SD", "pin_d1", "SD_D1_PIN")
|
||||||
if "pin_d2" in board.devices["SD"]: codeOutDevicePin("SD", "pin_d2", "SD_D2_PIN")
|
if "pin_d2" in board.devices["SD"]: codeOutDevicePin("SD", "pin_d2", "SD_D2_PIN")
|
||||||
if "pin_d3" in board.devices["SD"]: codeOutDevicePin("SD", "pin_d3", "SD_D3_PIN")
|
if "pin_d3" in board.devices["SD"]: codeOutDevicePin("SD", "pin_d3", "SD_D3_PIN")
|
||||||
if "pin_cmd" in board.devices["SD"]: codeOutDevicePin("SD", "pin_cmd", "SD_CMD_PIN")
|
if "pin_cmd" in board.devices["SD"]: codeOutDevicePin("SD", "pin_cmd", "SD_CMD_PIN")
|
||||||
|
|
||||||
if "IR" in board.devices:
|
if "IR" in board.devices:
|
||||||
codeOutDevicePin("IR", "pin_anode", "IR_ANODE_PIN")
|
codeOutDevicePin("IR", "pin_anode", "IR_ANODE_PIN")
|
||||||
|
|||||||
@ -62,12 +62,12 @@ void jshSetDeviceInitialised(IOEventFlags device, bool isInit);
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
https://hackadaycom.files.wordpress.com/2016/10/esp32_pinmap.png
|
https://hackadaycom.files.wordpress.com/2016/10/esp32_pinmap.png
|
||||||
HSPI 2 //SPI bus normally mapped to pins 12 - 15, but can be matrixed to any pins
|
SPI1 -> HSPI 2 //SPI bus normally mapped to pins 12 - 15, but can be matrixed to any pins
|
||||||
15 HSPI SS
|
15 HSPI SS
|
||||||
14 HSPI SCK
|
14 HSPI SCK
|
||||||
12 HSPI MISO
|
12 HSPI MISO
|
||||||
13 HSPI MOSI
|
13 HSPI MOSI
|
||||||
VSPI 3 //SPI bus normally attached to pin:
|
SPI2 -> VSPI 3 //SPI bus normally attached to pin:
|
||||||
5 VSPI SS
|
5 VSPI SS
|
||||||
18 VSPI SCK
|
18 VSPI SCK
|
||||||
19 VSPI MISO
|
19 VSPI MISO
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user