【匠芯创-LCD部分2】D12X RTT增加LCD panel

芯片:D122BBV
平台:自己做的板子 + SDK# V1.0.5 #
需求:增加一个SPI+RGB的驱动
进入自己创建的工程,可以看到sdk下默认有几个panel供我们选择,如果没有适合我们的panel,那么就需要自己创建一个了。
在这里插入图片描述
首先从luban-lite-master\bsp\artinchip\drv\display\panel\panel_rgb_st7701s.c复制一份,因为我们准备修改一份st7796的驱动,找个名字相近的复制,然后把文件名字改成panel_rgb_st7796.c,打开文件,需要修改几点
1.头部的接口IO,根据自己的原理图修改,
2.修改static int panel_enable(struct aic_panel *panel)里面的初始化代码部分,这个部分由液晶厂家提供,参考原先的格式把命令填写进去就好了。
3.将文件里面所有带有st7701s的替换成st7796
4.st7701s_timing 接口时序信息,这个一般也由液晶厂家提供。按照参数填写
驱动文件就改好了

在这里插入代`/*
 * Copyright (c) 2023, Artinchip Technology Co., Ltd
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include "panel_com.h"
#include <aic_hal.h>

#define SLEEP_PIN  "PE.1"
#define RESET_PIN  "PE.2"

#define CS         "PE.3"
#define SCL        "PA.8"
#define SDI        "PA.9"

static struct gpio_desc reset_gpio;
static struct gpio_desc sleep_gpio;

static void panel_gpio_init(void)
{
    panel_get_gpio(&reset_gpio, RESET_PIN);
    panel_get_gpio(&sleep_gpio, SLEEP_PIN);

    panel_gpio_set_value(&sleep_gpio, 1);
    aic_delay_ms(2);
    panel_gpio_set_value(&reset_gpio, 0);
    aic_delay_ms(20);
    panel_gpio_set_value(&reset_gpio, 1);
    aic_delay_ms(120);
}

static int panel_enable(struct aic_panel *panel)
{
    panel_gpio_init();

    panel_spi_device_emulation(CS, SDI, SCL);

	//初始化代码
	/*
	这里我就不写了
	*/

    panel_di_enable(panel, 0);
    panel_de_timing_enable(panel, 0);
    panel_backlight_enable(panel, 0);
    return 0;
}

static struct aic_panel_funcs st7701s_funcs = {
    .disable = panel_default_disable,
    .unprepare = panel_default_unprepare,
    .prepare = panel_default_prepare,
    .enable = panel_enable,
    .register_callback = panel_register_callback,
};

static struct display_timing st7701s_timing = {
    .pixelclock = 42000000,
    .hactive = 400,
    .hfront_porch = 100,
    .hback_porch = 100,
    .hsync_len = 10,
    .vactive = 960,
    .vfront_porch = 80,
    .vback_porch = 100,
    .vsync_len = 20,
};

static struct panel_rgb rgb = {
    .mode = PRGB,
    .format = PRGB_24BIT,
    .clock_phase = DEGREE_0,
    .data_order = RGB,
    .data_mirror = 0,
};

struct aic_panel rgb_st7701s = {
    .name = "panel-st7701s",
    .timings = &st7701s_timing,
    .funcs = &st7701s_funcs,
    .rgb = &rgb,
    .connector_type = AIC_RGB_COM,
};

`码片

下一步我们来改.h文件,从C文件可以看出调用了
#include “panel_com.h”
#include <aic_hal.h>
两个文件,打开panel_com.h,非常自觉的找到st7701s,并在它下面加上自己的st7796
在这里插入图片描述
打开panel_com.c文件,同理复制7701s的修改为7796
在这里插入图片描述

保存完毕,我们回到menuconfig里面,发现好像还是没有出现st7796的选项,这个时候我们需要去修改menuconfig的配置,就在panel路径下的 Kconfig,打开Kconfig,还是非常自觉的找到st7701s,并在下面复制一下,修改为st7796
在这里插入图片描述
最后打开luban-lite-master\bsp\artinchip\SConscript,如下添加
在这里插入图片描述

所有保存完毕,这个时候我们再去menuconfig里面看,已经出现了st7796的选项了,下面就可以测试lcd点亮的情况了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哼哈大林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值