问题:移植后摄像头显示异常:颜色不对,显示两个相同的区域,且只显示半个屏幕

解决方法:以我的4.3寸屏幕为例

一定要把bits-per-pixel改成16,因为ov5640不支持24等其他格式,所以导致字节写入和读取错误,最终导致显示错误,并不是摄像头驱动问题,而是显示驱动问题。

/* 4.3寸800*480 */

&lcdif {

pinctrl-names = “default”;

pinctrl-0 = <&pinctrl_lcdif_dat                 /* 使用到的IO */

&pinctrl_lcdif_ctrl>;

display = <&display0>;

status = “okay”;

display0: display {                             /* LCD属性信息 */

bits-per-pixel = <16>;                      /* 一个像素占用24bit */

bus-width = <24>;                           /* 总线宽度 */

display-timings {

native-mode = <&timing0>;               /* 时序信息 */

timing0: timing0 {

clock-frequency = <31000000>;       /* LCD像素时钟,单位Hz,实际应该会被分成33000000,31M是理论的,而能实际分频的是33M*/

hactive = <800>;                    /* LCD X轴像素个数 */

vactive = <480>;                    /* LCD Y轴像素个数 */

hfront-porch = <40>;                /* LCD hfp参数 */

hback-porch = <88>;                 /* LCD hbp参数 */

hsync-len = <48>;                   /* LCD hspw参数 */

vback-porch = <32>;                 /* LCD vbp参数 */

vfront-porch = <13>;                /* LCD vfp参数 */

vsync-len = <3>;                    /* LCD vspw参数 */

hsync-active = <0>;                 /* hsync数据线极性 */

vsync-active = <0>;                 /* vsync数据线极性 */

de-active = <1>;                    /* de数据线极性 */

pixelclk-active = <0>;              /* clk数据线先极性 */

};

};

};

};