So Yea, It’s a GO with the round display , build on 3.1.1
LVGL example…
NO MCUBOOT ,just does it work test, filmed on a Potato
![]()
GL
PJ ![]()
So Yea, It’s a GO with the round display , build on 3.1.1
LVGL example…
NO MCUBOOT ,just does it work test, filmed on a Potato
![]()
GL
PJ ![]()
Hi there,
SO watch face time… Let’s start there. ![]()
I have enclosed the project folder, You know what to do. ![]()
if not read the read me. (if need be I can do a walkthrough of the process, it’s easy once you get it down.)
so the Zip is there. the project folder, mind the readme.text
HTH
GL
PJ ![]()
I think that was added in later versions too… so if you have the ulgtra rare prototype version…
Hi there,
Yea, I think I have one of each, But this is using LVGL, I like the TFT_eSPI lib better. but it’s a start
Glad it works is all here, before some DH starts yakin. ![]()
It’s a great display ,would be nice to have a bare bonzes model Display and Touch only. ![]()
![]()
would be REAL nice ![]()
GL
PJ ![]()
Great idea. I really like it.
When it’s up and running, it would be good to add it to the wiki:
Thanks for the binary. I used the recover_flash script to flash it:
python xiao_nrf54l15_recover_flash.py --hex merged.hex --mass-erase
Awesome.
Can I add this to the Xiao nrf54L15 samples library I’m working on?
I’m up to 15 working out of the box samples now!
Is it possible to automatically synchronize the time using an OpenThread network connection with the SNTP protocol over IPv6?
Hi there,
So from the Quoted Question, to google AI , apparently So, However not really related to this topic.
I won’t spoil the journey of discovery for you , but snip this to You.
Yes, it is possible to automatically synchronize time using OpenThread with SNTP over IPv6, but with important caveats. While OpenThread has its own native time synchronization feature for internal network use, it can be configured to use an external SNTP server, including one accessible via IPv6. However, the OpenThread time sync service is separate from SNTP, and it is the responsibility of the device acting as the SNTP server to provide IPv6 connectivity to its clients.
"
However I think it will be an issue here:
" For a device in an OpenThread network to synchronize with an external SNTP server, it must have an IPv6 route to that server. This means the Thread network must have a connection to the external world, either through a Border Router or a device that acts as an SNTP server with an IPv6 address. "
GL
PJ ![]()
I see you have the SDcard in there, did you get that working with the 54l?
Never mind, I got it working there’s a working SD card sample for the xiao nrf54l15 in the xiao expansion base now.
I’m trying to find a way to get the real time for this example.
Hi there,
So here is the basic 2 Face Rolo Watch faces switch between the two, just a basic demo with code. Images are HQ jpegs converted to c arrays then to .h files, put them in the SRC directory if you want to use your own, also any 240x240 will work with the round display.
The Hands and date letters are generated and the positions mapped out. I will demonstrate the basic Nrf_sdk/West flow changing the position and building and flashing.
I like to use a target named build directory to keep things good. You should too. ![]()
Here is the whole log of the process:
Working directory: d:\Nordic\myapps\workspace\watchface
SDK: nRF Connect SDK v3.1.1
Toolchain: nRF Connect SDK Toolchain v3.1.1
PS D:\Nordic\myapps\workspace\watchface> west build -p always -d build_xiao `
>> -b xiao_nrf54l15/nrf54l15/cpuapp . -- `
>> -DSHIELD=seeed_xiao_round_display `
>> -D BOARD_ROOT=C:/ncs/Seeed/platform-seeedboards/zephyr `
>> -DSB_CONFIG_BOOTLOADER_MCUBOOT=n `
>> -DCONFIG_BOOTLOADER_MCUBOOT=n
-- west build: generating a build system
Loading Zephyr module(s) (Zephyr base): sysbuild_default
-- Found Python3: C:/ncs/toolchains/c1a76fddb2/opt/bin/python.exe (found suitable version "3.12.4", minimum required is "3.10") found components: Interpreter
-- Cache files will be written to: C:/ncs/v3.1.1/zephyr/.cache
-- Found west (found suitable version "1.4.0", minimum required is "0.14.0")
-- Board: xiao_nrf54l15, qualifiers: nrf54l15/cpuapp
-- Shield(s): seeed_xiao_round_display
Parsing C:/ncs/v3.1.1/zephyr/share/sysbuild/Kconfig
Loaded configuration 'D:/Nordic/myapps/workspace/watchface/build_xiao/_sysbuild/empty.conf'
Merged configuration 'D:/Nordic/myapps/workspace/watchface/build_xiao/_sysbuild/empty.conf'
Merged configuration 'D:/Nordic/myapps/workspace/watchface/build_xiao/zephyr/misc/generated/extra_kconfig_options.conf'
Configuration saved to 'D:/Nordic/myapps/workspace/watchface/build_xiao/zephyr/.config'
Kconfig header saved to 'D:/Nordic/myapps/workspace/watchface/build_xiao/_sysbuild/autoconf.h'
--
*******************************
* Running CMake for watchface *
*******************************
Loading Zephyr default modules (Zephyr base).
-- Application: D:/Nordic/myapps/workspace/watchface
-- CMake version: 3.21.0
-- Found Python3: C:/ncs/toolchains/c1a76fddb2/opt/bin/python.exe (found suitable version "3.12.4", minimum required is "3.10") found components: Interpreter
-- Cache files will be written to: C:/ncs/v3.1.1/zephyr/.cache
-- Zephyr version: 4.1.99 (C:/ncs/v3.1.1/zephyr)
-- Found west (found suitable version "1.4.0", minimum required is "0.14.0")
-- Board: xiao_nrf54l15, qualifiers: nrf54l15/cpuapp
-- Shield(s): seeed_xiao_round_display
-- Found host-tools: zephyr 0.17.0 (C:/ncs/toolchains/c1a76fddb2/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.17.0 (C:/ncs/toolchains/c1a76fddb2/opt/zephyr-sdk)
-- Found Dtc: C:/ncs/toolchains/c1a76fddb2/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
-- Found BOARD.dts: C:/ncs/Seeed/platform-seeedboards/zephyr/boards/arm/xiao_nrf54l15/xiao_nrf54l15_nrf54l15_cpuapp.dts
-- Found devicetree overlay: C:/ncs/v3.1.1/zephyr/boards/shields/seeed_xiao_round_display/seeed_xiao_round_display.overlay
-- Generated zephyr.dts: D:/Nordic/myapps/workspace/watchface/build_xiao/watchface/zephyr/zephyr.dts
-- Generated pickled edt: D:/Nordic/myapps/workspace/watchface/build_xiao/watchface/zephyr/edt.pickle
-- Generated devicetree_generated.h: D:/Nordic/myapps/workspace/watchface/build_xiao/watchface/zephyr/include/generated/zephyr/devicetree_generated.h
warning: Experimental symbol MIPI_DBI is enabled.
Parsing C:/ncs/v3.1.1/zephyr/Kconfig
Loaded configuration 'C:/ncs/Seeed/platform-seeedboards/zephyr/boards/arm/xiao_nrf54l15/xiao_nrf54l15_nrf54l15_cpuapp_defconfig'
Merged configuration 'D:/Nordic/myapps/workspace/watchface/prj.conf'
Merged configuration 'D:/Nordic/myapps/workspace/watchface/build_xiao/watchface/zephyr/misc/generated/extra_kconfig_options.conf'
Merged configuration 'D:/Nordic/myapps/workspace/watchface/build_xiao/watchface/zephyr/.config.sysbuild'
Configuration saved to 'D:/Nordic/myapps/workspace/watchface/build_xiao/watchface/zephyr/.config'
Kconfig header saved to 'D:/Nordic/myapps/workspace/watchface/build_xiao/watchface/zephyr/include/generated/zephyr/autoconf.h'
-- Found GnuLd: c:/ncs/toolchains/c1a76fddb2/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd.exe (found version "2.38")
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: C:/ncs/toolchains/c1a76fddb2/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe
=========== Generating psa_crypto_config ===============
Backup: CONFIG_MBEDTLS_PSA_CRYPTO_SPM: False
Backup: CONFIG_MBEDTLS_PSA_CRYPTO_C: True
Backup: CONFIG_MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER: False
Backup: CONFIG_MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT: False
Backup: CONFIG_MBEDTLS_THREADING_C: True
Backup: CONFIG_MBEDTLS_THREADING_ALT: True
=========== Checkpoint: backup ===============
Restore: CONFIG_MBEDTLS_PSA_CRYPTO_SPM: False
Restore: CONFIG_MBEDTLS_PSA_CRYPTO_C: True
Restore: CONFIG_MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER: False
Restore: CONFIG_MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT: False
Restore: CONFIG_MBEDTLS_THREADING_C: True
Restore: CONFIG_MBEDTLS_THREADING_ALT: True
=========== End psa_crypto_config ===============
=========== Generating psa_crypto_library_config ===============
Backup: CONFIG_MBEDTLS_PSA_CRYPTO_C: True
Backup: CONFIG_MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER: False
Backup: CONFIG_MBEDTLS_PSA_CRYPTO_SPM: False
Backup: CONFIG_MBEDTLS_USE_PSA_CRYPTO: True
Backup: CONFIG_MBEDTLS_PLATFORM_PRINTF_ALT: False
Backup: CONFIG_MBEDTLS_THREADING_C: True
Backup: CONFIG_MBEDTLS_THREADING_ALT: True
=========== Checkpoint: backup ===============
Restore: CONFIG_MBEDTLS_PSA_CRYPTO_C: True
Restore: CONFIG_MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER: False
Restore: CONFIG_MBEDTLS_PSA_CRYPTO_SPM: False
Restore: CONFIG_MBEDTLS_USE_PSA_CRYPTO: True
Restore: CONFIG_MBEDTLS_PLATFORM_PRINTF_ALT: False
Restore: CONFIG_MBEDTLS_THREADING_C: True
Restore: CONFIG_MBEDTLS_THREADING_ALT: True
=========== End psa_crypto_library_config ===============
-- Found gen_kobject_list: C:/ncs/v3.1.1/zephyr/scripts/build/gen_kobject_list.py
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Nordic/myapps/workspace/watchface/build_xiao/watchface
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Nordic/myapps/workspace/watchface/build_xiao
←[92m-- west build: building application
[5/10] Performing build step for 'watchface'
[4/551] Generating include/generated/zephyr/version.h
-- Zephyr version: 4.1.99 (C:/ncs/v3.1.1/zephyr), build: ncs-v3.1.1
[61/551] Building C object CMakeFiles/app.dir/src/main.c.obj
D:/Nordic/myapps/workspace/watchface/src/main.c:191:6: warning: return type of 'main' is not 'int' [-Wmain]
191 | void main(void)
| ^~~~
[551/551] Linking C executable zephyr\zephyr.elf
Memory region Used Size Region Size %age Used
FLASH: 537732 B 1428 KB 36.77%
RAM: 55536 B 188 KB 28.85%
IDT_LIST: 0 GB 32 KB 0.00%
Generating files from D:/Nordic/myapps/workspace/watchface/build_xiao/watchface/zephyr/zephyr.elf for board: xiao_nrf54l15
[10/10] Generating ../merged.hex
PS D:\Nordic\myapps\workspace\watchface> west flash -d build_xiao -r openocd
-- west flash: rebuilding
[0/5] Performing build step for 'watchface'
ninja: no work to do.
[4/5] cmd.exe /C "cd /D D:\Nordic\myapps\workspace\watchface\build_xiao\_sysbuild && C:\ncs\toolchains\c1a76fddb2\opt\bin\cmake.exe -E true"
-- west flash: using runner openocd
-- runners.openocd: Flashing file: D:/Nordic/myapps/workspace/watchface/build_xiao/merged.hex
Open On-Chip Debugger 0.12.0 (2023-01-14-23:37)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
nrf54l-load
Info : Using CMSIS-DAPv2 interface with VID:PID=0x2886:0x0066, serial=E4E44CBA
Info : CMSIS-DAP: SWD supported
Info : CMSIS-DAP: FW Version = 2.0.0
Info : CMSIS-DAP: Serial# = E4E44CBA
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 0
Info : CMSIS-DAP: Interface ready
Info : clock speed 1000 kHz
Info : SWD DPIDR 0x6ba02477
Info : [nrf54l.cpu] Cortex-M33 r1p0 processor detected
Info : [nrf54l.cpu] target has 8 breakpoints, 4 watchpoints
Info : starting gdb server for nrf54l.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : gdb port disabled
TargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------
0* nrf54l.cpu cortex_m little nrf54l.cpu running
1 nrf54l.aux mem_ap little nrf54l.cpu running
[nrf54l.cpu] halted due to debug-request, current mode: Thread
xPSR: 0xf9000000 pc: 0x00002574 msp: 0x20009aa0
537732 bytes written at address 0x00000000
downloaded 537732 bytes in 9.843083s (53.350 KiB/s)
shutdown command invoked
PS D:\Nordic\myapps\workspace\watchface>
watchface.zip (133.9 KB)
HTH
GL
PJ ![]()
You can use the compiler time to seeed
the RTC also.
![]()
Ah’ ![]()
Seed with compiler time or RTC or use a BLE time service.
I have done all three. seeding with compiler is what I used here
Works pretty well, no Wifi , on the S3 demo I used NTP server and WiFi, look at that one too!
![]()
PJ ![]()