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.....
学习,就是代码看得不舒服,管理员要开发个可以贴代码得。
