锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

使用MT7688A的SPI驱动液晶屏(framebuffer方式)WIDORA NEO

时间:2023-06-21 21:37:00 kec连接器

本帖最后由 avr-arm 于 2018-1-20 14:33 编辑

使用MT7688A的硬件SPI驱动液晶屏,使用framebuffer这种方法有两个好处:一是不用担心刷屏,例化为标准fb0设备便于后面增加QT、Xorg等等CPU利用率极低,具体底层操作由核心层完成,只需关注应用fb0即可。

这是一个轻微的替代游戏,毕竟,在路由器SOC标准界面相当新颖。widora喜欢折腾好玩的东东。

教程固件:

准备

iLi9341控制器的SPI也可以使用其他控制器,如液晶ST7735r,保证留出来SPI接口。

openwrt_widora保证最新代码master即可。 https://github.com/widora/openwrt_widora

MT7688 NEO一个,杜邦线几条。(其他。MT7688开发板也应该行)

硬件连接

以我手中的液晶屏为例,是240*320分辨率的IPS液晶屏原理图:

与NEO的连接:

连接实际效果图:

修改代码

首先,确保有openwrt_widora并编译代码,因为涉及到内核代码修改,没有编译就找不到内核源代码。

1 进入内核视频驱动目录:cd build_dir/target-mipsel_24kec dsp_uClibc-0.9.33.2/linux-ramips_mt7688/linux-3.18.29/drivers/video/

2 使用git下载fbtft项目到此:git clone https://github.com/notro/fbtft.git ,下载文件列表如下:

mangodeMacBook-Pro:video mango$ ls

Kconfig built-in.o fbdev logo of_display_timing.c videomode.c

Makefile console fbtft modules.builtin of_videomode.c

backlight display_timing.c hdmi.c modules.order vgastate.c

mangodeMacBook-Pro:video mango$

3 操作以下两句话,让内核知道你在这里添加了驱动

在video/Makefile最后加了一行 obj-y = fbtft

在video/Kconfig 中source “drivers/video/fbdev/Kconfig行下加一行:source “drivers/video/fbtft/Kconfig”

4 回到openwrt_widora根目录,操作make kernel_menuconfig,找

Device Drivers--->

Character devices--->

使能虚拟的terminal如下图所示:

Graphics support —>

分别展开看:

Direct Rendering Manager--->

< > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)----

Frame buffer Devices--->

Support for small TFT LCD display modules--->

FB driver for the ILI9341 LCD Controller

-*- Backlight & LCD device support---> 这个项目不

Console display driver support--->

{ {:屏幕快照_2018-01-20_上午11.21.39.png|}}

Bootup logo--->

[ ] Standard black and white Linux logo (NEW)

Standard 16-color Linux logo (NEW)

Standard 224-color Linux logo (NEW)

配置完成后,在推出时保存配置。

修改DTS,这里对应NEO,我们修改Widora32M.dts,路径是:target/linux/ramips/dts/Widora32M.dts 从105行,spidev@这一段整体换成:

ili9341@1 {

#address-cells = <1>;

#size-cells = <1>;

status = "okay";

compatible = "ilitek,ili9341";

reg = <1 0>;

spi-max-frequency = <32000000>;

txbuflen = <16>;

rotate = <0>;

bgr;

fps = <15>;

buswidth = <8>;

dc-gpios = ;

};

改好的DTS在此:

回到openwrt_widora根据目录开始编译,make V=s 内核配置后会和openwrt里个别选项冲突,例如有如下需要手动选择的情况,按照正常平台选择即可。

颜色反了

修改fb_ili9341.c,在0x11前增加一条0x21指令:

write_reg(par, 0x21);

write_reg(par, 0x11); /* sleep out */

修改后编译刷入NEO。

测试

不出意外,可以看到启动logo了:

终端可以看到/dev/下有了fb0设备:

将随机数打印到屏幕上,不出意外地看到花屏,root@Widora:~# cat /dev/urandom > /dev/fb0

把屏幕例子变成很多tty设备,也可以在屏幕上打印字符:

root@Widora:~# echo hello > /dev/tty0

root@Widora:~# echo hello > /dev/tty0

root@Widora:~# echo hello > /dev/tty0

root@Widora:~# echo hello > /dev/tty0

root@Widora:~# echo hello > /dev/tty0

效果:

找以前在MT7688上跑QT这里还贴了图片,后面有时间怎么移植?QT到MT7688也写一写。

更多想了解widora之前有个帖子: 联发科MT7688AN(Widora-NEO)开源资料贴 https://www.amobbs.com/forum.php ... amp;_dsign=8fcc495f

也可以去官网 https://widora.io https://wiki.widora.io 去搂一眼,

eddc9a0618bc3b57b955bf9d8fb61c71.gif

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章