玩轉STM32MP157- 使用fbtft驅動 lcd ili9341


之前使用了 fbtft 成功驅動了lcd st7735r,現在嘗試下驅動 ili9341,

配置

跟之前用 fbtft 驅動 st7735r 一樣,先用 make menuconfig 配置內核,添加 fbtft 。然后修改設備樹,同樣是在設備樹spi5下添加:

ili9341@0{
    compatible = "adafruit,yx240qv29", "ilitek,ili9341";
    reg = <0>;
    spi-max-frequency = <32000000>;
    buswidth=<8>;
    dc-gpios = <&gpiof 3 GPIO_ACTIVE_HIGH>;
    reset-gpios = <&gpiod 13 GPIO_ACTIVE_HIGH>;
    rotation = <270>;
    bgr;
};

編譯,更新板子上的內核跟設備樹,啟動,屏由白變黑,說明驅動應該是沒問題的,看下啟動信息中跟fb有關的部分:

root@stm32mp1:~# dmesg | grep "fb"
[    2.091619] fbtft_of_value: buswidth = 8
[    2.416500] graphics fb0: fb_ili9341 frame buffer, 240x320, 150 KiB video memory, 16 KiB buffer memory, fps=20, spi0.0 at 32 MHz

可以看到LCD的相關信息。

簡單測試

配置一下,開機的時候顯示Linux Logo:

顯示隨機數:

系統自帶工具

在測試過程中,無意中發現系統中自帶了 framebuffer 測試工具:

  • 使用 fb-test 測試

結果如下:

這個工具可以用來測試LCD驅動正不正常

  • 使用fb-rect

    運行該命令后,LCD上一直都在顯示不同尺寸不同顏色的方塊:

  • 使用fb-perf

    運行結果如下:

littlevgl

littlevgl是一個開源的嵌入式GUI庫,詳細信息查看官網:https://littlevgl.com/

littlevgl 官方已經有支持Linux,工程地址為:https://github.com/littlevgl/lv_linux_frame_buffer

首先下載下來:

git clone --recursive https://github.com/littlevgl/lv_linux_frame_buffer.git

下載下來后,先修改lv_conf.h,以下3個參數需要跟所用LCD一樣:

在文件lv_drv_conf.h中,確認程序中所用設備是否為所用設備對應的fb設備,如下圖,程序中默認是用 fb0,如果不是 fb0,需要做相應修改:

然后直接輸入 make,編譯,編譯的部分信息如下:

編譯完成后把編譯出來的可執行文件 demo 拷貝到 STM32MP157c 的板子上,並運行結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM