quecpython平台下开机logo制作指导

本文用于指导quecpython平台下ASR系列模组的开机logo制作指引。其中最为重要的是获取开机引导文件logo.bin。

对于logo.bin的引导文件,目前在公版的EC600MCNLE可以不用进行添加,无需添加引导文件,但在EC800MCNLE中,需要先获取原理图以及刷屏脚本,刷屏脚本即可以点亮背光并刷屏为红色。目前用到的所有文件均上传到附件中。

from struct import *

def bin_create(*args):
    if len(args) != 2:
        print("wrong params number!")
        return -1
    # 大端1,小端2
    endian = input("输入大小端(1:小端; 2:大端):")
    with open(r"D:\study\开机logo\lgo\logo.bin","wb") as dest_file:
        # start
        start = "start"
        end = "end"

        # args handle
        width = int(input("请输入宽度:"))
        height = int(input("请输入高度:"))
        lcd_type = int(input("请输入LCD类型(0:RGB565 1:FSTN):"))
        init_data_len = len(args[0])
        init_data = args[0]
        blk_pin = int(input("请输入背光引脚:"))
        interface = int(input("请输入lcd接口类型(0:LCD;1:SPI):"))
        # logo.bin handle
        with open(args[1],"rb") as logo_file:
            logo_data = logo_file.read()
        logo_len = len(logo_data)

        # LCD interface
        if interface == 0:
            dataline = int(input("请输入dataline:"))
            linenum = int(input("请输入linenum:"))
            endian_type = int(input("请输入大小端(0:LSB 1:MSB):"))
            clk = int(input("请输入时钟clk(0-6 ):"))
            # 大端
            if endian == "1":
                write_data = pack(">2HBH%dB6BI"%init_data_len,width,height,lcd_type,init_data_len,*init_data,
                              blk_pin,interface,dataline,linenum,endian_type,clk,logo_len)
            # 小端
            else:
                write_data = pack("<2HBH%dB6BI" % init_data_len, width, height, lcd_type, init_data_len, *init_data,
                              blk_pin, interface, dataline, linenum, endian_type, clk, logo_len)
        # SPI interface
        elif interface == 1:
            spi_port = int(input("请输入spi_port:"))
            spi_mode = int(input("请输入spi_mode:"))
            spi_clk = int(input("请输入spi_clk:"))
            cs_pin = int(input("请输入cs引脚:"))
            dc_pin = int(input("请输入dc引脚:"))
            rst_pin = int(input("请输入rst引脚:"))
            # 大端
            if endian == "1":
                write_data = pack(">2HBH%dB8BI" % init_data_len, width, height, lcd_type, init_data_len,*init_data,
                                  blk_pin, interface, spi_port, spi_mode, cs_pin, dc_pin, rst_pin,spi_clk,logo_len)
            # 小端
            else:
                write_data = pack("<2HBH%dB8BI" % init_data_len, width, height, lcd_type, init_data_len, *init_data,
                                  blk_pin, interface, spi_port, spi_mode, cs_pin, dc_pin, rst_pin, spi_clk, logo_len)
        else:
            print("wrong interface!")
            return -1
        dest_file.write(start.encode())
        dest_file.write(write_data)
        dest_file.write(logo_data)
        dest_file.write(end.encode())


init_data = (
0, 0, 0x11,0, 1, 0x36,1, 1, 0x00,0, 1, 0x3A,1, 1, 0x05,0, 0, 0x21,0, 5, 0xB2,1, 1, 0x05,1, 1, 0x05,1, 1, 0x00,1, 1, 0x33,1, 1, 0x33,
0, 1, 0xB7,1, 1, 0x23,0, 1, 0xBB,1, 1, 0x22,0, 1, 0xC0,1, 1, 0x2C,0, 1, 0xC2,1, 1, 0x01,0, 1, 0xC3,1, 1, 0x13,0, 1, 0xC4,1, 1, 0x20,
0, 1, 0xC6,1, 1, 0x0F,0, 2, 0xD0,1, 1, 0xA4,1, 1, 0xA1,0, 1, 0xD6,1, 1, 0xA1,
0, 14, 0xE0,1, 1, 0x70,1, 1, 0x06,1, 1, 0x0C,1, 1, 0x08,1, 1, 0x09,1, 1, 0x27,1, 1, 0x2E,1, 1, 0x34,1, 1, 0x46,1, 1, 0x37,1, 1, 0x13,1, 1, 0x13,1, 1, 0x25,1, 1, 0x2A,
0, 14, 0xE1,1, 1, 0x70,1, 1, 0x04,1, 1, 0x08,1, 1, 0x09,1, 1, 0x07,1, 1, 0x03,1, 1, 0x2C,1, 1, 0x42,1, 1, 0x42,1, 1, 0x38,1, 1, 0x14,1, 1, 0x14,1, 1, 0x27,1, 1, 0x2C,
0, 0, 0x29,0, 1, 0x36,1, 1, 0x00,0, 4, 0x2a,1, 1, 0x00,1, 1, 0x00,1, 1, 0x00,1, 1, 0xef,0, 4, 0x2b,1, 1, 0x00,1, 1, 0x00,1, 1, 0x00,1, 1, 0xef,0, 0, 0x2c,

# logo结束横坐标
# logo结束纵坐标

# 除了初始化参数,下面的写屏参数必须写上
0,4,0x2a,
1,1,0x00,
1,1,0x00,
1,1,0x00,
1,1,0xef,
0,4,0x2b,
1,1,0x00,
1,1,0x00,
1,1,0x00,
1,1,0xef,
0,0,0x2c)

bin_create(init_data,r"D:\study\开机logo\Temp_picture.bin.bin")

一.给固件加入开机logo的引导代码

根据上述操作完成后生成的新固件烧录到开发板中。

注:对于logo.bin的引导文件,目前在公版的EC600MCNLE可以不用进行第一步操作,无需添加引导文件,但在EC800MCNLE中,需要先获取的原理图以及刷屏脚本,刷屏脚本即可以点亮背光并刷屏为红色,通过原理图以及刷屏脚本可以制作logo.bin文件,释放logo.bin文件后再执行第一步操作。

二.制作开机logo的图片文件

打开Img2Lcd.exe工具并选中一张jpg图片(其他图片格式的文件先转换成jpg格式的图片才能用这个工具)

按照各个选项进行配置,点击保存即可生成一个.bin文件,将此文件命名为Temp_picture.bin。运行logo.py,输入参数如下。

流程结束后会生成一个logo.bin文件,这个是开机logo的图片信息,和logo_boot文件夹中的logo.bin(开机logo的引导代码)不是同一个概念。把此logo.bin拖到QPYcom里面的usr目录下(图片如果放在外挂flash则拖到ext目录下),重启模组,即可看到logo显示。