微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 60M的串口屏问题?

60M的串口屏问题?

时间:10-02 整理:3721RD 点击:
有谁在60M上面点亮了串口屏的?能不能给一个参考的点亮的驱动文件。  目前处于白屏状态,示波器没量到波行,不知道哪里配置有问题。

调过的,能不能贴一个原理图看看,60那边接的是哪几个pin?

串口屏搞定了,改了一些地方,这里就不贴出是怎么搞的了,改的地方还是有蛮多地方的,有需求可以再发帖吧。

项......................................

兄弟分享分享下,偶的60m现在同样白屏啊!但是示波器有波形输出哦

你是所有的信号线都有输出吗?

能否给分参考代码?谢谢了!

A0没有输出,配成gpio也能拉高拉低。其它口信号都基本正常。

你是60M的话,你看看你现在A0接的是哪个口子,对的话应该是GPIO36

                                #ifdef __SERIAL_LCM__            //
                                        SET_LCD_SERIAL_CLOCK(0, LCD_SERIAL_CLOCK_104MHZ);   //serial clock
                                       
                                        SET_LCD_SERIAL0_8_BIT_MODE;
                                        ENABLE_LCD_SERIAL0_SINGLE_A0;
                                       
                                        DISABLE_LCD_SERIAL0_SDI;
                                               
                                        DISABLE_LCD_SERIAL0_CS_STAY_LOW;
                                        ENABLE_LCD_SERIAL0_CS_STAY_LOW;
                                        #if (defined(SERIAL_LCM_4WIRE_1_DATA_LANE))
                                                DISABLE_LCD_SERIAL0_3WIRE;
                                        #elif defined(SERIAL_LCM_3WIRE_1_DATA_LANE) //3
                                                ENABLE_LCD_SERIAL1_3WIRE;
                                                DISABLE_LCD_SERIAL1_SDI;
                                        #endif

                                        ENABLE_LCD_SERIAL_IF_HW_CS; //HW CS
                                        #if defined(MAIN_LCD_16BIT_MODE)
                                                SET_LCD_SERIAL0_IF_SIZE(LCD_SCNF_IF_WIDTH_16);
                                        #elif defined(MAIN_LCD_18BIT_MODE)
                                                SET_LCD_SERIAL0_IF_SIZE(LCD_SCNF_IF_WIDTH_18);
                                        #elif defined(MAIN_LCD_8BIT_MODE)
                                                SET_LCD_SERIAL0_IF_SIZE(LCD_SCNF_IF_WIDTH_8);
                                        #endif
                                    //Timing need tuning
                                    SET_LCD_SERIAL_IF_CSS(0, 1);  //
                                    SET_LCD_SERIAL_IF_CSH(0, 1);
                                    SET_LCD_SERIAL_IF_WR_1ST(0,0);//
                                    SET_LCD_SERIAL_IF_WR_2ND(0,0);
                                    SET_LCD_SERIAL_IF_RD_1ST(0,0);//
                                    SET_LCD_SERIAL_IF_RD_2ND(0,0);
                                        set_lcd_driving_current(LCD_DRIVING_8MA);//Set Driving current
                               
                                #else
                                          SET_LCD_PARALLEL_IF_TIMING(0, LCD_PARALLEL_CLOCK_104MHZ, 2, 4, 6, 4, 4, 32, 4);
                                #endif


这是LCD的时序部分,不太好贴代码出来。你配了哪些地方?有什么现象?所有的数据和控制信号都量过没?
主要是硬件上面的。

信号方面所有的脚都正常了。GC9101的IC,FAE说他们抓取的SDA8位要不全是0要不全是1
         #define LCD_delay_GC9101()
           #if (defined(MAIN_LCD_8BIT_MODE))
                #define LCD_CtrlWrite_GC9101(_data)  \
                {\
                        SET_LCD_SERIAL0_IF_SIZE(LCD_SCNF_IF_WIDTH_8); \
                        *(volatile kal_uint8 *) MAIN_LCD_CMD_ADDR= (_data);\
                        LCD_delay_GC9101();\
                }\
               
                #define LCD_DataWrite_GC9101(_data)  \
                {\
                        SET_LCD_SERIAL0_IF_SIZE(LCD_SCNF_IF_WIDTH_8); \
                        *(volatile kal_uint8 *) MAIN_LCD_DATA_ADDR= (_data);\
                        LCD_delay_GC9101();\
                }

init_lcd_interface_GC9101中设置
        SET_LCD_SERIAL_CLOCK(0, LCD_SERIAL_CLOCK_RSVD); //此处选择serial lcm的clock  /////   LCD_SERIAL_CLOCK_104MHZ
        DISABLE_LCD_SERIAL0_SINGLE_A0;  
        DISABLE_LCD_SERIAL0_CS_STAY_LOW;
        ENABLE_LCD_SERIAL0_CS_STAY_LOW; // pixel data传输时,CS保持为low
      //Define serial LCM work mode here,需要在lcd_sw.h中定义相应的宏
#if (defined(SERIAL_LCM_4WIRE_1_DATA_LANE)) // 4 wire时开启
        DISABLE_LCD_SERIAL0_3WIRE;   
        DISABLE_LCD_SERIAL0_SDI;
        //DISABLE_LCD_SERIAL1_SDI;
#elif defined(SERIAL_LCM_3WIRE_1_DATA_LANE) //3         // 3 wire时开启
        ENABLE_LCD_SERIAL1_3WIRE;
        DISABLE_LCD_SERIAL1_SDI;
#endif
    ENABLE_LCD_SERIAL_IF_HW_CS; //HW CS
    #if defined(MAIN_LCD_16BIT_MODE)
    SET_LCD_SERIAL0_IF_SIZE(LCD_SCNF_IF_WIDTH_16);
    #elif defined(MAIN_LCD_18BIT_MODE)
    SET_LCD_SERIAL0_IF_SIZE(LCD_SCNF_IF_WIDTH_18);
    #elif defined(MAIN_LCD_8BIT_MODE)
    SET_LCD_SERIAL0_IF_SIZE(LCD_SCNF_IF_WIDTH_8);
    #endif
         //Timing need tuning
        SET_LCD_SERIAL_IF_CSS(0, 6);      
        SET_LCD_SERIAL_IF_CSH(0,6);   
        SET_LCD_SERIAL_IF_WR_1ST(0, 8);
        SET_LCD_SERIAL_IF_WR_2ND(0, 8);
        SET_LCD_SERIAL_IF_RD_1ST(0, 15);
        SET_LCD_SERIAL_IF_RD_2ND(0, 15);
/*       
         //Timing need tuning
        SET_LCD_SERIAL_IF_CSS(1, 6);  //
        SET_LCD_SERIAL_IF_CSH(1, 6);
        SET_LCD_SERIAL_IF_WR_1ST(1, 8);// 4
        SET_LCD_SERIAL_IF_WR_2ND(1, 8);// 4
        SET_LCD_SERIAL_IF_RD_1ST(1, 7);//0,0
        SET_LCD_SERIAL_IF_RD_2ND(1, 7);//0,0
*/
        SET_LCD_SERIAL0_IF_SIZE(LCD_SCNF_IF_WIDTH_8);//CMD use 8 bit width
      #endif
      //Set Driving current
    set_lcd_driving_current(LCD_DRIVING_8MA);      //LCD_DRIVING_4MA
        #endif


36-SDA 37-SCL 39-A0 46-RST


不是啊,我们的是GPIO39

GPIO39是不是串口的A0  那是并口的A0,  你飞线试下

...........................

kal_uint32 ranesis_delay;
        #define LCD_CtrlWrite_ST7789S(_data) \
        {\
            *((volatile kal_uint8 *)MAIN_LCD_CMD_ADDR) = (_data&0x00FF);\
            for(ranesis_delay = 20; ranesis_delay > 0; ranesis_delay--);\
        }\
        #define LCD_DataWrite_ST7789S(_data) \
        {\
            *((volatile kal_uint8 *)MAIN_LCD_DATA_ADDR) = (_data&0x00FF);\
            for(ranesis_delay = 20; ranesis_delay > 0; ranesis_delay--);\
        }
       
        #define LCD_DataRead_ST7789S        (*(volatile kal_uint8 *)MAIN_LCD_DATA_ADDR);

初始化:
void LCD_Init_ST7789S(kal_uint32 bkground, void **buf_addr)
{
         SET_LCD_CTRL_RESET_PIN;//set reset pin high
         Delayms(5);
         CLEAR_LCD_CTRL_RESET_PIN;//set reset pin low
         Delayms(5);
         SET_LCD_CTRL_RESET_PIN;//set reset pin high
         Delayms(120);
//---------------------------------------------------------------------------------------------------//
        LCD_CtrlWrite_ST7789S(0x11);
        Delayms(120); //Delay 120ms
        //--------------------------------ST7789S Frame rate setting----------------------------------//
        LCD_CtrlWrite_ST7789S(0xb2);
        LCD_DataWrite_ST7789S(0x0c);
        LCD_DataWrite_ST7789S(0x0c);
        LCD_DataWrite_ST7789S(0x00);
        LCD_DataWrite_ST7789S(0x33);
        LCD_DataWrite_ST7789S(0x33);
        LCD_CtrlWrite_ST7789S(0xb7);
        LCD_DataWrite_ST7789S(0x35);
        //---------------------------------ST7789S Power setting--------------------------------------//
        LCD_CtrlWrite_ST7789S(0xbb);
        LCD_DataWrite_ST7789S(0x2b);
        LCD_CtrlWrite_ST7789S(0xc0);
        LCD_DataWrite_ST7789S(0x2c);
        LCD_CtrlWrite_ST7789S(0xc2);
        LCD_DataWrite_ST7789S(0x01);
        LCD_CtrlWrite_ST7789S(0xc3);//vcom
        LCD_DataWrite_ST7789S(0x1f);// 0x17  
        LCD_CtrlWrite_ST7789S(0xc4);
        LCD_DataWrite_ST7789S(0x20);
        LCD_CtrlWrite_ST7789S(0xc6);
        LCD_DataWrite_ST7789S(0xf0);//0x15 50hz  0x19 45hz  0x0f 60hz 0x08 78hz  0x6h 86
        LCD_CtrlWrite_ST7789S(0xd0);
        LCD_DataWrite_ST7789S(0xa4);
        LCD_DataWrite_ST7789S(0xa1);//0xa2
        //--------------------------------ST7789S gamma setting---------------------------------------//
        LCD_CtrlWrite_ST7789S(0xe0);
        LCD_DataWrite_ST7789S(0xf0);
        LCD_DataWrite_ST7789S(0x00);
        LCD_DataWrite_ST7789S(0x0a);
        LCD_DataWrite_ST7789S(0x10);
        LCD_DataWrite_ST7789S(0x12);
        LCD_DataWrite_ST7789S(0x1b);
        LCD_DataWrite_ST7789S(0x39);
        LCD_DataWrite_ST7789S(0x44);
        LCD_DataWrite_ST7789S(0x47);
        LCD_DataWrite_ST7789S(0x28);
        LCD_DataWrite_ST7789S(0x12);
        LCD_DataWrite_ST7789S(0x10);
        LCD_DataWrite_ST7789S(0x16);
        LCD_DataWrite_ST7789S(0x1b);
        LCD_CtrlWrite_ST7789S(0xe1);
        LCD_DataWrite_ST7789S(0xf0);
        LCD_DataWrite_ST7789S(0x00);
        LCD_DataWrite_ST7789S(0x0a);
        LCD_DataWrite_ST7789S(0x10);
        LCD_DataWrite_ST7789S(0x11);
        LCD_DataWrite_ST7789S(0x1a);
        LCD_DataWrite_ST7789S(0x3b);
        LCD_DataWrite_ST7789S(0x34);
        LCD_DataWrite_ST7789S(0x4e);
        LCD_DataWrite_ST7789S(0x3a);
        LCD_DataWrite_ST7789S(0x17);
        LCD_DataWrite_ST7789S(0x16);
        LCD_DataWrite_ST7789S(0x21);
        LCD_DataWrite_ST7789S(0x22);
        LCD_CtrlWrite_ST7789S(0x3A);
        //LCD_DataWrite_ST7789S(0x06);
#if defined(MAIN_LCD_16BIT_MODE_RGB565)
        LCD_DataWrite_ST7789S(0x05);
#else /*if defined(MAIN_LCD_18BIT_MODE_RGB666)*/
        LCD_DataWrite_ST7789S(0x06);
#endif
#if defined(SERIAL_LCM_2_DATA_LINE_PROTOCOL)
        LCD_CtrlWrite_ST7789S(0xE7);
        LCD_DataWrite_ST7789S(0x10);
#else
        LCD_CtrlWrite_ST7789S(0xE7);
        LCD_DataWrite_ST7789S(0x00);
#endif

        LCD_CtrlWrite_ST7789S(0x29);

        LCD_ClearAll_ST7789S(0x00);
}

..................

休眠函数:
void LCD_EnterSleep_ST7789S(void)
{
#if defined(LQT_SUPPORT)/*Please don't remove LQT code segments*/
    if(!(lcd_at_mode==LCD_AT_RELEASE_MODE))
    {
            return;
    }       
#endif /*defined(LQT_SUPPORT))*/       
        LCD_CtrlWrite_ST7789S(0x28);
       Delayms(90);
           LCD_CtrlWrite_ST7789S(0x10);
        Delayms(120);
}

void LCD_ExitSleep_ST7789S(void)
{
#if defined(LQT_SUPPORT)/*Please don't remove LQT code segments*/
    if(!(lcd_at_mode==LCD_AT_RELEASE_MODE))
    {
            return;
    }       
#endif /*defined(LQT_SUPPORT))*/       
        LCD_CtrlWrite_ST7789S(0x11);
        Delayms(120);
        LCD_CtrlWrite_ST7789S(0x29);
        Delayms(150);
}

void LCD_ClearAll_ST7789S(kal_uint16 data)
{
        LCD_blockClear_ST7789S(0,0,LCD_WIDTH-1,319, data);
}

...............


............

以上是一些主要函数,可以开机点亮,看到系统图片,
但是在 LCD_BlockWrite_ST7789S()刷单色LCD_ClearAll_ST7789S(0xF800)不起作用,
另外读ID不起作用 ST7789S= 0x00,0x00,0x00,0x00
请教下大神该如何处理,谢谢了

串口屏 读ID返回都是00 00 00 啊 ,,怎么弄

学习。

marking.....

学习,就是代码看得不舒服,管理员要开发个可以贴代码得。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top