屏为ST7789的8080接口8位并口屏。分辨率为:240*320。未接TE(模块未引出)。驱动参考驱动及配置配置https://docs.aw-ol.com/docs/soc/v821/disp/disp2/disp_driver_lcd_i8080/
驱动部分就是使用tina linux自带的ST7789改成了屏厂给的启动代码,dts是下面的。
&disp {
disp_init_enable = <1>;
disp_mode = <0>;
screen0_output_type = <1>;
screen0_output_mode = <4>;
screen0_to_lcd_index = <0>;
screen1_output_type = <3>;
screen1_output_mode = <10>;
screen1_to_lcd_index = <2>;
screen1_output_format = <0>;
screen1_output_bits = <0>;
screen1_output_eotf = <4>;
screen1_output_cs = <257>;
screen1_output_dvi_hdmi = <2>;
screen1_output_range = <2>;
screen1_output_scan = <0>;
screen1_output_aspect_ratio = <8>;
fb_format = <0>;
fb_num = <1>;
fb_debug = <0>;
/*<disp channel layer zorder>*/
fb0_map = <0 0 0 16>;
fb0_width = <240>;
fb0_height = <320>;
/*<disp channel layer zorder>*/
fb1_map = <0 2 0 16>;
fb1_width = <300>;
fb1_height = <300>;
/*<disp channel layer zorder>*/
fb2_map = <1 0 0 16>;
fb2_width = <1280>;
fb2_height = <720>;
/*<disp channel layer zorder>*/
fb3_map = <1 1 0 16>;
fb3_width = <300>;
fb3_height = <300>;
chn_cfg_mode = <1>;
disp_para_zone = <1>;
};
&lcd0 {
lcd_used = <1>;
lcd_driver_name = "st7789v_cpu";
lcd_if = <1>;
lcd_x = <240>;
lcd_y = <320>;
lcd_width = <43>;
lcd_height = <63>;
lcd_dclk_freq = <20>;
lcd_hbp = <20>;
lcd_ht = <298>;
lcd_hspw = <10>;
lcd_vbp = <8>;
lcd_vt = <336>;
lcd_vspw = <2>;
lcd_backlight = <50>;
lcd_pwm_used = <1>;
lcd_pwm_ch = <4>;
lcd_pwm_freq = <50000>;
lcd_pwm_pol = <1>;
lcd_pwm_max_limit = <255>;
lcd_bright_curve_en = <1>;
lcd_frm = <2>;
lcd_gamma_en = <0>;
lcd_bright_curve_en = <0>;
lcd_cmap_en = <0>;
lcdgamma4iep = <22>;
lcd_cpu_mode = <1>;
lcd_cpu_te = <2>;
lcd_cpu_if = <14>;
/* rst */
lcd_gpio_0 = <&pio PD 19 GPIO_ACTIVE_LOW>;
/* cs */
lcd_gpio_1 = <&pio PD 14 GPIO_ACTIVE_LOW>;
pinctrl-0 = <&rgb8_pins_a>, <&rgb8_pins_ctl_a>;
pinctrl-1 = <&rgb8_pins_b>, <&rgb8_pins_ctl_b>;
};
不知道应当如何调试。
离线
有没有开启 doublebuffer & g2d 选项 ?
离线
有没有开启 doublebuffer & g2d 选项 ?
没有开启,是这两个选项的事吗。我来试试!
离线
lcd_cpu_mode和lcd_cpu_te都改为0。如果还是不行,lcd_dclk_freq设为12试试。
离线
lcd_cpu_mode和lcd_cpu_te都改为0。如果还是不行,lcd_dclk_freq设为12试试。
感谢,等我回之家来试试
离线
有没有开启 doublebuffer & g2d 选项 ?
是这样配置吗?已经加上了还是没用。
lcd_cpu_mode和lcd_cpu_te都改为0。如果还是不行,lcd_dclk_freq设为12试试。
lcd_cpu_mode改为0会出现白屏。
lcd_dclk_freq设为6,还是不正常。
看disp的信息,期望fps与实际fps相差比较大。应当还是我的配置有问题。
最近编辑记录 粗制乱造 (2025-05-23 22:01:31)
离线
1、你的配置中的ht和vt算下来差不多12mhz的,是不是按照V821的手册照抄的,这个应该按照你的lcd的手册配置的。lcd_cpu_mode=<0>是为了自动刷屏,lcd_cpu_te=<0>是不用te功能,因为你说没有引出te管脚。
2、cat /sys/class/disp/disp/attr/sys多次,看看显示的irq数字变化了没有,如果没有变化还是时序不对。
3、建议找找本论坛里的“Linux_LCD_开发指南”,我是在100ask下载的。
离线