This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

beaglebone black 液晶屏 蓝色和红色颜色交换



您好,
beagle bone black 蓝色和红色颜色交换,看dts中的注释,是由下面的
blue-and-red-wiring 和
/* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
video-ports = <0x234501>;
来控制的.可是,我无论怎么改变,颜色都没有发生变化.
我在内核源代码中搜索blue-and-red-wiring这样的关键字,也没有任何发现.请问有没有比较清楚这个问题的,帮助解释一下.
多谢!!


&lcdc {
status = "okay";

/* If you want to get 24 bit RGB and 16 BGR mode instead of
* current 16 bit RGB and 24 BGR modes, set the propety
* below to "crossed" and uncomment the video-ports -property
* in tda19988 node.
*/
/* blue-and-red-wiring = "straight"; */
blue-and-red-wiring = "crossed";

port {
lcdc_0: endpoint@0 {
remote-endpoint = <&hdmi_0>;
};
};
};
  • 原理图LCD RGB888的24位线是怎么和LCD相连的?

  • 原理图附在了附件中.

    另外,使用了下面的dts 文件,红色和蓝色是交换的.

    /dts-v1/;


    /include/ "am33xx.dtsi"

    /include/ "am335x-bone-common.dtsi"

    &am33xx_pinmux {
    rstctl_pins: pinmux_rstctl_pins {
    pinctrl-single,pins = <
    /* eMMC_RSTn */
    0x50 0x17 /* gpmc_a4.gpio1_20, OUTPUT | MODE7 | PULLUP */
    >;
    };
    };

    &ldo3_reg {
    regulator-min-microvolt = <1800000>;
    regulator-max-microvolt = <1800000>;
    regulator-always-on;
    };

    &rstctl {
    status = "okay";
    compatible = "gpio-rctrl";
    pinctrl-names = "default";
    pinctrl-0 = <&rstctl_pins>;

    #reset-cells = <2>;

    gpios = <&gpio2 20 0x00>;
    gpio-names = "eMMC_RSTn";
    };

    &mmc1 {
    vmmc-supply = <&vmmcsd_fixed>;
    };

    &mmc2 {
    vmmc-supply = <&vmmcsd_fixed>;
    bus-width = <8>;
    ti,non-removable;
    status = "disabled";

    reset = <&rstctl 0 0>;
    reset-names = "eMMC_RSTn-CONSUMER";
    };


    &cpu {
    /*
    * To consider voltage drop between PMIC and SoC,
    * tolerance value is reduced to 2% from 4% and
    * voltage value is increased as a precaution.
    */
    operating-points = <
    /* kHz uV */
    1000000 1350000
    800000 1300000
    600000 1112000
    300000 969000
    >;
    };
    
    
    
    

    ---
    使用下面的内容,红色和蓝色没有交换.目前,因为要使用下面文件中的其它内容,所以,需要确定哪个参数会直接影响红色和蓝色的顺序,然后修改,不能直接使用上面的文件.   


    &lcdc {
    status = "okay";

    /* If you want to get 24 bit RGB and 16 BGR mode instead of
    * current 16 bit RGB and 24 BGR modes, set the propety
    * below to "crossed" and uncomment the video-ports -property
    * in tda19988 node.
    */
    /* blue-and-red-wiring = "straight"; */
    blue-and-red-wiring = "crossed";

    port {
    lcdc_0: endpoint@0 {
    remote-endpoint = <&hdmi_0>;
    };
    };
    };

    &i2c0 {
    tda19988: tda19988 {
    compatible = "nxp,tda998x";
    reg = <0x70>;


    /* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
    video-ports = <0x234501>;

    #sound-dai-cells = <0>;
    audio-ports = < AFMT_I2S 0x03>;

    ports {
    port@0 {
    hdmi_0: endpoint@0 {
    remote-endpoint = <&lcdc_0>;
    };
    };
    };
    };
    };



    LCD_CAPE_Schematic.pdf
  • 我把原理图贴上来了, 帖子还没有出现.

  • 另外,使用了下面的dts 文件,红色和蓝色是交换的.

    /dts-v1/;


    /include/ "am33xx.dtsi"

    /include/ "am335x-bone-common.dtsi"

    &am33xx_pinmux {
    rstctl_pins: pinmux_rstctl_pins {
    pinctrl-single,pins = <
    /* eMMC_RSTn */
    0x50 0x17 /* gpmc_a4.gpio1_20, OUTPUT | MODE7 | PULLUP */
    >;
    };
    };

    &ldo3_reg {
    regulator-min-microvolt = <1800000>;
    regulator-max-microvolt = <1800000>;
    regulator-always-on;
    };

    &rstctl {
    status = "okay";
    compatible = "gpio-rctrl";
    pinctrl-names = "default";
    pinctrl-0 = <&rstctl_pins>;

    #reset-cells = <2>;

    gpios = <&gpio2 20 0x00>;
    gpio-names = "eMMC_RSTn";
    };

    &mmc1 {
    vmmc-supply = <&vmmcsd_fixed>;
    };

    &mmc2 {
    vmmc-supply = <&vmmcsd_fixed>;
    bus-width = <8>;
    ti,non-removable;
    status = "disabled";

    reset = <&rstctl 0 0>;
    reset-names = "eMMC_RSTn-CONSUMER";
    };


    &cpu {
    /*
    * To consider voltage drop between PMIC and SoC,
    * tolerance value is reduced to 2% from 4% and
    * voltage value is increased as a precaution.
    */
    operating-points = <
    /* kHz uV */
    1000000 1350000
    800000 1300000
    600000 1112000
    300000 969000
    >;
    };
    
    
    
    
    ---
    使用下面的内容,红色和蓝色没有交换.现在不太确定哪个参数会直接影响红色和蓝色的顺序. 


    &lcdc {
    status = "okay";

    /* If you want to get 24 bit RGB and 16 BGR mode instead of
    * current 16 bit RGB and 24 BGR modes, set the propety
    * below to "crossed" and uncomment the video-ports -property
    * in tda19988 node.
    */
    /* blue-and-red-wiring = "straight"; */
    blue-and-red-wiring = "crossed";

    port {
    lcdc_0: endpoint@0 {
    remote-endpoint = <&hdmi_0>;
    };
    };
    };

    &i2c0 {
    tda19988: tda19988 {
    compatible = "nxp,tda998x";
    reg = <0x70>;


    /* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
    video-ports = <0x234501>;

    #sound-dai-cells = <0>;
    audio-ports = < AFMT_I2S 0x03>;

    ports {
    port@0 {
    hdmi_0: endpoint@0 {
    remote-endpoint = <&lcdc_0>;
    };
    };
    };
    };
    };
  • 你的原理图并没有看出来LCD RGB具体连的AM335x哪些信号线。

  • 有没有方法在DTB中交换红蓝的开关呢,除了我上面贴出来的.

  • 你看过我们的errata的section 3.1.1么?检查下RGB888数据线的接法。

    这个和dts没什么关系的。

  • 看起来是有关系的,因为当我把dts中下面的行注释掉以后,它红色和蓝色就翻转过来了.

    可是,我现在解释不了原因.

    display-timings {
    native-mode = <&timing0>;
    timing0: 800x480 {
    clock-frequency = <30000000>;
    hactive = <800>;
    vactive = <480>;
    hfront-porch = <40>;
    hback-porch = <40>;
    hsync-len = <48>;
    vback-porch = <30>;
    vfront-porch = <13>;
    vsync-len = <3>;
    hsync-active = <0>;
    vsync-active = <0>;
    };
    };
  • 按理说颜色翻转只有RGB888和RGB565的区别。

  • 我解释不了原因,不知道谁能帮忙解释一下。