主题中讨论的其他器件: TPS65217、 DA8XX
工具/软件:Linux
你(们)好
我一直在探索这里(以及其他地方)的论坛、尝试了解如何以最佳方式驱动我们的 LCD 显示屏。
该板是定制的、但严格基于 BeagleBone Black。
该显示屏使用 Ilitek9340驱动程序、接口分为两部分;我很难在器件树中定义。
它是在 Ilitek 数据表所称的"3线9位串行接口"模式中配置的;即半双工 SPI 模式。
该串行接口应用于配置芯片、然后应通过并行 RBG 接口驱动图像数据本身。 如有必要、可以将该 RGB 接口设置为具有 DataEnable (DE)行。
从我对这一点的深入了解来看、这种情况似乎并不罕见(不幸的是、这种情况也不会有困难!)
我的希望是,我可以界定这两个方面:
-SPI 总线上的 LCD 设备,在 ili9340驱动程序中运行初始化过程
-提供必要显示的面板
我定义的 SPI 器件为:
&SPI1{ status ="确定"; pinctrl-names ="默认值"; pinctrl-0 =<&SPI1_PINs>; LCD@0{ compatible ="ilitek、ili9340"; reg =<0>; SPI-max-frequency =<24000000>; rotate =<90>; fps =<30>; 总线宽度=<9>; 宽度=<240>; 高度=<320>; RESET-GPIO =<&GPIO3 19 GPIO_ACTIVE_LOW>; }; };
面板:
Panel{ compatible ="ti、tilcdc、panel "; pinctrl-names ="default"、"sleep"; pinctrl-0 =<&lcd_pins_default>; pinctrl-1 =<&lcd_pins_sleep>; 状态="正常"; 使能 GPIO =<&GPIO2 25 0>; 电池板信息{ AC-BIAS =<255>; AC-BIAS-INIpt =<0>; DMA-BURST-SZ =<16>; bpp =<32>; FDD =<0x80>; sync-edge =<0>; sync-Ctrl =<1>; 光栅顺序=<0>; fifo-th =<0>; }; 显示时序{ 240x320} {时钟频率=<6350000>;/* 6.35MHz */ hactive =<240>; vactive =<320>; 前沿=<10>; 后沿=<20>; HSYNC-len =<10>; vback-clen =<2>; vfront-clen =<2>; vsync-len =<2>; HSYNC-active =<0>; vsync-active =<0>; 去激活=<1>; 像素时钟激活=<1>; }; }; };
我将用于这两种模式的 pinmux 为:
LCD_PINS_DEFAULT:LCD_PINS_DEFAULT{ pinctrl-single、PINS =< 0xa0 (PIN_OUTPUT | MUX_MODE0)/* DB0 LCD_Data0.LCD_Data0 * / 0xa4 (PIN_OUTPUT | MUX_MODE0)/*DB1* DB1LCD_2 LCD_4 * 0xa0_MR_4 *输出|DM4 (MR_4)/DBAULCD_4 * DMAULCD_4 (MR_4 (PIN_OUTPUT | MUX_MODE0)/* DB6 LCD_data6.LCD_data6 * / bb (PIN_OUTPUT | MUX_MODE0)/* DB7 LCD_data7.LCD_data7 * / 0xc0 (PIN_MODE0)/* DB8 LCD_DAD0_MR_0* 0x8 ( * D0_DMUX_DMUX8)* 0xDRAC12_MODE8 */DMUX_DMAD0_MR_0_MR_0*/0xD12_DMUX8 (0xD8引脚/DMUX8)/DMUX8 (PIN_OUTPUT | MUX_MODE0)/* DB13 LCD_data13.LCD_data13 */ 0xd8 (PIN_OUTPUT | MUX_MODE0)/* DB14 LCD_data14.LCD_data14 */ 0xDC (PIN_OUTPUT | MDB15 LCD_MODE0)/* SYDB14_SYNC_MR_MR_MR1* /0x430_MR1* 输出 (PIN_OUTPUT 下拉| MUX_MODE0)/* DOTCLK LCD_pclk.LCD_pclk */ 0xec (PIN_OUTPUT 下拉| MUX_MODE7)/* DE LCD_AC_BIAS_EN.GPIO* ; }; SPI1_PIN: PLUX_SPI1* (0x108_MODE1 )*单引脚/0x104_MODEUX_INPULLUM*(0x105_MOUX_INPULL)*(0x105_MOUX_INPULTRA_MOUX_1*)*(0x104_MOUX_1M1*)*(0xSPION_MOUX_PULTRA_MOUX_PULTRA_MOUX_1*)*)*(0x104_PULTRA_PULTRA_MOUX_INPUT)*(0x108/1)*(0xM1*(0x104_MOUX_PON_MOUX_PON
我可以看到通过 SPI 发送到的字节:此时复位和 CS 看起来合适(分别为 HI 和 LO)
这是使用正常的4线制模式;只是不需要任何回路、这应该足以进行配置。
我从未在视频线上看到任何情况
我可以从 fb_ili9340中看到/dev/fb0
和节点
/proc/device-tree/panel /proc/device-tree/ocp/spi@481a0000/LCD@0
我想我还期待着面板的另一个帧缓冲区:我是否需要在 DTS 中定义其他内容才能显示?
完整的 dmesg 位于: e2e.ti.com/.../1106.kernel_5F00_log.txt
我希望可能有人具有这种屏幕的经验、可以提供一些建议。
从深入了解 fbtft_device 驱动程序开始、我们希望能够支持具有 GPIO 并行 TFT 以及 SPI 初始化序列的 DTS 条目:这是更好的实现方法吗?
谢谢阅读-欢迎您提出任何建议。
此致、
Richard