新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AM335x(TQ335x)學習筆記——LCD驅動移植

        AM335x(TQ335x)學習筆記——LCD驅動移植

        作者: 時間:2016-11-28 來源:網絡 收藏
        TI的LCD控制器驅動是非常完善的,共通的地方已經由驅動封裝好了,與按鍵一樣,我們可以通過DTS配置完成LCD的顯示。下面,我們來討論下使用DTS方式配置內核完成LCD驅動的思路。

        (1)初步分析

        本文引用地址:http://www.104case.com/article/201611/322821.htm

        由于TQ335x使用的芯片是AM335x,故仍然可以參考am335x-evm.dts。當然,am335x-evmsk.dts、am335x-beagbone.dts都可以。本文以am335x-evm.dts為例。大體上瀏覽下DTS文件,可以發現兩個醒目的節點:一個是panel,一個是backlight。接下來我們逐個分析。

        (2)panel節點信息分析及配置

        從panel節點可以獲得如下信息:

        1. 1.匹配內核驅動的關鍵詞是:"ti,tilcdc,panel",可以通過這個關鍵字找到相應的驅動。
        2. 2.管腳配置在節點lcd_pins_s0內
        3. 3.panel-info中可以配置LCD的硬件信息,如LCD的分辨率等
        4. 4.display-times中記錄了LCD刷屏的相關時序。
        其中,panel-info和display-times需要去LCD手冊中查找,管腳配置需要根據AM335x的芯片手冊、數據手冊及TQ335x的原理圖確定,驅動則需要去內核的driver目錄下查找。下面,我一一解決上述幾個問題:
        首先是設置panel-info和display-times。我的TQ335x是用的我調試TQ210時使用的觸摸屏,型號是TN92,這個屏是800*480的分辨率,因此,panel-info與evm開發板的配置是相同的,可以不做任何修改。但是,不同屏幕的display-times一般是不相同的,因此,需要查閱觸摸屏的手冊來確認display-times。

        TN92的水平掃描時序如下表:

        垂直掃描時序如下圖:

        但是,如果對LCD各參數不怎么熟悉的話,很難建立這兩個表與DTS中display-times的關系,這時應該去查閱一下linux內核的文檔和芯片手冊。在內核文檔:”Documentation/devicetree/bindings/video/display-timing.txt"有相關的記載,該文件中有形象的描述,具體如下:

        1. +----------+-------------------------------------+----------+-------+
        2. ||↑|||
        3. |||vback_porch|||
        4. ||↓|||
        5. +----------#######################################----------+-------+
        6. |#↑#||
        7. |#|#||
        8. |hback#|#hfront|hsync|
        9. |porch#|hactive#porch|len|
        10. |<-------->#<-------+--------------------------->#<-------->|<----->|
        11. |#|#||
        12. |#|vactive#||
        13. |#|#||
        14. |#↓#||
        15. +----------#######################################----------+-------+
        16. ||↑|||
        17. |||vfront_porch|||
        18. ||↓|||
        19. +----------+-------------------------------------+----------+-------+
        20. ||↑|||
        21. |||vsync_len|||
        22. ||↓|||
        23. +----------+-------------------------------------+----------+-------+
        AM335x的技術參考手冊中可以找到相關的寄存器解釋,如下:

        綜合這三份資料,很容易確定下LCD的屏的時序參數的范圍(需要強調的是,上述參數不一定精確,還需要使用圖片實機測下效果),經過多次實驗,最終確定下了LCD的時序參數,詳情如下:

        1. panel{
        2. compatible="ti,tilcdc,panel";
        3. status="okay";
        4. pinctrl-names="default";
        5. pinctrl-0=<&lcd_pins_s0>;
        6. panel-info{
        7. ac-bias=<255>;
        8. ac-bias-intrpt=<0>;
        9. dma-burst-sz=<16>;
        10. bpp=<32>;
        11. fdd=<0x80>;
        12. sync-edge=<0>;
        13. sync-ctrl=<1>;
        14. raster-order=<0>;
        15. fifo-th=<0>;
        16. };
        17. display-timings{
        18. 800x480p62{
        19. clock-frequency=<30000000>;
        20. hactive=<800>;
        21. vactive=<480>;
        22. hfront-porch=<214>;
        23. hback-porch=<40>;
        24. hsync-len=<4>;
        25. vback-porch=<20>;
        26. vfront-porch=<23>;
        27. vsync-len=<4>;
        28. hsync-active=<0>;
        29. vsync-active=<0>;
        30. };
        31. };
        32. };
        時序確定下來之后需要關注的就是管腳配置,由于am335x集成了LCD控制,該控制器與LCD的連接方式是通過GPIO管腳復用實現的,而evm開發板與TQ335x的LCD都接在了同一個LCD控制器上,因此,直接使用原有的管腳配置即可。這一點也可以通過閱讀TQ335x的原理圖確認,這里我就不再分析了。

        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 天峨县| 云南省| 那坡县| 阿合奇县| 宜黄县| 东至县| 克拉玛依市| 金塔县| 肃宁县| 陵川县| 丰县| 蓬莱市| 文山县| 临潭县| 吐鲁番市| 琼结县| 昌吉市| 富蕴县| 威信县| 南溪县| 大余县| 辽中县| 萨嘎县| 明水县| 门源| 黄石市| 河曲县| 北碚区| 白城市| 富顺县| 绍兴县| 罗甸县| 阿拉善盟| 临沧市| 鄂托克旗| 济宁市| 马尔康县| 河北省| 秦皇岛市| 东海县| 黎川县|