Getting Started with Seeed Studio Round Display for XIAO | Seeed Studio Wiki

Thanks. I saw your post but have not tried that. What you showed didn’t look like a complete sketch,
just some lines of code.
For example, which libraries are needed in order to run it?
-R

That’s great that you got it working. But, you didn’t say which MCU board you used?
A few more details would help others solve this puzzle.

By the way, the board i used was the XIAO ESP32C3.
After starting my Arduino library from scratch i was able to get the provided demo to work. I have since added dome additional code to blank the screen and display the date and digital time.

like this on , NTP ?

https://forum.seeedstudio.com/t/round-display-with-xiao-nrf52840-sense-tft-espi-lvl-example/270762/3?u=pj_glasso
some output for others as well…
HTH
GL :slight_smile: PJ

Thanks. It seems that people using the ESP32 boards got it working.
I haven’t heard from anyone who was successful using a SAMD21 board though.

I’m trying to get something very basic working with the TFT_eSPI library.
I did verify the pinouts (in User_Setups/Setup66_XIAO_Round_Expansion.h) and they seem to
be correct.
So far no luck.
The Round display just shows garbage pixels and doesn’t draw anything.

Unfortunately, it has been a very long time ago and I should start again from scratch investigating those libraries with the Xiao round display.

Hi there,
I think it’s just not going to fit? or the pins are off or inverted or ? total guess here I don’t have a samd21 they have always been too light weight for my prototypes any way ,You may look at this link ,
SAMD21 (arduino mkr zero) with TFT 3.5 ili9486 albeit not directly about round eye display, but
worthy of a look imho, what frequency is your spi or clock?
GL :slight_smile: PJ

Thanks, good point about the SPI freq. I didn’t set it but somewhere in the header files it is set to something. I’ll take another look.
-R

I’m sorry I’m late. From the error message you provided, it seems that you are correct, and this is most likely due to the Insufficient Memory error that pops up with XIAO SAMD21 running LVGL. In fact, the XIAO SAMD is quite an ancient being with only 32KB of SRAM and 256KB of Flash, which means that it is not capable of carrying LVGL animations with a certain volume (including the XIAO nRF52840 as well). So, I would recommend you to use it to complete some simple image display based on TFT graphics library.

You are right, that the SAMD21 has 256k flash and 32k sram.
The ESP32C3 has 4mb flash and 400k sram, I believe.

Not surprisingly, I wasn’t able to compile Seeed’s basic demo of the Round Display due to insufficient RAM on the
SAMD21 XIAO board.
But, a different demo (tft_espi-base-dial) only uses TFT_eSPI library, and it fit in RAM no problem.
However, it still did not work!
I believe I followed all the configurations suggested in Seeed’s Getting Started guide:

-R

Hi there,
So the Round Display is working Here; Xiao ESP32S3 in the Seat
Using library TFT_eSPI at version 2.5.23 (setup/selects with all edits)The Touch Screen warning NAG is present but it still connects to my WiFi, Then gets IP address and updates the Time from NTP server then Displays the “ROLO” tweaked Watch face.
HTH

#include <Arduino.h>
#include <TFT_eSPI.h>
#include <SPI.h>
#include <Wire.h>
#include "time.h"    //
#include "RTClib.h"  // 

#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)
#include "esp_wifi.h"
#include "WiFi.h"

#include "esp_wps.h"  //

const char *ntpServer = "time.cloudflare.com";
const char *ssid     = "GlassSurf-2.4";
const char *password = "SEEEDstudio :-p"; // edited for security and LOL's
#endif

#include "I2C_BM8563.h"
#include "NotoSansBold15.h"
#define ESP_MANUFACTURER  "SEEED"
#define ESP_MODEL_NUMBER  "ESP32C3"
#define ESP_MODEL_NAME    "Xiao ESP"

I2C_BM8563 rtc(I2C_BM8563_DEFAULT_ADDRESS, Wire);
I2C_BM8563_TimeTypeDef timeStruct;
I2C_BM8563_DateTypeDef dateStruct;

//I2C_BM8563_TimeTypeDef tStruct;

TFT_eSPI tft = TFT_eSPI();  // Invoke library, pins defined in User_Setup.h
TFT_eSprite face = TFT_eSprite(&tft);

uint32_t chipId = 0;
#define CLOCK_X_POS 10
#define CLOCK_Y_POS 10

#define CLOCK_FG   TFT_SKYBLUE
#define CLOCK_BG   TFT_NAVY
#define SECCOND_FG TFT_RED
#define LABEL_FG   TFT_GOLD

#define CLOCK_R       230.0f / 2.0f // Clock face radius (float type)
#define H_HAND_LENGTH CLOCK_R/2.0f
#define M_HAND_LENGTH CLOCK_R/1.4f
#define S_HAND_LENGTH CLOCK_R/1.3f

#define FACE_W CLOCK_R * 2 + 1
#define FACE_H CLOCK_R * 2 + 1

// Calculate 1 second increment angles. Hours and minute hand angles
// change every second so we see smooth sub-pixel movement
#define SECOND_ANGLE 360.0 / 60.0
#define MINUTE_ANGLE SECOND_ANGLE / 60.0
#define HOUR_ANGLE   MINUTE_ANGLE / 12.0

// Sprite width and height
#define FACE_W CLOCK_R * 2 + 1
#define FACE_H CLOCK_R * 2 + 1

const long  gmtOffset_sec = -18000;  //For UTC -5.00 : -5 * 60 * 60 : -18000
const int   daylightOffset_sec = 3600;

// Time h:m:s
uint8_t h = 0, m = 0, s = 0;

float time_secs = h * 3600 + m * 60 + s;

// Time for next tick
uint32_t targetTime = 0;

// =========================================================================
// Setup
// =========================================================================
void setup() {
  Serial.begin(9600);
  delay(2500);  //relax...Get Ready for serial port
  Serial.println();
  Serial.println();
  Serial.println("Power ON ");  // Let's BEGIN!!
  Serial.println("");
  // Init and get the time
 // configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  //printLocalTime();
  Serial.println("Program " __FILE__ " compiled on " __DATE__ " at " __TIME__ );
  Serial.println();

  // Initialise the screen
  tft.init();

  // Ideally set orientation for good viewing angle range because
  // the anti-aliasing effectiveness varies with screen viewing angle
  // Usually this is when screen ribbon connector is at the bottom
  tft.setRotation(0);
  tft.fillScreen(TFT_BLACK);

  // Create the clock face sprite
  //face.setColorDepth(8); // 8 bit will work, but reduces effectiveness of anti-aliasing
  face.createSprite(FACE_W, FACE_H);

  // Only 1 font used in the sprite, so can remain loaded
  face.loadFont(NotoSansBold15);

  // Draw the whole clock - NTP time not available yet
  renderFace(time_secs);

#if defined(CONFIG_IDF_TARGET_ESP32S3) || defined(CONFIG_IDF_TARGET_ESP32C3)
  WiFi.begin(ssid, password);
  while ( WiFi.status() != WL_CONNECTED ) 
  {
    delay ( 500 );
    Serial.print ( "." );
  }
  Serial.println("");
  // Init and get the time
  //configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  configTime(8 * 3600, 0, ntpServer);
  struct tm timeInfo;
  if (getLocalTime(&timeInfo)) {
    timeStruct.hours   = timeInfo.tm_hour;
    timeStruct.minutes = timeInfo.tm_min;
    timeStruct.seconds = timeInfo.tm_sec;
    rtc.setTime(&timeStruct);
    //dateStruct.weekDay = timeInfo.tm_wday;
    //dateStruct.month   = timeInfo.tm_mon + 1;
    //dateStruct.date    = timeInfo.tm_mday;
    //dateStruct.year    = timeInfo.tm_year + 1900;
    //rtc.setDate(&dateStruct);
  }
#endif

  Wire.begin();
  rtc.begin();
  syncTime();

  Serial.println();
   for(int i=0; i<17; i=i+8) {
	  chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
	}
	Serial.printf("ESP32 Chip model = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
	Serial.printf("This chip has %d cores\n", ESP.getChipCores());
  Serial.print("Chip ID: "); Serial.println(chipId);
  Serial.println("Connected to :" + String(WiFi.SSID()));
  Serial.print("Got IP: ");
  Serial.println(WiFi.localIP());
  delay (500);
  printLocalTime();
}

// =========================================================================
// Loop
// =========================================================================
void loop() {
  // Update time periodically
  if (targetTime < millis()) {

    // Update next tick time in 100 milliseconds for smooth movement
    targetTime = millis() + 100;

    // Increment time by 100 milliseconds
    time_secs += 0.100;

    // Midnight roll-over
    if (time_secs >= (60 * 60 * 24)) time_secs = 0;

    // All graphics are drawn in sprite to stop flicker
    renderFace(time_secs);

    // syncTime();
  }
}

// =========================================================================
// Draw the clock face in the sprite
// =========================================================================
static void renderFace(float t) {
  float h_angle = t * HOUR_ANGLE;
  float m_angle = t * MINUTE_ANGLE;
  float s_angle = t * SECOND_ANGLE;

  // The face is completely redrawn - this can be done quickly
  face.fillSprite(TFT_BLACK);

  // Draw the face circle
  face.fillSmoothCircle( CLOCK_R, CLOCK_R, CLOCK_R, CLOCK_BG );

  // Set text datum to middle centre and the colour
  face.setTextDatum(MC_DATUM);

  // The background colour will be read during the character rendering
  face.setTextColor(CLOCK_FG, CLOCK_BG);

  // Text offset adjustment
  constexpr uint32_t dialOffset = CLOCK_R - 10;//10

  float xp = 0.0, yp = 0.0; // Use float pixel position for smooth AA motion

  // Draw digits around clock perimeter
  for (uint32_t h = 1; h <= 12; h++) {
    getCoord(CLOCK_R, CLOCK_R, &xp, &yp, dialOffset, h * 360.0 / 12);
    face.drawNumber(h, xp, 2 + yp);
  }

  // Add text (could be digital time...)
  face.setTextColor(LABEL_FG, CLOCK_BG);
  face.drawString("ROLO", CLOCK_R, CLOCK_R * 0.75);

  // Draw minute hand
  getCoord(CLOCK_R, CLOCK_R, &xp, &yp, M_HAND_LENGTH, m_angle);
  face.drawWideLine(CLOCK_R, CLOCK_R, xp, yp, 6.0f, CLOCK_FG);
  face.drawWideLine(CLOCK_R, CLOCK_R, xp, yp, 2.0f, CLOCK_BG);

  // Draw hour hand
  getCoord(CLOCK_R, CLOCK_R, &xp, &yp, H_HAND_LENGTH, h_angle);
  face.drawWideLine(CLOCK_R, CLOCK_R, xp, yp, 6.0f, CLOCK_FG);
  face.drawWideLine(CLOCK_R, CLOCK_R, xp, yp, 2.0f, CLOCK_BG);

  // Draw the central pivot circle
  face.fillSmoothCircle(CLOCK_R, CLOCK_R, 4, CLOCK_FG);

  // Draw Second hand
  getCoord(CLOCK_R, CLOCK_R, &xp, &yp, S_HAND_LENGTH, s_angle);
  face.drawWedgeLine(CLOCK_R, CLOCK_R, xp, yp, 2.5, 1.0, SECCOND_FG);
  face.pushSprite(5, 5, TFT_TRANSPARENT);
}

// =========================================================================
// Get coordinates of end of a line, pivot at x,y, length r, angle a
// =========================================================================
// Coordinates are returned to caller via the xp and yp pointers
#define DEG2RAD 0.0174532925
void getCoord(int16_t x, int16_t y, float *xp, float *yp, int16_t r, float a)
{
  float sx1 = cos( (a - 90) * DEG2RAD);
  float sy1 = sin( (a - 90) * DEG2RAD);
  *xp =  sx1 * r + x;
  *yp =  sy1 * r + y;
}

void syncTime(void){
  targetTime = millis() + 100;
 rtc.getTime(&timeStruct);
  time_secs = timeStruct.hours * 3600 + timeStruct.minutes * 60 + timeStruct.seconds;
  //rtc.getTime(&tStruct);
   // char rtc_time[10];
   // sprintf(rtc_time, "%d:%d:%d", tStruct.hours, tStruct.minutes, tStruct.seconds);
    //Serial.println(rtc_time);

}
void printLocalTime(){
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
    return;
  }
  Serial.println("");
  Serial.println(&timeinfo, "%H:%M:%S");  //"%A, %B %d %Y %H:%M:%S"%A	returns day of week
/* %B	returns month of year
%d	returns day of month
%Y	returns year
%H	returns hour
%M	returns minutes
%S	returns seconds
*/
}

compiler Output…

FQBN: esp32:esp32:XIAO_ESP32S3
Using board 'XIAO_ESP32S3' from platform in folder: C:\Users\Dude\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8
Using core 'esp32' from platform in folder: C:\Users\Dude\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8
Using library TFT_eSPI at version 2.5.23 in folder: D:\Arduino_projects\libraries\TFT_eSPI 
Using library SPI at version 2.0.0 in folder: C:\Users\Dude\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8\libraries\SPI 
Using library FS at version 2.0.0 in folder: C:\Users\Dude\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8\libraries\FS 
Using library SPIFFS at version 2.0.0 in folder: C:\Users\Dude\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8\libraries\SPIFFS 
Using library Wire at version 2.0.0 in folder: C:\Users\Dude\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8\libraries\Wire 
Using library RTClib at version 2.1.3 in folder: D:\Arduino_projects\libraries\RTClib 
Using library Adafruit BusIO at version 1.15.0 in folder: D:\Arduino_projects\libraries\Adafruit_BusIO 
Using library WiFi at version 2.0.0 in folder: C:\Users\Dude\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8\libraries\WiFi 
Using library I2C BM8563 RTC at version 1.0.4 in folder: D:\Arduino_projects\libraries\I2C_BM8563_RTC 
"C:\\Users\\Dude\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32s3-elf-gcc\\esp-2021r2-patch5-8.4.0/bin/xtensa-esp32s3-elf-size" -A "C:\\Users\\Dude\\AppData\\Local\\Temp\\arduino\\sketches\\20A0B1C3DA8FE222E73EFD3C122C752F/sketch_feb18a.ino.elf"
Sketch uses 767261 bytes (22%) of program storage space. Maximum is 3342336 bytes.
Global variables use 45156 bytes (13%) of dynamic memory, leaving 282524 bytes for local variables. Maximum is 327680 bytes.
"C:\Users\Dude\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\4.5.1/esptool.exe" --chip esp32s3 --port "COM23" --baud 921600  --before default_reset --after hard_reset write_flash  -z --flash_mode dio --flash_freq 80m --flash_size 8MB 0x0 "C:\Users\Dude\AppData\Local\Temp\arduino\sketches\20A0B1C3DA8FE222E73EFD3C122C752F/sketch_feb18a.ino.bootloader.bin" 0x8000 "C:\Users\Dude\AppData\Local\Temp\arduino\sketches\20A0B1C3DA8FE222E73EFD3C122C752F/sketch_feb18a.ino.partitions.bin" 0xe000 "C:\Users\Dude\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8/tools/partitions/boot_app0.bin" 0x10000 "C:\Users\Dude\AppData\Local\Temp\arduino\sketches\20A0B1C3DA8FE222E73EFD3C122C752F/sketch_feb18a.ino.bin" 
esptool.py v4.5.1
Serial port COM23
Connecting...
Chip is ESP32-S3 (revision v0.2)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 84:fc:e6:6a:d0:f0
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00003fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x000cbfff...
Compressed 15040 bytes to 10333...
Writing at 0x00000000... (100 %)
Wrote 15040 bytes (10333 compressed) at 0x00000000 in 0.2 seconds (effective 491.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.0 seconds (effective 566.0 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 792.0 kbit/s)...
Hash of data verified.
Compressed 767632 bytes to 497696...
Writing at 0x00010000... (3 %)
Writing at 0x000194dd... (6 %)
Writing at 0x00024b70... (9 %)
Writing at 0x00031004... (12 %)
Writing at 0x000368ff... (16 %)
Writing at 0x0003bf39... (19 %)
Writing at 0x00041b0b... (22 %)
Writing at 0x000470bd... (25 %)
Writing at 0x0004c47a... (29 %)
Writing at 0x00051568... (32 %)
Writing at 0x00056356... (35 %)
Writing at 0x0005b29a... (38 %)
Writing at 0x000600e4... (41 %)
Writing at 0x00065220... (45 %)
Writing at 0x0006a22e... (48 %)
Writing at 0x0006f7a9... (51 %)
Writing at 0x00075247... (54 %)
Writing at 0x00079fcb... (58 %)
Writing at 0x0007f0fd... (61 %)
Writing at 0x00083ff5... (64 %)
Writing at 0x0008949f... (67 %)
Writing at 0x0008e9c1... (70 %)
Writing at 0x000945a9... (74 %)
Writing at 0x00099c83... (77 %)
Writing at 0x0009f2f3... (80 %)
Writing at 0x000a77b9... (83 %)
Writing at 0x000afe79... (87 %)
Writing at 0x000b5548... (90 %)
Writing at 0x000bdf3a... (93 %)
Writing at 0x000c378c... (96 %)
Writing at 0x000c9258... (100 %)
Wrote 767632 bytes (497696 compressed) at 0x00010000 in 5.6 seconds (effective 1102.2 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Serial OUTPUT

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0x2b (SPI_FAST_FLASH_BOOT)
Saved PC:0x420817fa
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a38
entry 0x403c98d4


Power ON 

Program C:\Users\Dude\AppData\Local\Temp\.arduinoIDE-unsaved2024118-13664-141pncu.bvqe\sketch_feb18a\sketch_feb18a.ino compiled on Feb 18 2024 at 18:52:07

.

ESP32 Chip model = ESP32-S3 Rev 0
This chip has 2 cores
Chip ID: 7000304
Connected to :GlassSurf-2.4
Got IP: 192.168.1.166

07:54:33

HTH
GL :slight_smile: PJ

I have been working on this for a week, with no success. I cannot get the HardwareTest to work. It compiles, but … crashes every single time. I grabbed @PJ_Glasso 's version above that reportedly works, and I get the same thing.

Compiler output:

Using library TFT_eSPI at version 2.5.23 in folder: /Users/davidgs/Documents/Arduino/libraries/TFT_eSPI 
Using library SPI at version 2.0.0 in folder: /Users/davidgs/Library/Arduino15/packages/esp32/hardware/esp32/2.0.17/libraries/SPI 
Using library FS at version 2.0.0 in folder: /Users/davidgs/Library/Arduino15/packages/esp32/hardware/esp32/2.0.17/libraries/FS 
Using library SPIFFS at version 2.0.0 in folder: /Users/davidgs/Library/Arduino15/packages/esp32/hardware/esp32/2.0.17/libraries/SPIFFS 
Using library Wire at version 2.0.0 in folder: /Users/davidgs/Library/Arduino15/packages/esp32/hardware/esp32/2.0.17/libraries/Wire 
Using library RTClib at version 2.1.4 in folder: /Users/davidgs/Documents/Arduino/libraries/RTClib 
Using library Adafruit BusIO at version 1.16.1 in folder: /Users/davidgs/Documents/Arduino/libraries/Adafruit_BusIO 
Using library WiFi at version 2.0.0 in folder: /Users/davidgs/Library/Arduino15/packages/esp32/hardware/esp32/2.0.17/libraries/WiFi 
Using library I2C BM8563 RTC at version 1.0.4 in folder: /Users/davidgs/Documents/Arduino/libraries/I2C_BM8563_RTC 

So that all looks good, and it uploads correctly.

Serial port output:


ELF file SHA256: e2ae8bfd1fce9ab7

Rebooting...
ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x3 (RTC_SW_SYS_RST),boot:0x9 (SPI_FAST_FLASH_BOOT)
Saved PC:0x40381d8c
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd5810,len:0x438
load:0x403cc710,len:0x90c
load:0x403ce710,len:0x2624
entry 0x403cc710

Power ON 

Program /private/var/folders/qj/29prys7s1lq__4xzjsfmxjkm0000gn/T/.arduinoIDE-unsaved2024724-94048-k7omrz.hrhe/sketch_aug24a/sketch_aug24a.ino compiled on Aug 24 2024 at 11:38:16

Guru Meditation Error: Core  0 panic'ed (Store access fault). Exception was unhandled.

Core  0 register dump:
MEPC    : 0x420034a2  RA      : 0x42003494  SP      : 0x3fc9dea0  GP      : 0x3fc8e000  
TP      : 0x3fc831a0  T0      : 0xffffffff  T1      : 0xffc3ffff  T2      : 0x00000001  
S0/FP   : 0x60004000  S1      : 0x3fc9141c  A0      : 0x00000001  A1      : 0xffffffff  
A2      : 0x00000000  A3      : 0xfdffffff  A4      : 0x08000000  A5      : 0x00000010  
A6      : 0x00000000  A7      : 0x04c4b400  S2      : 0x00000001  S3      : 0x3fc96000  
S4      : 0x00000000  S5      : 0x00000000  S6      : 0x00000000  S7      : 0x00000000  
S8      : 0x00000000  S9      : 0x00000000  S10     : 0x00000000  S11     : 0x00000000  
T3      : 0x00000000  T4      : 0x0000000f  T5      : 0x003c0000  T6      : 0x00000003  
MSTATUS : 0x00001881  MTVEC   : 0x40380001  MCAUSE  : 0x00000007  MTVAL   : 0x00000010  
MHARTID : 0x00000000  
Stack memory:
3fc9dea0: 0x00000003 0x00000000 0x02625a00 0x00000001 0x00000001 0x3fc91000 0x3fc9141c 0x420037b4
3fc9dec0: 0x00000000 0x00000000 0x00000000 0x3fc96000 0x00000000 0x3fc91000 0x3fc91000 0x420005bc
3fc9dee0: 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5
3fc9df00: 0x4200d3ec 0x403895e6 0x00000000 0x3fc8e000 0x3fc831a0 0x00000000 0x00000000 0x00000000
3fc9df20: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x9dd2898a
3fc9df40: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
3fc9df60: 0x00000000 0x3fc96000 0x00000000 0x4200d3fc 0x00000000 0x00000000 0x00000000 0x403895e6
3fc9df80: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5
3fc9dfa0: 0xa5a5a5a5 0xa5a5a5a5 0xbaad5678 0x00000160 0xabba1234 0x00000154 0x3fc9de00 0x000009c9
3fc9dfc0: 0x3fc92e5c 0x3fc92e5c 0x3fc9dfb8 0x3fc92e54 0x00000018 0x3b9e3a3b 0xdb76f3f3 0x3fc9dfb8
3fc9dfe0: 0x00000000 0x00000001 0x3fc9bfa8 0x706f6f6c 0x6b736154 0xe7d79700 0x000c649e 0x00000000
3fc9e000: 0x3fc9dfa0 0x00000001 0x00000002 0x00000000 0x00000000 0x00000000 0x3fc97cb4 0x3fc97d1c
3fc9e020: 0x3fc97d84 0x00000000 0x00000000 0x00000001 0x00000000 0x00000000 0x00000000 0x4208394a
3fc9e040: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
3fc9e060: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
3fc9e080: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
3fc9e0a0: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
3fc9e0c0: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
3fc9e0e0: 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
3fc9e100: 0x00000000 0x00000000 0x12000000 0xbaad5678 0x00000060 0xabba1234 0x00000054 0x00000000
3fc9e120: 0x3fc9e11c 0x00000000 0x00000000 0x00000000 0x3fc9e134 0xffffffff 0x3fc9e134 0x3fc9e134
3fc9e140: 0x00000000 0x3fc9e148 0xffffffff 0x3fc9e148 0x3fc9e148 0x00000001 0x00000001 0x00000000
3fc9e160: 0x1800ffff 0x00000000 0xb33fffff 0x00000000 0xbaad5678 0x00000160 0xabba1234 0x00000154
3fc9e180: 0x3fc9e1d4 0x3fc9e1d4 0x3fc9e2d4 0x3fc9e2d3 0x00000000 0x3fc9e198 0xffffffff 0x3fc9e198
3fc9e1a0: 0x3fc9e198 0x00000000 0x3fc9e1ac 0xffffffff 0x3fc9e1ac 0x3fc9e1ac 0x00000000 0x00000100
3fc9e1c0: 0x00000001 0xc100ffff 0x00000000 0xb33fffff 0x00000000 0xe6bbf03b 0xfe337f67 0x9426eabd
3fc9e1e0: 0xc23ba1c0 0x4c83d000 0xe0b20d60 0xc55fe550 0xfa7ff9b3 0xf64ef7ef 0xf86fe1ee 0xd2befde7
3fc9e200: 0x2380b0e0 0xa9c0b800 0xae80b165 0xc025fd37 0xcca3bcef 0x67fcf5cb 0xce6dd629 0x50e5eab1
3fc9e220: 0xc2004654 0x61e00d70 0x33833245 0x64115eb8 0xb0e9ecf7 0x5cbaaf46 0xb77f87e4 0x36a5ffde
3fc9e240: 0xa1030350 0x19412d81 0x8012461c 0xd0a0661d 0xcc67db49 0x6fdfabca 0x93dc7757 0x36f7a65d
3fc9e260: 0x0118c8d6 0x01a7453b 0xd61b4494 0x9422e27a 0x7f372ce0 0x393d06b8 0xe47c8e35 0xe6f9ef91
3fc9e280: 0x1f40004b 0xf5121a70 0xa3541ad8 0x95056594 0xc7c59cae 0xfffe5faf 0xa75ef5e0 0xbbafd19d

I’m using the supplied versions of libraries from SEEED, not the ones the library manager would install. I’ve edited the <User_Setup_Select.h> as required:

// #include <User_Setup.h>           // Default setup is root library folder
#include <User_Setups/Setup66_Seeed_XIAO_Round.h>  // Setup file for Seeed XIAO with GC9A01 240x240

Still, no joy.

Has anyone actually gotten these Round Displays to work with the XIAO ESP32C3??

What’s the secret?

Hi there,
Are you using the BSP 2.0.8 try it with that and it should work.
HTH
GL :slight_smile: PJ :v:

You’re close so not to far to go. :+1:

That was it! I was using espressif BSP 2.0.17. It turns out that only v2.0.8 will work with these displays.

Thank you for the final piece of the puzzle. The Xiao wiki really needs to get updated with this specific information.

Thanks again @PJ_Glasso

2 Likes

great! mark that as a solution so others can figure it out, Man you said it about updating the stuff… LOL :+1:
GL :slight_smile: PJ :v:

1 Like

Wow,
What a mess this thing is… I need to talk to Seeed about returning some of the units I got…

its not worth the shipping cost… just give away to some kid to use as a science fair project

the eyeball sketch makes a good halloween decoration… quickly get them working and you can sell for 4x your cost… hurry up you got 15 days left

1 Like

Hi there,

I must have a good mojo or smthing, I have NEVER received a NON-working product from Seeed Studio
Notice I didn’t use the work “BAD” :smile:
Hardware is always good… Software it’s a WIP :wink: :v:

GL :slight_smile: PJ :+1:

1 Like

Those are old and not really the same as Seeed Round Display.
But even better would be if they followed you. like using the face tracker in the S3 sense steaming camera
:v:
GL :slight_smile: PJ

1 Like