MTK6572 RGB屏幕调试教程

本文详细介绍了在MT6572平台上如何进行RGB LCD的驱动开发,包括硬件接口确认、初始化时序设定、驱动程序编写及SPI接口的GPIO初始化。通过设置GPIO、初始化时序及编写驱动函数,实现屏幕的正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先根据6572的设计注意事项,确认好硬件接口电路图。下面是手册里面的介绍


2.根据自己的原理图来确认初始化时序,下面是SPI接口的RGB原理图




上面可以看到我们的屏是通过SPI接口初始化的。

3.开始在MT6572平台添加驱动。

1)修改pro.mk文件 分别增加lcm_lk    lcm_kernel  = kernel下面的文件夹 ,同时修改logo分辨率的大小。

2)   在custom/common/kernel/lcm目录下面新增一个文件夹,名字就是屏幕的名字即可。

3)   因为lk是一个链接到kernel的一个软链接,所以不需要再lk下面再次增加屏的名字。

4)修改LCM目录下面的mt65xx_list文件,增加自己在lcm文件里面的声明的LCM_DRV,就是向上面提供一个LCM接口。

5)  开始编写lcd驱动程序。


4.驱动程序的编写


#ifndef BUILD_LK
#include <linux/string.h>
#endif
#ifdef BUILD_LK
#include <platform/mt_gpio.h>      //需要初始化GPIO的时候,需要加上这些头文件
#include <platform/mt_pmic.h>     //需要初始化GPIO的时候,需要加上这些头文件
#elif (defined BUILD_UBOOT)
#include <asm/arch/mt6577_gpio.h>      //需要初始化GPIO的时候,需要加上这些头文件
#else
#include <mach/mt_gpio.h>    //需要初始化GPIO的时候,需要加上这些头文件
#include <mach/mt_pm_ldo.h>     //需要初始化GPIO的时候,需要加上这些头文件
#endif
#include "lcm_drv.h"






#define FRAME_WIDTH  (240)
#define FRAME_HEIGHT (320)




static LCM_UTIL_FUNCS  lcm_util = {0};


#define SET_RESET_PIN(v)    (lcm_util.set_reset_pin((v)))


#define UDELAY(n) (lcm_util.udelay(n))
#define MDELAY(n) (lcm_util.mdelay(n))




/*此部分完全由自己添加,根据自己的SPI接口,来初始化GPIO*/

#define SPI_CS(flag)                  (lcm_util.set_gpio_out(GPIO60,flag))
#define SPI_SDA(flag)                 (lcm_util.set_gpio_out(GPIO129,flag))
#define SPI_SCL(flag)                 (lcm_util.set_gpio_out(GPIO128,flag))




#define SPI_CS_H  SPI_CS(1)
#define SPI_CS_L  SPI_CS(0)


#define SPI_SCLK_H SPI_SCL(1)
#define SPI_SCLK_L SPI_SCL(0)


#define SPI_DATA_H SPI_SDA(1)
#define SPI_DATA_L SPI_SDA(0)




static __inline void send_ctrl_cmd(unsigned int cmd)
{


}


static __inline void send_data_cmd(unsigned int data)
{


}


static __inline void set_lcm_register(unsigned int regIndex,
                                      unsigned int regData)
{
    send_ctrl_cmd(regIndex);
    send_data_cmd(regData);
}




static void lcm_set_util_funcs(const LCM_UTIL_FUNCS *util)
{
    memcpy(&lcm_util, util, sizeof(LCM_UTIL_FUNCS));
}








static int SPI_Gpio_init(void)
{


        lcm_util.set_gpio_mode(GPIO60, GPIO_MODE_00);    
    lcm_util.set_gpio_dir(GPIO60, GPIO_DIR_OUT);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值