5、milk-v duo(CV1800B,C906内核)使用fbtft驱动SPI液晶屏(1.3寸TFT液晶显示屏)

本次主要参考:
https://gitee.com/li-shan-asked/linux-develop-guide(李山文大佬)
https://space.bilibili.com/483300972/?spm_id_from=333.999.0.0(李山文大佬)
https://community.milkv.io/t/milk-v-duo-spi-st7789/131

液晶屏为1.3寸,SPI接口,IC:ST7789V,分辨率:240*240;其中SCK、SDA引脚需要外部上拉

液晶屏SPI与milk-v duo的SPI2连接,接线如下:
液晶屏——>milk-v duo
SCK——>GPA23 (第9引脚)
SDA——>GPA22 (第10引脚)
RES——>GPA14 (第19引脚)
DC——>GPA15 (第20引脚)
BLK悬空

在milk-v duo的SDK的目录下,预准备开发环境,参考1、milk-v duo(CV1800B,C906内核)搭建开发环境中的单步编译。

然后打开linux_5.10/drivers/staging/fbtft/fb_st7789v.c文件
修改init_display函数,如下:

static int init_display(struct fbtft_par *par)
{
	par->fbtftops.reset(par);
	mdelay(50);
	write_reg(par,0x11);
	write_reg(par,0x3A,0x05);
	write_reg(par,0xC5,0x1A);
	write_reg(par,0x36,0x00);
	write_reg(par,0xB2,0x05,0x05,0x00,0x33,0x33);
	write_reg(par,0xB7,0x05);
	write_reg(par,0xBB,0x3F);
	write_reg(par,0xC0,0x2C);
	write_reg(par,0xC2,0x01);
	write_reg(par,0xC3,0x0F);
	write_reg(par,0xC4,0x20);
	write_reg(par,0xC6,0x01);
	write_reg(par,0xD0,0xA4,0xA1);
	write_reg(par,0xE8,0x03);
	write_reg(par,0xE9,0x09,0x09,0x08);
	write_reg(par,0xE0,0xD0,0x05,0x09,0x09,0x08,0x14,0x28,0x33,0x3F,0x07,0x13,0x14,0x28,0x30);
	write_reg(par,0xE1,0xD0,0x05,0x09,0x09,0x08,0x03,0x24,0x32,0x32,0x3B,0x14,0x13,0x28,0x2F);
	write_reg(par,0x21);
	write_reg(par,0x11);
	mdelay(120);
	write_reg(par,0x29);

	return 0;
}

修改fbtft_display变量,如下:

static struct fbtft_display display = {
	.regwidth = 8,
	.width = 240,
	.height = 240,
	.gamma_num = 2,
	.gamma_len = 14,
	.gamma = DEFAULT_GAMMA,
	.fbtftops = {
		.init_display = init_display,
		.set_var = set_var,
		.set_gamma = set_gamma,
		.blank = blank,
	},
};

保存并退出。

打开build/boards/cv180x/cv1800b_milkv_duo_sd/dts_riscv/cv1800b_milkv_duo_sd.dts文件
修改SPI2节点,如下

&spi2 {
	status = "okay";

	spidev@0 {
		status = "disabled";
	};
	
	st7789v: st7789v@0{
		status = "okay";
		compatible = "sitronix,st7789v";
		reg = <0>;
		spi-max-frequency = <80000000>;
		rotate = <0>;
		spi-cpol;
		spi-cpha;
		rgb;
		fps = <30>;
		buswidth = <8>;
		reset-gpios = <&porta 14 GPIO_ACTIVE_LOW>;//注意信号,此时表示复位是低信号
		dc-gpios = <&porta 15 GPIO_ACTIVE_HIGH>;//注意信号,此时表示数据是高信号
		debug = <0>;
	};
};

然后执行menuconfig_kernel,按照以下操作:

Device Drivers  --->
	Character devices  --->
		[*]   Virtual terminal
		[*]     Support for binding and unbinding console drivers
		
Device Drivers  --->
	Graphics support  --->
		Console display driver support  --->
			[*] Framebuffer Console support
			[*]   Map the console to the primary display device

Device Drivers  --->
	[*] Staging drivers  --->
		<*>   Support for small TFT LCD display modules  --->
			<*>   FB driver for the ST7789V LCD Controller

Library routines  --->
	[*] Select compiled-in fonts

保存并退出。

然后进入buildroot-2021.05目录,执行以下命令:

cp configs/milkv-duo_musl_riscv64_defconfig .config

然后执行make menuconfig,按照以下操作:

Build options  --->
	libraries (both static and shared)  ---> (选择both static and shared)
	
System configuration  --->
	/dev management (Dynamic using devtmpfs + eudev)  ---> (选择Dynamic using devtmpfs + eudev)

保存并退出。

然后执行以下命令:

cp .config configs/milkv-duo_musl_riscv64_defconfig

然后返回上一级目录(SDK目录),执行以下命令:
build_all
pack_sd_image
最近重新烧录SD卡,让内核文件放到tftp服务器目录下。

系统重新启动之后,执行以下命令会看到屏幕不同的反应:

cat /dev/random > /dev/fb0 (花屏)
cat /dev/zero > /dev/fb0 (清屏)
echo milk-v duo > /dev/tty0 (显示字符)
ls / > /dev/tty0 (显示根目录)

QQ:763314235,会在第一时间处理。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
milk-v duo是一个软件包,其中包含了支持Python所有版本的whl文件,比如milk-0.6.1-cp27-cp27m-win_amd64.whl、milk-0.6.1-cp34-cp34m-win_amd64.whl、milk-0.6.1-cp35-cp35m-win_amd64.whl、milk-0.6.1-cp36-cp36m-win_amd64.whl等等。 该软件包提供了用于处理MILK-V Duo设备的功能。 关于MILK-V Duo设备的GPIO控制,可以进入命令行,输入相关命令进行配置和操作。首先,通过命令"echo 440 > /sys/class/gpio/export"可以在/sys/class/gpio目录下生成gpio440目录,然后配置该IO口为输出状态,命令为"echo out > /sys/class/gpio/gpio440/direction"。要点亮LED,可以使用命令"echo 1 > /sys/class/gpio/gpio440/value",而要熄灭LED,可以使用命令"echo 0 > /sys/class/gpio/gpio440/value"。 根据相关文档,可以得知,默认GPIO相关模块已经编入内核,不需要再执行加载命令。可以在控制台下运行GPIO读写命令,或者在内核态或用户态编写GPIO读写程序,来对GPIO进行输入输出操作。其中,XGPIOC的组号值为416,所以GPIO的编号为440。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [milk-0.6.1 64位](https://download.csdn.net/download/weixin_38898802/10936635)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [2、milk-v duo(CV1800B,C906内核)控制IO,点亮LED](https://blog.csdn.net/GJF712/article/details/130277999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值