画了个F1C200S板子,板载了个1.14的IPS屏幕,想用来显示终端。参考这位大神的博客,用licheepi的linux-4.15分支,发现fbtft代码部分有差异,后来在kernel.org上下载了新的版本5.9.1,参照博客修改设备树和驱动后发现屏幕已经点亮了,但是显示不全。查看fb_st7789v.c发现分辨率是320 * 240,我的这块是135 * 240,修改分辨率发现还是显示不全,并且部分花屏。于是下载了STM32的示例代码,发现135*240屏幕较320 *240屏幕在设置反翻转的同时设置了偏移量,在设置窗口的时候加上了这个偏移量,检查fbtft-core.c中的fbtft_set_addr_win函数发现并没有设置偏移量,于是手动修改添加,重新编译kernel后,发现已经显示正常= =
贴出修改后的代码(没有考虑可移植性,只是简单实现正常显示)
static void fbtft_set_addr_win(struct fbtft_par *par, int xs, int ys, int xe,
int ye)
{
switch(par->info->var.rotate)
{
case 0: xs+=53;xe+=53;ys+=40;ye+=40;
break;
case 90: xs+=40;xe+=40;ys+=53;ye+=53;
break;
case 180: xs+=53;xe+=53;ys+=40;ye+=40;
break;
case 270: xs+=40;xe+=40;ys+=53;ye+=53;
break;
default :
break;
}
write_reg(par, MIPI_DCS_SET_COLUMN_ADDRESS,
(xs >> 8) & 0xFF, xs & 0xFF, (xe >> 8) & 0xFF, xe & 0xFF);
write_reg(par, MIPI_DCS_SET_PAGE_ADDRESS,
(ys >> 8) & 0xFF, ys & 0xFF, (ye >> 8) & 0xFF, ye & 0xFF);
write_reg(par, MIPI_DCS_WRITE_MEMORY_START);
}
离线
是MIPI屏幕吗?
离线
那款控制器应该是兼容mipi的 寄存器地址就用了mipi的标记
离线
这个函数是fbtft-core.c里面的
修改前后对比
这个偏移量不知道改的地方对不对,是不是可以在别的地方设置,这样改就只适用于这个1.14的屏幕了
离线
关注
离线
给力,我用全志H3也要像你这样改才能正常显示
离线
离线
老哥 电源芯片用的那一款
离线
@geekchun , 能不分享下 Q8 的屏驅動文件呢 ?
离线
f1c100s比200s差多少
离线