HX8369 驱动调试总结

本文详细介绍了如何调试HX8369 LCD驱动,强调了初始化过程、复位重要性、FPC连接检查以及SPI通信时序。此外,还分享了S3C2440 LCD控制器的初始化步骤,包括相关寄存器设置和常见TFT屏工作时序分析。针对驱动不成功的原因,提到了硬件连接、时序问题和配置代码错误。同时,文章还探讨了屏幕显示问题如花屏、点不亮及屏幕抖动的解决方案,涉及VCOM电压调节和刷新频率设置。

NOTE:首先确定自己需要什么样的LCD接口,有大致份分MCU和RGB两种,买LCM之前一定要说清避免买回来的不能用,还有一定要给LCM厂要模组资料以及IC资料和调试代码,节省自己的宝贵时间。

我因为使用的是s3c2440 CPU所以就选择了RGB接口的LCM。

拿到LCM后首先看其数据手册,按照数据手册画LCD的电路,一定要仔细看手册,按照手册将相应的无用引脚做接地或拉高处理。

连接完成后一定要仔细检查电气连通性,尤其FPC连通测试。

调试尽量先用熟悉的单片机将屏点亮。测试初始化代码以及屏的好坏。


1.初始化

任何一个LCD屏都是要初始化的,无论是MCU接口还是RGB接口。

对于RGB接口使用的是3线或4线的SPI串口初始化,对于MCU接口使用80或86接口初始化,具体需要根据芯片手册或屏的手册在引脚上做配置。

对于HX8369:




根据上面的说明配置引脚选择接口模式

我的配置是 1101即3线SPI 的RGB接口模式

配置完接口接下来就是调试初始化代码了,一下的代码是基于stm32的  //NOTE:一定要跟模组厂要对代码,大部分模组厂说我给你的代码没问题,但是呵呵了,注意代码中的延时

#include "lcd_botton.h"
#include "core_cm3.h"
#include "sysTick.h"

//*************************定义控制引脚的宏**********************************//
#define  set_cs  GPIO_SetBits(GPIOD, GPIO_Pin_9)
#define  reset_cs  GPIO_ResetBits(GPIOD, GPIO_Pin_9)
#define  set_clk  GPIO_SetBits(GPIOD, GPIO_Pin_1)
#define  reset_clk  GPIO_ResetBits( GPIOD, GPIO_Pin_1)
#define  set_sdi  GPIO_SetBits(GPIOD, GPIO_Pin_8)
#define  reset_sdi  GPIO_ResetBits( GPIOD, GPIO_Pin_8)
#define  set_res  GPIO_SetBits(GPIOD, GPIO_Pin_0)
#define  reset_res  GPIO_ResetBits(GPIOD, GPIO_Pin_0)




 //*******控制引脚的初始化***********************//
  
void LCD_GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure; 
    /* 使能FSMC对应相应管脚时钟*/
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD , ENABLE);
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
    
    set_cs;
set_res;
    set_clk;
    set_sdi;
 
}

//************复位lcd函数************//
void rest_lcd()
{
  set_res;
    Delay_us(10000);
    reset_res;
Delay_us(10000);
set_res;
    Delay_us(120000);
}


//***********发送命令函数*****************//
void send_cmd(uint8_t cmd)
{
  unsigned char i;
reset_cs;
 Delay_us(10);
reset_clk;
reset_sdi;
Delay_us(100);
set_clk;
 Delay_us(100);
for(i=0;i<8;i++)
    {
    reset_clk; 
  
      if (cmd&0x80)
       {
          set_sdi;
        }
       else
         {
         reset_sdi;
}
    Delay_us(100);
      set_clk;
Delay_us(100);
      cmd=cmd<<1;
    }
set_cs;
 Delay_us(10);
}


//**************发送数据函数**********************//
void send_date(uint8_t date)
{
  unsigned char i;
 reset_cs;
 Delay_us(10);
reset_clk;
set_sdi;
Delay_us(100);
set_clk;
 Delay_us(100);
for(i=0;i<8;i++)
    {
    reset_clk; 
  
      if (date&0x80)
       {
          set_sdi;
        }
       else
         {
         reset_sdi;
}
    Delay_us(100);
      set_clk;
Delay_us(100);
      date=date<<1;
    }
set_cs;
 Delay_us(10);
 
}

//*************配置HX8369函数*****************//
 void lcd_config()
 {


 rest_lcd(); //首先初始化


send_cmd(0xB9);  // 设置扩展命令,按照芯片手册填入数据
        send_date(0xFF);     
        send_date(0x83);     
        send_date(0x69);  
  
        send_cmd(0xB1);  //设置电压  ,相关参数参照芯片手册设置 
        send_date(0x01);                             
        send_date(0x00);                             
        send_date(0x34);                             
        send_date(0x06);                             
        send_date(0x00);                             
        send_date(0x11);                             
        send_date(0x11);                             
        send_date(0x2A);        //    VSPR regulator output control setting for source data output driving  根据需要调节这个                     
        send_date(0x32);          //     VSNR regulator output control setting for source data output driving           根据需要调节这个        
        send_date(0x3F);          //  The positive polarity gamma amplitude voltage setting (VSPR-VGSP).          根据需要调节这个         
        send_date(0x3F);           // The negitive polarity gamma amplitude voltage setting (VSNR-VGSN).          根据需要调节这个         
        send_date(0x07);                             
        send_date(0x23);                             
        send_date(0x01);                             
        send_date(0xE6);                             
        send_date(0xE6);                             
        send_date(0xE6);                             
        send_date(0xE6);                             
        send_date(0xE6);  
  
  
        send_cmd(0xB2);  // 设置显示参数480*800
        send_date(0x00);     
        send_date(0x2B);     //设置分辨率 接口模式根据需要设置
        send_date(0x03);     
        send_date(0x03);     
        send_date(0x70);     
        send_date(0x00);     
        send_date(0xFF);     
        send_date(0x00);    
        send_date(0x00);   
        send_date(0x00);   
        send_date(0x00);   
        send_date(0x03);     
        send_date(0x03);     
        send_date(0x00);     
        send_date(0x01);  
  
        send_cmd(0xB4);  // 设置显示波形  480*800
        send_date(0x00);     //00 列 05 1dot 0A 2dot 根据需要配置
        send_date(0x0C);     
        send_date(0xA0);   
        send_date(0x0E);     
        send_date(0x06);  
  
        send_cmd(0xB6);  // 设置VCOM 电压大小
        send_date(0x10);     
        send_date(0x10);  
  
  
        send_cmd(0xD5);  // This command is used for GIP timing output control.   对于RGB接口很重要
        send_date(0x00);     
        send_date(0x05);     
        send_date(0x03);     
        send_date(0x00);     
        send_date(0x01);     
        send_date(0x09);     
        send_date(0x10);     
        send_date(0x80);     
        send_date(0x37);     
        send_date(0x37);     
        send_date(0x20);     
        send_date(0x31);     
        send_date(0x46);     
        send_date(0x8A);     
        send_date(0x57);     
        send_date(0x9B);     
        send_date(0x20);     
        send_date(0x31);     
        send_date(0x46);     
        send_date(0x8A);     
        send_date(0x57);     
        send_date(0x9B);     
        send_date(0x07);     
        send_date(0x0F);     
        send_date(0x02);     
        send_date(0x00);  
  
        send_cmd(0xE0); // Set gamma curve related setting 设置色调曲线的
        send_date(0x00);   
        send_date(0x08);   
        send_date(0x0D);   
        send_date(0x2D);   
        send_date(0x34);   
        send_date(0x3F);   
        send_date(0x19);   
        send_date(0x38);   
        send_date(0x09);   
        send_date(0x0E);   
        send_date(0x0E);   
        send_date(0x12);   
        send_date(0x14);   
        send_date(0x12);   
        send_date(0x14);   
        send_date(0x13);   
        send_date(0x19);   
        send_date(0x00);   
        send_date(0x08);   
        send_date(0x0D);   
        send_date(0x2D);   
        send_date(0x34);   
        send_date(0x3F);   
        send_date(0x19);   
        send_date(0x38);   
        send_date(0x09);   
        send_date(0x0E);   
        send_date(0x0E);   
        send_date(0x12);   
        send_date(0x14);   
        send_date(0x12);   
        send_date(0x14);   
        send_date(0x13);   
        send_date(0x19);   
  Delay_us(50000);   
  
    send_cmd(0xC1);   //设置调色板 一定要设置
    send_date(0x01); //enable DGC function   
    send_date(0x02); //SET R-GAMMA   
    send_date(0x08);   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值