您尚未登录。

楼主 #1 2020-11-23 23:23:47

geekchun
会员
注册时间: 2020-11-11
已发帖子: 70
积分: 5

FC1200S移植fbtft使用st7789v 1.14寸SPI屏幕

画了个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);
}

离线

楼主 #4 2020-11-24 12:20:57

geekchun
会员
注册时间: 2020-11-11
已发帖子: 70
积分: 5

Re: FC1200S移植fbtft使用st7789v 1.14寸SPI屏幕

这个函数是fbtft-core.c里面的
修改前后对比1451151190.jpg575657960.jpg
这个偏移量不知道改的地方对不对,是不是可以在别的地方设置,这样改就只适用于这个1.14的屏幕了

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn