本文用于指导quecpython平台下ASR系列模组的开机logo制作指引。其中最为重要的是获取开机引导文件logo.bin。
对于logo.bin的引导文件,目前在公版的EC600MCNLE可以不用进行添加,无需添加引导文件,但在EC800MCNLE中,需要先获取原理图以及刷屏脚本,刷屏脚本即可以点亮背光并刷屏为红色。目前用到的所有文件均上传到附件中。
本文用于指导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显示。