I am currently working with a 3.97-inch 480×800 IPS display using the ST7701S driver IC, which supports a hybrid SPI + RGB (DPI) interface.
My target platform is a Raspberry Pi 3 Model B+ running Raspberry Pi OS (Linux).
Current Status
I understand that the RGB DPI interface is handled by the Raspberry Pi kernel using a device tree overlay (.dtbo).
I am able to prepare or adapt a DPI/RGB overlay with correct resolution, timing, and pixel format.
However, the main challenge is initializing the ST7701S controller over SPI before enabling the RGB interface.
SPI Initialization Issue
I understand this sequence configures:
Command page selection / register unlocking
Power and voltage settings
Gamma and panel parameters
Sleep-out and display-on commands
On Raspberry Pi (Linux), this initialization must be done:
Either via a kernel driver
Or via a device tree + SPI init mechanism
before the DPI RGB interface becomes active.
like i need help with any of the following
A Linux kernel driver reference or example for ST7701S (SPI + RGB/DPI)
A device tree overlay (.dts / .dtbo) example that includes:
SPI initialization commands
RGB DPI configuration
i have attached the files for DPI RGB INTERFACE AND ST7701 INITIALIZATION sequence code provided by manufacturer
the below is the initialization sequence code :
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x13);
WriteComm (0xEF);
WriteData (0x08);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x10);
WriteComm (0xC0);
WriteData (0x63);
WriteData (0x00);
WriteComm (0xC1);
WriteData (0x09);
WriteData (0x02);
WriteComm (0xC2);
WriteData (0x20);
WriteData (0x02);
WriteComm (0xCC);
WriteData (0x18);
WriteComm (0xB0);
WriteData (0x40);
WriteData (0x0E);
WriteData (0x51);
WriteData (0x0F);
WriteData (0x11);
WriteData (0x07);
WriteData (0x00);
WriteData (0x09);
WriteData (0x06);
WriteData (0x1E);
WriteData (0x04);
WriteData (0x12);
WriteData (0x11);
WriteData (0x64);
WriteData (0x29);
WriteData (0xDF);
WriteComm (0xB1);
WriteData (0x40);
WriteData (0x07);
WriteData (0x4C);
WriteData (0x0A);
WriteData (0x0E);
WriteData (0x04);
WriteData (0x00);
WriteData (0x08);
WriteData (0x09);
WriteData (0x1D);
WriteData (0x01);
WriteData (0x0E);
WriteData (0x0C);
WriteData (0x6A);
WriteData (0x34);
WriteData (0xDF);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x11);
WriteComm (0xB0);
WriteData (0x30);
WriteComm (0xB1);
WriteData (0x48);
WriteComm (0xB2);
WriteData (0x80);
WriteComm (0xB3);
WriteData (0x80);
WriteComm (0xB5);
WriteData (0x4F);
WriteComm (0xB7);
WriteData (0x85);
WriteComm (0xB8);
WriteData (0x23);
WriteComm (0xB9);
WriteData (0x22);
WriteData (0x13);
WriteComm (0xBB);
WriteData (0x03);
WriteComm (0xBC);
WriteData (0x10);
WriteComm (0xC0);
WriteData (0x89);
WriteComm (0xC1);
WriteData (0x78);
WriteComm (0xC2);
WriteData (0x78);
WriteComm (0xEF);
WriteData (0x08);
WriteData (0x08);
WriteData (0x08);
WriteData (0x4C);
WriteData (0x3F);
WriteData (0x54);
WriteComm (0xD0);
WriteData (0x88);
WriteComm (0xE0);
WriteData (0x00);
WriteData (0x00);
WriteData (0x02);
WriteComm (0xE1);
WriteData (0x04);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x05);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x10);
WriteData (0x10);
WriteComm (0xE2);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xE3);
WriteData (0x00);
WriteData (0x00);
WriteData (0x33);
WriteData (0x00);
WriteComm (0xE4);
WriteData (0x22);
WriteData (0x00);
WriteComm (0xE5);
WriteData (0x03);
WriteData (0x34);
WriteData (0xAF);
WriteData (0xB3);
WriteData (0x05);
WriteData (0x34);
WriteData (0xAF);
WriteData (0xB3);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xE6);
WriteData (0x00);
WriteData (0x00);
WriteData (0x33);
WriteData (0x00);
WriteComm (0xE7);
WriteData (0x22);
WriteData (0x00);
WriteComm (0xE8);
WriteData (0x04);
WriteData (0x34);
WriteData (0xAF);
WriteData (0xB3);
WriteData (0x06);
WriteData (0x34);
WriteData (0xAF);
WriteData (0xB3);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xEB);
WriteData (0x02);
WriteData (0x00);
WriteData (0x40);
WriteData (0x40);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xEC);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xED);
WriteData (0xFA);
WriteData (0x45);
WriteData (0x0B);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xB0);
WriteData (0x54);
WriteData (0xAF);
WriteComm (0xEF);
WriteData (0x08);
WriteData (0x08);
WriteData (0x08);
WriteData (0x45);
WriteData (0x3F);
WriteData (0x54);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x13);
WriteComm (0xE6);
WriteData (0x16);
WriteData (0x7c);
WriteComm (0xe8);
WriteData (0x00);
WriteData (0x0E);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0x11);
Delay_ms(120);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x13);
WriteComm (0xe8);
WriteData (0x00);
WriteData (0x0C);
Delay_ms(10);
WriteComm (0xe8);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0x35);
WriteData (0x00);
WriteComm (0x29);
Delay_ms(200);
like now how i will interface or i can add this initialization code in device overlay.
Hardware Details
Display driver IC: ST7701S
Resolution: 480×800
Interface: SPI (command) + RGB DPI (pixel data)
Platform: Raspberry Pi 3 Model B+
OS: Raspberry Pi OS / Linux
My target platform is a Raspberry Pi 3 Model B+ running Raspberry Pi OS (Linux).
Current Status
I understand that the RGB DPI interface is handled by the Raspberry Pi kernel using a device tree overlay (.dtbo).
I am able to prepare or adapt a DPI/RGB overlay with correct resolution, timing, and pixel format.
However, the main challenge is initializing the ST7701S controller over SPI before enabling the RGB interface.
SPI Initialization Issue
I understand this sequence configures:
Command page selection / register unlocking
Power and voltage settings
Gamma and panel parameters
Sleep-out and display-on commands
On Raspberry Pi (Linux), this initialization must be done:
Either via a kernel driver
Or via a device tree + SPI init mechanism
before the DPI RGB interface becomes active.
like i need help with any of the following
A Linux kernel driver reference or example for ST7701S (SPI + RGB/DPI)
A device tree overlay (.dts / .dtbo) example that includes:
SPI initialization commands
RGB DPI configuration
i have attached the files for DPI RGB INTERFACE AND ST7701 INITIALIZATION sequence code provided by manufacturer
the below is the initialization sequence code :
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x13);
WriteComm (0xEF);
WriteData (0x08);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x10);
WriteComm (0xC0);
WriteData (0x63);
WriteData (0x00);
WriteComm (0xC1);
WriteData (0x09);
WriteData (0x02);
WriteComm (0xC2);
WriteData (0x20);
WriteData (0x02);
WriteComm (0xCC);
WriteData (0x18);
WriteComm (0xB0);
WriteData (0x40);
WriteData (0x0E);
WriteData (0x51);
WriteData (0x0F);
WriteData (0x11);
WriteData (0x07);
WriteData (0x00);
WriteData (0x09);
WriteData (0x06);
WriteData (0x1E);
WriteData (0x04);
WriteData (0x12);
WriteData (0x11);
WriteData (0x64);
WriteData (0x29);
WriteData (0xDF);
WriteComm (0xB1);
WriteData (0x40);
WriteData (0x07);
WriteData (0x4C);
WriteData (0x0A);
WriteData (0x0E);
WriteData (0x04);
WriteData (0x00);
WriteData (0x08);
WriteData (0x09);
WriteData (0x1D);
WriteData (0x01);
WriteData (0x0E);
WriteData (0x0C);
WriteData (0x6A);
WriteData (0x34);
WriteData (0xDF);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x11);
WriteComm (0xB0);
WriteData (0x30);
WriteComm (0xB1);
WriteData (0x48);
WriteComm (0xB2);
WriteData (0x80);
WriteComm (0xB3);
WriteData (0x80);
WriteComm (0xB5);
WriteData (0x4F);
WriteComm (0xB7);
WriteData (0x85);
WriteComm (0xB8);
WriteData (0x23);
WriteComm (0xB9);
WriteData (0x22);
WriteData (0x13);
WriteComm (0xBB);
WriteData (0x03);
WriteComm (0xBC);
WriteData (0x10);
WriteComm (0xC0);
WriteData (0x89);
WriteComm (0xC1);
WriteData (0x78);
WriteComm (0xC2);
WriteData (0x78);
WriteComm (0xEF);
WriteData (0x08);
WriteData (0x08);
WriteData (0x08);
WriteData (0x4C);
WriteData (0x3F);
WriteData (0x54);
WriteComm (0xD0);
WriteData (0x88);
WriteComm (0xE0);
WriteData (0x00);
WriteData (0x00);
WriteData (0x02);
WriteComm (0xE1);
WriteData (0x04);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x05);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x10);
WriteData (0x10);
WriteComm (0xE2);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xE3);
WriteData (0x00);
WriteData (0x00);
WriteData (0x33);
WriteData (0x00);
WriteComm (0xE4);
WriteData (0x22);
WriteData (0x00);
WriteComm (0xE5);
WriteData (0x03);
WriteData (0x34);
WriteData (0xAF);
WriteData (0xB3);
WriteData (0x05);
WriteData (0x34);
WriteData (0xAF);
WriteData (0xB3);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xE6);
WriteData (0x00);
WriteData (0x00);
WriteData (0x33);
WriteData (0x00);
WriteComm (0xE7);
WriteData (0x22);
WriteData (0x00);
WriteComm (0xE8);
WriteData (0x04);
WriteData (0x34);
WriteData (0xAF);
WriteData (0xB3);
WriteData (0x06);
WriteData (0x34);
WriteData (0xAF);
WriteData (0xB3);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xEB);
WriteData (0x02);
WriteData (0x00);
WriteData (0x40);
WriteData (0x40);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xEC);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xED);
WriteData (0xFA);
WriteData (0x45);
WriteData (0x0B);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xFF);
WriteData (0xB0);
WriteData (0x54);
WriteData (0xAF);
WriteComm (0xEF);
WriteData (0x08);
WriteData (0x08);
WriteData (0x08);
WriteData (0x45);
WriteData (0x3F);
WriteData (0x54);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x13);
WriteComm (0xE6);
WriteData (0x16);
WriteData (0x7c);
WriteComm (0xe8);
WriteData (0x00);
WriteData (0x0E);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0x11);
Delay_ms(120);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x13);
WriteComm (0xe8);
WriteData (0x00);
WriteData (0x0C);
Delay_ms(10);
WriteComm (0xe8);
WriteData (0x00);
WriteData (0x00);
WriteComm (0xFF);
WriteData (0x77);
WriteData (0x01);
WriteData (0x00);
WriteData (0x00);
WriteData (0x00);
WriteComm (0x35);
WriteData (0x00);
WriteComm (0x29);
Delay_ms(200);
like now how i will interface or i can add this initialization code in device overlay.
Hardware Details
Display driver IC: ST7701S
Resolution: 480×800
Interface: SPI (command) + RGB DPI (pixel data)
Platform: Raspberry Pi 3 Model B+
OS: Raspberry Pi OS / Linux
Statistics: Posted by animesh — Mon Jan 19, 2026 8:34 pm