新手上路
- 积分
- 40
- 金钱
- 40
- 注册时间
- 2018-4-8
- 在线时间
- 14 小时
|
发表于 2022-7-14 17:35:54
|
显示全部楼层
本帖最后由 flgee 于 2022-7-26 16:26 编辑
学完了正点原子linux驱动的教程,总觉得理解的不透彻,也正有楼主的想法想自己换一个屏试试自己学习的成果,弄了好久没弄出来,直到看到了LZ的贴子,果断干货240*240的ST7789V的屏出现黑白显示的可能的原因是时钟方向和有效沿还有初始化寄存器的值和LZ的不一样,可以这么改改试试
在LZ的基础上
1. fbtft_device.c 中的st7789s段内的 SPI_MODE_0 改为SPI_MODE_3
2.fb_st7789s.c中的 #define WIDTH 240 //这里改下分辨率240
#define HEIGHT 240 //这里改下分辨率240
static int init_display(struct fbtft_par *par)这个初始化函数改成下面这样
static int init_display(struct fbtft_par *par)
{
fbtft_par_dbg(DEBUG_INIT_DISPLAY, par, "%s()\n", __func__);
printk("zephyr: init_display\r\n");
par->fbtftops.reset(par);
/* startup sequence for MI0283QT-9A */
write_reg(par, 0x01); /* software reset */
mdelay(10);
write_reg(par, 0x11); /* software reset */
mdelay(120);
write_reg(par, 0x36,0x00); /* display off */
write_reg(par, 0x3A,0x06);
write_reg(par, 0xB2, 0x1F, 0x1F, 0x00, 0x33,0x33);
write_reg(par, 0xB7,0x12);
write_reg(par, 0xBB,0x35);
write_reg(par, 0xC0,0x2C);
write_reg(par, 0xC2,0x01);
write_reg(par, 0xC3,0x15);
write_reg(par, 0xC4,0x20);
write_reg(par, 0xC6,0x13);
write_reg(par, 0xD0,0xA4,0xA1);
write_reg(par, 0xD6,0xA1);
write_reg(par, 0xE0,0xF0,0x06,0x0D,0x0B,0x0A,0x07,0x2E,0x43,0x45,0x38,0x14,0x13,0x25,0x29);
write_reg(par, 0xE1,0xF0,0x07,0x0A,0x08,0x07,0x23,0x2E,0x33,0x44,0x3A,0x16,0x17,0x26,0x2C);
write_reg(par, 0xE4,0x1D,0x00,0x00);
write_reg(par, 0x21);
write_reg(par, 0x29);
write_reg(par, 0x2A,0x00,0x00,0x00,0xEF);
write_reg(par, 0x2B,0x00,0x00,0x00,0xEF);
write_reg(par, 0x2C);
write_reg(par, 0x3A,0x05);
write_reg(par, 0x29);
mdelay(50);
write_reg(par, 0x2C);
mdelay(20);
write_reg(par, 0x21,0x36,0x00);
return 0;
}
改好后编译试试,应该能成,另外求助下各位,我想试试播放个视频测试下这个屏的效果,请问下如何才能播放视频文件啊
[url=]图片[/url]
|
-
|