st7789 320*240 显示屏,uboot驱动移植笔记

来源:互联网 发布:java decompiler使用 编辑:程序博客网 时间:2024/05/24 15:43

           st7789 使用spi初始化,rgb数据总线传输。


1.首次编译错误

报错如下:

libgcc.a(bpabi.o) uses VFP registerarguments, u-boot does not

修改如下:

--- a/arch/arm/config.mk

+++ b/arch/arm/config.mk

@@ -16,7 +16,7 @@ endif

 LDFLAGS_FINAL +=--gc-sections

 PLATFORM_RELFLAGS += -ffunction-sections-fdata-sections \

                       -fno-common -ffixed-r9

-PLATFORM_RELFLAGS += $(callcc-option, -msoft-float) \

+PLATFORM_RELFLAGS += $(callcc-option,-mfloat-abi=hard) \

      $(call cc-option,-mshort-load-bytes,$(callcc-option,-malignment-traps,))

 

 PLATFORM_CPPFLAGS += -D__ARM__

2.IO定义及复用

IO复用在 board/technexion/picosom-imx6ul/picosom-imx6ul.c 设置

1. lcd背光

  • 注意事项
    1. 背光在framebuff填充后开启(flush_cache 后)
    2. 如果没在flush_cache后调用,会出现小部分显示异常,无论怎么调节LCD参数都无法更正。
  1. 使用GPIO模拟SPI
  • 注意事项
    1. 调用硬件spi也就是driver/spi/mxc_spi.c驱动,spi io口没有波形
    2. 使用GPIO模拟, 数据口闲事设置成为高电平,不然读不出数据
    3. spi数据长度为9bit模式,使用0xa5, 0x5a命令观察数据的正确性

3.使用SPI初始化LCD

  • 注意事项
  •  1.在 st7789_init_board() 中完成SPI 命令初始化
  • 2.在 mxs_lcd_init()中调用 st7789_init_board()
  •  3.SPI初始化注意命令及其数据传输的正确性,否则会出现LCD无法正常显示,如下图:

3.i.mx6ul 平台的lcd配置及其初始化

  1. 设置LCD参数
  • 注意事项
    1. LCD参数设置一般LCD厂商官方datasheet有介绍
    2. linux/Document/fb/Frambuffer.txt 介绍相关参数含义
    3. 如果对应的位置出现显示异常,将其调大
  1. 配置平台LCD驱动
  • 注意事项
    1. 平台LCD控制驱动在driver/video/mxsfb.c中定义好,定义的是RGB接口最好别修改mxsfb.c中相关代码,尽量在spi 命令中进行配置。
    2. 不要在flush_cache前 对framebuffer进行延时验证,不然会出现各种显示异常

 

 

4.splash_log调用过程

1. 调用过程

board_init_r函数数组

                                                                                                                                                        |

                                                                                                                                                        |

stdio_init函数

|

|

stdio_add_devices

|

|

drv_video_init

|

|

video_init

|

|

video_logo

|

|

logo_plot

|

|

plot_logo_or_black  

|

                                                                                                                                                         |

bmp_logo_palette中数组8bit bmp rgb数据  

          |          

|

 tools/Makefile中 LOGO_BMP          tools/logos/sandisk_32.bmp

 

2. bmp制作与转换

提前设置好bmp像素大小,不然显示异常。

cat convert.sh

#!/bin/sh

#install Netpbm first

jpegtopnm $1 | ppmquant31 | ppmtobmp -bpp8 > $2

 

#example

#1. jpegtopnm origin.jpg | ppmquant31 | ppmtobmp -bpp 8 > target.bmp

#2. ./convert.sh original.bmp target.bmp

  • 注意事项
    1. 上述只能使用深度为8的BMP
    2. 可以使用lpcbmp2c.exe工具对24bit的bmp转换成RGB数据

5.总结

·1.分析好程序整体框架后,再对其进行相关设置。

·2.在调用延时观察现象时,注意其位置,否则会出现各种异常

原创粉丝点击