Adafruit e-link 2.13 Featherwing colour dispaly not working with nRF54L15DK #92924
Unanswered
pradeep2481
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi All,
I am trying to write to "adafruit e-link 2.13 Featherwing colour dispaly" from nRF54L15DK running zephyr. With ESP32 i am able to write to the display. But with nRF54L15DK and Zephyr nothing changes in the display even though the ssd1680 driver returns success.
I am using the following device overlay file.
&spi00 {
compatible = "nordic,nrf-spim";
max-frequency = <8000000>;
status = "okay";
pinctrl-0 = <&spi00_default>;
pinctrl-1 = <&spi00_sleep>;
pinctrl-names = "default", "sleep";
cs-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>, // mx25r64
<&gpio2 10 GPIO_ACTIVE_LOW>; // FeatherWing CS pin on P2.10
};
&spi00_default {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 6)>, // FeatherWing SCK pin on P1.06
<NRF_PSEL(SPIM_MOSI, 1, 7)>; // FeatherWing MOSI pin on P1.07
// <NRF_PSEL(SPIM_MISO, 1, 13)>; // Uncomment if MISO is used
};
};
&spi00_sleep {
group1 {
psels = <NRF_PSEL(SPIM_SCK, 1, 6)>, // FeatherWing SCK pin on P1.06
<NRF_PSEL(SPIM_MOSI, 1, 7)>; // FeatherWing MOSI pin on P1.07
// <NRF_PSEL(SPIM_MISO, 1, 13)>; // Uncomment if MISO is used
};
};
/ {
mipi_dbi_featherwing_epaper {
compatible = "zephyr,mipi-dbi-spi";
spi-dev = <&spi00>;
dc-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>; // FeatherWing DC pin on P1.11
reset-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; // FeatherWing RESET pin on P1.12
#address-cells = <1>;
#size-cells = <0>;
ssd16xx_featherwing_epaper: ssd16xxfb@1 {
compatible = "solomon,ssd1680"; // SSD1680 controller
mipi-max-frequency = <2000000>; // Adjust based on FeatherWing specs
reg = <1>;
width = <250>; // FeatherWing width
height = <122>; // FeatherWing height
busy-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; // FeatherWing BUSY pin on P2.8, not connected, changed ssd 1680 to use delay instead.
tssv = <0x80>;
full {
border-waveform = <0x05>;
};
partial {
border-waveform = <0x3c>;
};
};
};
};
/ {
chosen {
nvs-storage = &storage_partition;
zephyr,display = &ssd16xx_featherwing_epaper;
};
};
My application is as below.
#include <zephyr/drivers/display.h>
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(main);
void main(void) {
const struct device *display_dev;
LOG_INF("Initializing eInk display...");
// Get the display device
display_dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_display));
LOG_INF("eInk display init done");
LOG_INF("Device name: %s", display_dev->name);
LOG_INF("Device state: %d", display_dev->state);
while (!device_is_ready(display_dev))
{
LOG_ERR("Device not ready");
k_msleep(100);
}
LOG_INF("eInk display ready");
// Clear the display
display_blanking_off(display_dev);
uint8_t buf[250 * 120 / 8] = {0x0A}; // All white
struct display_buffer_descriptor desc = {
.buf_size = sizeof(buf),
.width = 250,
.height = 120,
.pitch = 250,
};
// Write buffer to the display
int ret = display_write(display_dev, 0, 0, &desc, buf);
if (ret) {
LOG_ERR("display_write failed: %d", ret);
} else {
LOG_INF("Buffer written to display!");
}
LOG_INF("Hello World written to display!");
}
Any advice would be very much appreciated!
Best regards,
Pradeep
Beta Was this translation helpful? Give feedback.
All reactions