Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fine tuning for esp32s3 #143

Merged
merged 6 commits into from
Nov 14, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions firmware/src/display_task.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,15 @@ void DisplayTask::run() {
tft_.setRotation(SK_DISPLAY_ROTATION);
tft_.fillScreen(TFT_DARKGREEN);

#ifdef CONFIG_IDF_TARGET_ESP32S3
ledcSetup(LEDC_CHANNEL_LCD_BACKLIGHT, 5000, 8);
brushknight marked this conversation as resolved.
Show resolved Hide resolved
ledcAttachPin(PIN_LCD_BACKLIGHT, LEDC_CHANNEL_LCD_BACKLIGHT);
ledcWrite(LEDC_CHANNEL_LCD_BACKLIGHT, UINT8_MAX);
#else
ledcSetup(LEDC_CHANNEL_LCD_BACKLIGHT, 5000, 16);
ledcAttachPin(PIN_LCD_BACKLIGHT, LEDC_CHANNEL_LCD_BACKLIGHT);
ledcWrite(LEDC_CHANNEL_LCD_BACKLIGHT, UINT16_MAX);
#endif

spr_.setColorDepth(8);

Expand Down
2 changes: 1 addition & 1 deletion firmware/src/interface_task.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ void InterfaceTask::run() {
Wire.setClock(400000);
#endif
#if SK_STRAIN
scale.begin(38, 2);
scale.begin(STRAIN_DO, STRAIN_SCK);
#endif

#if SK_ALS
Expand Down
6 changes: 3 additions & 3 deletions firmware/src/interface_task.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ class InterfaceTask : public Task<InterfaceTask>, public Logger {
void run();

private:
#ifdef CONFIG_IDF_TARGET_ESP32S3
HWCDC stream_;
#else
#if DLOGS_STREAM == 0
UartStream stream_;
#elif DLOGS_STREAM == 1
HWCDC stream_;
#endif
MotorTask& motor_task_;
DisplayTask* display_task_;
Expand Down
15 changes: 13 additions & 2 deletions firmware/src/mt6701_sensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,13 @@ void MT6701Sensor::init() {
.quadhd_io_num = -1,
.max_transfer_sz = 1000,
};
esp_err_t ret = spi_bus_initialize(HSPI_HOST, &tx_bus_config, 1);

#ifdef CONFIG_IDF_TARGET_ESP32S3
esp_err_t ret = spi_bus_initialize(SPI3_HOST, &tx_bus_config, SPI_DMA_CH_AUTO);
#else
esp_err_t ret = spi_bus_initialize(HSPI_HOST, &tx_bus_config, 1);
#endif

ESP_ERROR_CHECK(ret);

spi_device_interface_config_t tx_device_config = {
Expand All @@ -70,7 +76,12 @@ void MT6701Sensor::init() {
.pre_cb=NULL,
.post_cb=NULL,
};
ret=spi_bus_add_device(HSPI_HOST, &tx_device_config, &spi_device_);
#ifdef CONFIG_IDF_TARGET_ESP32S3
ret=spi_bus_add_device(SPI3_HOST, &tx_device_config, &spi_device_);
#else
ret=spi_bus_add_device(HSPI_HOST, &tx_device_config, &spi_device_);
#endif

ESP_ERROR_CHECK(ret);


Expand Down
111 changes: 110 additions & 1 deletion platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,18 @@ lib_deps =
infineon/TLV493D-Magnetic-Sensor @ 1.0.3
bxparks/AceButton @ 1.9.1
bakercp/PacketSerial @ 1.4.0
nanopb/Nanopb @ 0.4.6 ; Ideally this would reference the nanopb submodule, but that would require
nanopb/Nanopb @ 0.4.7 ; Ideally this would reference the nanopb submodule, but that would require
; everyone to check out submodules to just compile, so we use the library
; registry for the runtime. The submodule is available for manually updating
; the pre-compiled (checked in) .pb.h/c files when proto files change, but is
; otherwise not used during application firmware compilation.
build_flags =
-DMONITOR_SPEED=921600
-DLOGS_STREAM=0 ; 0 - plaintext, 1 - HWCDC

; Strain config
-DSTRAIN_DO=38
-DSTRAIN_SCK=2

[env:view]
extends = base_config
Expand Down Expand Up @@ -139,6 +144,7 @@ lib_deps =

build_flags =
${base_config.build_flags}
-DLOGS_STREAM=1 ; 0 - plaintext, 1 - HWCDC
; Display enabled: 1=enable, 0=disable
-DSK_DISPLAY=0
; Display orientation: 0=usb bottom, 2=usb top
Expand Down Expand Up @@ -184,3 +190,106 @@ build_flags =

; Reduce loop task stack size (only works on newer IDF Arduino core)
; -DARDUINO_LOOP_STACK_SIZE=2048


[env:s3]
extends = base_config
platform = espressif32@6.3.1
board = esp32-s3-devkitc-1
board_build.partitions = default_ffat.csv

monitor_speed = 115200

lib_deps =
${base_config.lib_deps}
bodmer/TFT_eSPI@2.5.0
fastled/FastLED @ 3.5.0
bogde/HX711 @ 0.7.5
adafruit/Adafruit VEML7700 Library @ 1.1.1
askuric/Simple FOC@2.3.0

build_flags =
${base_config.build_flags}
-DMONITOR_SPEED=115200
; Display enabled: 1=enable, 0=disable
-DSK_DISPLAY=1
; Display orientation: 0=usb bottom, 2=usb top
-DSK_DISPLAY_ROTATION=0
; LEDs enabled: 1=enable, 0=disable
-DSK_LEDS=1
; Number of LEDs
-DNUM_LEDS=8
; Strain-gauge press input enabled: 1=enable, 0=disable
-DSK_STRAIN=1
; Ambient light sensor (VEML7700) enabled: 1=enable (display/LEDs match ambient brightness), 0=disable (100% brightness all the time)
-DSK_ALS=0
; Use MT6701 magnetic encoder
-DSENSOR_MT6701=1
; Invert direction of angle sensor (motor direction is detected relative to angle sensor as part of the calibration procedure)
-DSK_INVERT_ROTATION=1

-DMOTOR_WANZHIDA_ONCE_TOP=1

; Strain config
-DSTRAIN_DO=38
-DSTRAIN_SCK=1

; Pin configurations
; Motor
-DPIN_UH=20
-DPIN_UL=19
-DPIN_VH=21
-DPIN_VL=17
-DPIN_WH=12
-DPIN_WL=18

-DPIN_BUTTON_NEXT=-1
-DPIN_BUTTON_PREV=-1
-DPIN_LED_DATA=7
-DPIN_LCD_BACKLIGHT=5

-DPIN_SDA=15
-DPIN_SCL=8

-DPIN_MT_DATA=37
-DPIN_MT_CLOCK=13
-DPIN_MT_CSN=14

-DDESCRIPTION_FONT=Roboto_Thin_24
-DDESCRIPTION_Y_OFFSET=20
-DVALUE_OFFSET=30
-DDRAW_ARC=0

; TFT_eSPI setup
-DUSER_SETUP_LOADED=1
-DGC9A01_DRIVER=1
-DCGRAM_OFFSET=1
-DTFT_WIDTH=240
-DTFT_HEIGHT=240
-DTFT_MISO=-1 # fake
-DTFT_MOSI=3
-DTFT_SCLK=4
-DTFT_CS=9
-DTFT_DC=2
-DTFT_RST=6
-DTFT_BL=-1
-DLOAD_GLCD=1
-DLOAD_GFXFF=1
-DSPI_FREQUENCY=40000000

; Reduce loop task stack size (only works on newer IDF Arduino core)
; -DARDUINO_LOOP_STACK_SIZE=2048

-DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG

; FastLED setup
; Modify the default unusable pin mask to allow GPIO 7 (allowed to use on ESP32-PICO-V3-02)
; Unusable bits: 6, 8, 9, 10, 20
; (0ULL | _FL_BIT(6) | _FL_BIT(8) | _FL_BIT(9) | _FL_BIT(10) | _FL_BIT(20))
-DFASTLED_UNUSABLE_PIN_MASK=0x100740LL
; 0~39 except from 24, 28~31 are valid
; (0xFFFFFFFFFFULL & ~(0ULL | _FL_BIT(24) | _FL_BIT(28) | _FL_BIT(29) | _FL_BIT(30) | _FL_BIT(31)))
-DSOC_GPIO_VALID_GPIO_MASK=0xFF0EFFFFFF
; GPIO >= 34 are input only
; (SOC_GPIO_VALID_GPIO_MASK & ~(0ULL | _FL_BIT(34) | _FL_BIT(35) | _FL_BIT(36) | _FL_BIT(37) | _FL_BIT(38) | _FL_BIT(39)))
-DSOC_GPIO_VALID_OUTPUT_GPIO_MASK=0x30EFFFFFF
Loading