Open muzahid13 opened 5 days ago
Idk if it is possible at all to get this restricted GPIOs glitch free. There are some sdkconfig options to disable some USB JTAG features. Maybe it needs burning some efuses to solve. In every case you have to compile your project with Arduino as an component of IDF to have the possibility to change the involved sdkconfig settings.
In short not possible with Arduino "only"
There should be no problem using pins 20 and 19 from S3.
The configuration shall not enable USB.
Check if ARDUINO_USB_CDC_ON_BOOT=0
to disable this USB.
configuration
I placed
but unfortunately the my lvgl code didn’t work. Actually usb pin19 and 20 works as gpio but impact on others code. I need to disable usb jtag then use as gpio
configuration
I placed #define ARDUINO_USB_CDC_ON_BOOT 0 but unfortunately the my lvgl code didn’t work. Actually usb pin19 and 20 works as gpio but impact on others code. I need to disable usb jtag then use as gpio
It doesn't work like that (it can't be defined in the sketch). I have limited knowledge about PlatformIO, but it shall be done like here: https://community.platformio.org/t/enabling-usb-cdc-on-boot-on-esp32-c3-devkit/33346/2
Maybe @Jason2866 can help it.
Idk if it is possible at all to get this restricted GPIOs glitch free. There are some sdkconfig options to disable some USB JTAG features. Maybe it needs burning some efuses to solve. In every case you have to compile your project with Arduino as an component of IDF to have the possibility to change the involved sdkconfig settings.
In short not possible with Arduino "only"
i am using platformio on vs code, below is my platformio.ini data [env:4d_systems_esp32s3_gen4_r8n16] platform = espressif32 board = 4d_systems_esp32s3_gen4_r8n16 framework = arduino monitor_speed = 115200 lib_deps = lvgl/lvgl@^8.3.11 please suggest where i need to change or add any contents. thanks
This:
[env:4d_systems_esp32s3_gen4_r8n16]
platform = espressif32
board = 4d_systems_esp32s3_gen4_r8n16
framework = arduino
monitor_speed = 115200
lib_deps = lvgl/lvgl@^8.3.11
uses any Arduino version Platformio founds. You don't know if this is the latest. I highly doubt. Use that
[env:4d_systems_esp32s3_gen4_r8n16]
platform = https://github.com/pioarduino/platform-espressif32.git
board = 4d_systems_esp32s3_gen4_r8n16
framework = arduino
monitor_speed = 115200
lib_deps = lvgl/lvgl@^8.3.11
The board you have specified use this settings
"-DARDUINO_ESP32_S3R8N16",
"-DBOARD_HAS_PSRAM",
"-DARDUINO_USB_MODE=1",
"-DARDUINO_USB_CDC_ON_BOOT=1",
"-DARDUINO_RUNNING_CORE=1",
"-DARDUINO_EVENT_RUNNING_CORE=1
for sure wrong regarding USB. To help what exactly S3 variant does you have. Flash size and type and PSRAM type (QIO or OPI)? With this Infos it is possible to help
platform = https://github.com/pioarduino/platform-espressif32.git
i shared the esp32s3 picture here. i am using this mcu. please check. thanks
16MB QIO Flash and 8MB OPI PSRAM Use this https://github.com/sivar2311/ESP32-S3-PlatformIO-Flash-and-PSRAM-configurations?tab=readme-ov-file#esp32-s3-wroom-11u-n16r8
16MB QIO Flash and 8MB OPI PSRAM Use this https://github.com/sivar2311/ESP32-S3-PlatformIO-Flash-and-PSRAM-configurations?tab=readme-ov-file#esp32-s3-wroom-11u-n16r8
i placed the following contents on the platformio.ini file but i think USB-JTAG didnot disable, ; Flash: 16MB QD, PSRAM: 8MB OT [env:esp32-s3-devkitc-1] platform = espressif32 board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200 lib_deps = lvgl/lvgl@^8.3.11
board_build.arduino.memory_type = qio_opi board_build.flash_mode = qio board_build.psram_type = opi board_upload.flash_size = 16MB board_upload.maximum_size = 16777216 board_build.extra_flags = -DBOARD_HAS_PSRAM
build_flags = -DARDUINO_ESP32_S3R8N16 -DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=0 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1
i wrote the follwing line in void loop, pinMode(20,OUTPUT); digitalWrite(20,LOW); delay(1000); digitalWrite(20,HIGH); delay(1000);
here pin20 worked as gpio, pin20 blinking but impact other other code, other code didnot run. did you get the point where it stuck? thanks
@muzahid13 Anyway, this issue has a resolution. pin 19 and 20 work correctly as GPIO. The rest of the code that is not working is not related to an Arduino Core issue, right?
Therefore, should we close this issue?
@muzahid13 Anyway, this issue has a resolution. pin 19 and 20 work correctly as GPIO. The rest of the code that is not working is not related to an Arduino Core issue, right?
Therefore, should we close this issue?
but if i dont use pin19 and 20 as gpio, my other code works good. only impact appeared on other code when i use pin19 and 20 as GPIO. below is my complete code:
/***
LVGL Widgets
This is a widgets demo for LVGL - Light and Versatile Graphics Library
import from: https://github.com/lvgl/lv_demos.git
Dependent libraries:
Touch libraries:
XPT2046: https://github.com/PaulStoffregen/XPT2046_Touchscreen.git
LVGL Configuration file:
Copy your_arduino_path/libraries/lvgl/lv_conf_template.h
to your_arduino_path/libraries/lv_conf.h
Then find and set:
For SPI display set color swap can be faster, parallel screen don't set!
Optional: Show CPU usage and FPS count
**/
// #define GFX_BL DF_GFX_BL // default backlight pin, you may replace DF_GFX_BL to actual backlight pin
/ More dev device declaration: https://github.com/moononournation/Arduino_GFX/wiki/Dev-Device-Declaration /
Arduino_GFX *gfx = create_default_Arduino_GFX();
/ More data bus class: https://github.com/moononournation/Arduino_GFX/wiki/Data-Bus-Class / // Arduino_DataBus *bus = create_default_Arduino_DataBus();
/ More display class: https://github.com/moononournation/Arduino_GFX/wiki/Display-Class / // Arduino_GFX gfx = new Arduino_ILI9341(bus, DF_GFX_RST, 0 / rotation /, false / IPS */);
Arduino_ESP32RGBPanel bus = new Arduino_ESP32RGBPanel( GFX_NOT_DEFINED / CS /, GFX_NOT_DEFINED / SCK /, GFX_NOT_DEFINED / SDA /, 41 / DE /, 40 / VSYNC /, 39 / HSYNC /, 42 / PCLK /, 14 / R0 /, 21 / R1 /, 47 / R2 /, 48 / R3 /, 45 / R4 /, 9 / G0 /, 46 / G1 /, 3 / G2 /, 8 / G3 /, 16 / G4 /, 1 / G5 /, 15 / B0 /, 7 / B1 /, 6 / B2 /, 5 / B3 /, 4 / B4 / ); // option 1: // 7寸 50PIN 800480 Arduino_RPi_DPI_RGBPanel gfx = new Arduino_RPi_DPI_RGBPanel( bus, // 800 / width /, 0 / hsync_polarity /, 8/ hsync_front_porch /, 2 / hsync_pulse_width /, 43/ hsync_back_porch /, // 480 / height /, 0 / vsync_polarity /, 8 / vsync_front_porch /, 2/ vsync_pulse_width /, 12 / vsync_back_porch /, // 1 / pclk_active_neg /, 16000000 / prefer_speed /, true / auto_flush */);
800 /* width */, 0 /* hsync_polarity */, 210 /* hsync_front_porch */, 30 /* hsync_pulse_width */, 16 /* hsync_back_porch */,
480 /* height */, 0 /* vsync_polarity */, 22 /* vsync_front_porch */, 13 /* vsync_pulse_width */, 10 /* vsync_back_porch */,
1 /* pclk_active_neg */, 16000000 /* prefer_speed */, true /* auto_flush */);
/***
/***
uint32_t preMillis=0; bool lock_loop=false; / Change to your screen resolution / static uint32_t screenWidth; static uint32_t screenHeight; static lv_disp_draw_buf_t draw_buf; static lv_color_t *disp_draw_buf; static lv_disp_drv_t disp_drv;
/ Display flushing / void my_disp_flush(lv_disp_drv_t disp, const lv_area_t area, lv_color_t *color_p) { uint32_t w = (area->x2 - area->x1 + 1); uint32_t h = (area->y2 - area->y1 + 1);
gfx->draw16bitBeRGBBitmap(area->x1, area->y1, (uint16_t *)&color_p->full, w, h);
gfx->draw16bitRGBBitmap(area->x1, area->y1, (uint16_t *)&color_p->full, w, h);
lv_disp_flush_ready(disp); }
void my_touchpad_read(lv_indev_drv_t indev_driver, lv_indev_data_t data) { if (touch_has_signal()) { if (touch_touched()) { preMillis=millis(); lock_loop=true; data->state = LV_INDEV_STATE_PR;
/*Set the coordinates*/
data->point.x = touch_last_x;
data->point.y = touch_last_y;
// Serial0.print( "Data x " );
// Serial0.println( data->point.x );
// Serial0.print( "Data y " );
// Serial0.println( data->point.y );
}
else if (touch_released())
{
data->state = LV_INDEV_STATE_REL;
}
} else { data->state = LV_INDEV_STATE_REL; } }
void setup() { uart0_init(); // Serial0.begin(115200, SERIAL_8N1, RX_PIN, TX_PIN); gfx->begin();
pinMode(TFT_BL, OUTPUT); digitalWrite(TFT_BL, HIGH); // ledcSetup(PWM_CHANNEL, PWM_FREQUENCY, PWM_RESOUTION); // ledcAttachPin(speakerPin, PWM_CHANNEL);
ledcSetup(0, 300, 8); ledcAttachPin(TFT_BL, 0);
//ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution); //ledcAttach(TFT_BL, 300, 8);
ledcWrite(0, 255); / Screen brightness can be modified by adjusting this parameter. (0-255) /
gfx->fillScreen(RED); delay(500); gfx->fillScreen(GREEN); delay(500); gfx->fillScreen(BLUE); delay(500); gfx->fillScreen(BLACK); delay(500); lv_init();
// Init touch device pinMode(TOUCH_GT911_RST, OUTPUT); digitalWrite(TOUCH_GT911_RST, LOW); delay(10); digitalWrite(TOUCH_GT911_RST, HIGH); delay(10); touch_init(); // touch.setTouch( calData );
screenWidth = gfx->width(); screenHeight = gfx->height();
disp_draw_buf = (lv_color_t )heap_caps_malloc(sizeof(lv_color_t) screenWidth * screenHeight / 4, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
disp_draw_buf = (lv_color_t )malloc(sizeof(lv_color_t) screenWidth * screenHeight / 4);
if (!disp_draw_buf) { // Serial0.println("LVGL disp_draw_buf allocate failed!"); } else { lv_disp_draw_buf_init(&draw_buf, disp_draw_buf, NULL, screenWidth * screenHeight / 4);
/* Initialize the display */
lv_disp_drv_init(&disp_drv);
/* Change the following line to your display resolution */
disp_drv.hor_res = screenWidth;
disp_drv.ver_res = screenHeight;
disp_drv.flush_cb = my_disp_flush;
disp_drv.draw_buf = &draw_buf;
lv_disp_drv_register(&disp_drv);
/* Initialize the (dummy) input device driver */
static lv_indev_drv_t indev_drv;
lv_indev_drv_init(&indev_drv);
indev_drv.type = LV_INDEV_TYPE_POINTER;
indev_drv.read_cb = my_touchpad_read;
lv_indev_drv_register(&indev_drv);
// lv_demo_widgets();
ui_init();
// Serial0.println("Setup done"); }
}
uint32_t preMillis_Sent = 0; uint8_t i = 0, protocol[32], len = 0,sentCount=0; uint8_t checksum(uint8_t data[],uint8_t length); //bool lock_loop=false; uint8_t disAuth[6] = {0x02, 0x29, 0x03, 0xE9, 0x31,0xF0}; uint8_t ScanOpCD[6] = {0x02, 0x29, 0x03, 0xE9, 0x32,0xF3}; uint8_t enterKilo[6] = {0x02, 0x29, 0x03, 0xE9, 0x33,0xF2}; uint8_t CDnotRg[6] = {0x02, 0x29, 0x03, 0xE9, 0x38,0xF9}; uint8_t DontHvLmt[6] = {0x02, 0x29, 0x03, 0xE9, 0x39,0xF8}; uint8_t blockCD[6] = {0x02, 0x29, 0x03, 0xE9, 0x3A,0xFB}; uint8_t carPlate[6] = {0x02, 0x29, 0x03, 0xE9, 0x44,0x85}; uint8_t EnterPin[6] = {0x02, 0x29, 0x03, 0xE9, 0x45,0x84};
uint8_t CDbelongTo[32]= {0x02, 0x29, 0x03, 0xE9, 0x37,'A','d','h','a','m','A','d','h','a','m','A','d','h','a','m','A',0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF6}; //02 29 03 E9 37 41 64 68 61 6D 41 64 68 61 6D 41 64 68 61 6D 41 64 68 61 6D 41 64 68 61 6D 78 CF uint8_t disAuthLmt[10]= {0x02, 0x29, 0x03, 0xE9, 0x36,0x11, 0x22, 0x33, 0x44,0xB3}; //02 29 03 E9 36 11 22 33 44 B3 uint8_t sendAck[6] = {0x02, 0x29, 0x03, 0xE9, 0xAF,0x6E}; uint8_t recvAck[6] = {0x02, 0x29, 0x03, 0xE9, 0xBF,0x7E};
void loop() { lv_timer_handler(); / let the GUI do its work / delay(5);
pinMode(20,OUTPUT); digitalWrite(20,LOW); delay(1000); digitalWrite(20,HIGH); delay(1000); }
for the above code my lvgl code is stuck when pin20 is active as GPIO but if i remove pin20 gpio code, my lvgl code is working good. could you please help to solve this?
Board
esp32-s3
Device Description
i am using esp32-s3 based LVGL 7 inch display. I need to use the USB-JTAG pin19 and pin20 as gpio. i already prepared the PCB. i just made high and low pin20 at regular interval, then i noticed that it impacted on other code, i am using visual studio code platformio and framework: arduino.how can i disbale usb-jtag in platformio and framework arduino. my code is completed, i stuck on pin19 and pin20 to be gpio. thanks
Hardware Configuration
GPIO pin19 and pin20 are connected to max485 D-enable and R-enable pin. so those pin shoudl be used as GPIO pin
Version
latest master (checkout manually)
IDE Name
PlatformIO
Operating System
Windows11
Flash frequency
40Mhz
PSRAM enabled
yes
Upload speed
115200
Description
pin19 and pin20 must be used as GPIO. when i enable PIN19 and 20 as GPIO, the code impact on other portion like the mcu is hanged
Sketch
Debug Message
Other Steps to Reproduce
No response
I have checked existing issues, online documentation and the Troubleshooting Guide