wuhanstudio / rt-u8g2

U8g2 for rt-thread - a monochrome graphics library
Other
77 stars 24 forks source link

GDE029A1墨水屏 花屏 #8

Closed illusionlee closed 4 years ago

illusionlee commented 4 years ago

你好,我使用的佳显GDE029A1墨水屏,芯片是IL3820的,但是根据样例写了个Demo,显示屏却有花屏的现象,表现为屏幕下半部分有很多横线,斑状的黑块。不知道这个怎么传照片,只好这么形容了。 代码如下:

#include <rthw.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <u8g2_port.h>

#define OLED_SPI_PIN_CLK                   21  // PB16
#define OLED_SPI_PIN_MOSI                  22  // PB17
#define OLED_SPI_PIN_RES                   29  // PB9
#define OLED_SPI_PIN_DC                    28  // PB8
#define OLED_SPI_PIN_CS                    27  // PB7

static void u8g2_page_buffer_chinese(int argc, char *argv[])
{
    u8g2_t u8g2;
    // Initialization
    u8g2_Setup_il3820_v2_296x128_2( &u8g2, U8G2_R0, u8x8_byte_4wire_sw_spi, u8x8_rt_gpio_and_delay);
    u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_SPI_CLOCK, OLED_SPI_PIN_CLK);
    u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_SPI_DATA, OLED_SPI_PIN_MOSI);
    u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_CS, OLED_SPI_PIN_CS);
    u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_DC, OLED_SPI_PIN_DC);
    u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_RESET, OLED_SPI_PIN_RES);

    u8g2_InitDisplay(&u8g2);
    u8g2_SetPowerSave(&u8g2, 0);

    u8g2_SetFont(&u8g2, u8g2_font_baby_tf);
    rt_kprintf("u8g2_SetFont\n");
    u8g2_DrawStr(&u8g2, 0, 0, "U8g2 on RT-Thread-1");
    u8g2_DrawStr(&u8g2, 0, 5, "U8g2 on RT-Thread-2");
    u8g2_DrawStr(&u8g2, 0, 15, "U8g2 on RT-Thread-3");
    u8g2_SendBuffer(&u8g2);
}

希望能得到你的帮助:

1、如何分析下这个初始化后,为何会有乱码显示,定位下问题点

2、我在使用的时候发现, 这个长和宽好像不准确,上面程序在实际屏幕上,第一行U8g2 on RT-Thread-1没有打印出来,如何确认屏幕的长和宽,在什么位置定义和修改。

再次表示感谢!

wuhanstudio commented 4 years ago

你好,

根据初始化代码来看屏幕大小是 296x128 的 (u8g2_Setup_il3820_v2_296x128_2)

如果你的屏幕大于 240 像素的话,需要把 u8g2.h 里这一行取消注释,这样显示就正常了:

#define U8G2_16BIT

https://github.com/wuhanstudio/rt-u8g2/blob/master/src/u8g2.h

illusionlee commented 4 years ago

非常感谢!现在已经正常工作了,哈哈 ,开心