本帖最后由 余金渠 于 2022-5-4 13:02 編輯
五一調試了以前買的LCD屏淘寶鏈接
商家給的資料只有51的我用51測試可以正常顯示于是乎我想移植到HC32F460(Cortex-M4)中不過調試了2天半只是得到了個雪花屏的結果。
由于手上沒有合適的拍攝工具只能給張差不多的圖片
3eeb27c1980ad1ca32c6a50188567ab1.jpeg (7.58 KB, 下載次數: 77)
下載附件
雪花屏
2022-5-3 19:28 上傳
HDG`1979J6$(AW)M%VE)H6P.png (66.84 KB, 下載次數: 83)
下載附件
2022-5-3 19:36 上傳
EY2(]8ZX7VPXPMLBSKD68OS.png (263.48 KB, 下載次數: 66)
下載附件
購買的屏幕
2022-5-3 19:29 上傳
而且這是在初始化階段就會出現的而不是調用顯示字符函數時出現的,我初始化的參數全是照著51代碼寫的不知道是不是對齊的問題
后天就要去學校了在此把代碼發出,不要求各位大佬給出完整解決方案,給個思路就行用以幫助我在下周的調試。希望能得到大家的回復。
我把代碼和商家給的資料放在百度網盤了就不站論壇的空間了
鏈接:https://pan.baidu.com/s/1tMcx3yPxhYUFOMei0TagDQ
提取碼:jgr4
還有初始化單片機代碼貼在下面
- #include "lcd_init.h"
- void LCD_GPIO_Init(void)
- {
- stc_port_init_t stcPortInit;
- /* configuration structure initialization */
- MEM_ZERO_STRUCT(stcPortInit);
- stcPortInit.enPinMode = Pin_Mode_Out;
- stcPortInit.enExInt = Enable;
- stcPortInit.enPullUp = Enable;
- // PORT_Init(LCD_PIN_PORT , LCD_BLK_PIN | LCD_RST_PIN | LCD_DC_PIN | LCD_SCLK_PIN | LCD_MOSI_PIN
- // | LCD_CS_PIN, &stcPortInit);
- PORT_Init(LCD_PIN_PORT , LCD_BLK_PIN | LCD_RST_PIN | LCD_DC_PIN , &stcPortInit);
- PORT_Unlock();
- M4_PORT->PSPCR = 0x0Bu;
- PORT_Lock();
- LCD_BLK_Clr();
- }
- /******************************************************************************
- 函數說明:LCD串行數據寫入函數
- 入口數據:dat 要寫入的串行數據
- 返回值: 無
- ******************************************************************************/
- void LCD_Writ_Bus(u8 dat)
- {
- // u8 i;
- // LCD_DC_Set();
- // LCD_CS_Clr();
- // for(i=0;i<8;i++)
- // {
- // if(dat&0x80)
- // {
- // LCD_MOSI_Set();
- // }
- // else LCD_MOSI_Clr();
- // LCD_SCLK_Clr();
- // LCD_SCLK_Set();
- // dat<<=1;
- // }
- //
- // LCD_CS_Set();
- while (Reset == SPI_GetFlag(SPI_UNIT, SpiFlagSendBufferEmpty))
- {}
- SPI_SendData8(SPI_UNIT,dat);
- }
- /******************************************************************************
- 函數說明:LCD寫入數據
- 入口數據:dat 寫入的數據
- 返回值: 無
- ******************************************************************************/
- void LCD_WR_DATA8(u8 dat)
- {
- LCD_DC_Set();
- LCD_Writ_Bus(dat);
- }
- /******************************************************************************
- 函數說明:LCD寫入數據
- 入口數據:dat 寫入的數據
- 返回值: 無
- ******************************************************************************/
- void LCD_WR_DATA(u16 dat)
- {
- LCD_Writ_Bus(dat>>8);
- LCD_Writ_Bus(dat);
- }
- /******************************************************************************
- 函數說明:LCD寫入命令
- 入口數據:dat 寫入的命令
- 返回值: 無
- ******************************************************************************/
- void LCD_WR_REG(u8 dat)
- {
- LCD_DC_Clr();//寫命令
- LCD_Writ_Bus(dat);
- }
- /******************************************************************************
- 函數說明:設置起始和結束地址
- 入口數據:x1,x2 設置列的起始和結束地址
- y1,y2 設置行的起始和結束地址
- 返回值: 無
- ******************************************************************************/
- void LCD_Address_Set(u16 x1,u16 y1,u16 x2,u16 y2)
- {
- LCD_WR_REG(0x2a);//列地址設置
- LCD_WR_DATA(x1);
- LCD_WR_DATA(x2);
- LCD_WR_REG(0x2b);//行地址設置
- LCD_WR_DATA(y1);
- LCD_WR_DATA(y2);
- LCD_WR_REG(0x2c);//儲存器寫
- }
- /******************************************************************************
- 函數說明:LCD初始化函數
- 入口數據:無
- 返回值: 無
- ******************************************************************************/
- void LCD_Init(void)
- {
- if(Chip_Selection==0) //初始化ILI9341
- {
- LCD_GPIO_Init();//初始化GPIO
-
- LCD_RES_Clr();//復位
- Ddl_Delay1ms(50);
- LCD_RES_Set();
- Ddl_Delay1ms(50);
-
- LCD_BLK_Set();//打開背光
- Ddl_Delay1ms(50);
-
- //************* Start Initial Sequence **********//
- LCD_WR_REG(0x11); //Sleep out
- Ddl_Delay1ms(60); //Delay 60ms
- //************* Start Initial Sequence **********//
- LCD_WR_REG(0xCF);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0xC1);
- LCD_WR_DATA8(0X30);
- LCD_WR_REG(0xED);
- LCD_WR_DATA8(0x64);
- LCD_WR_DATA8(0x03);
- LCD_WR_DATA8(0X12);
- LCD_WR_DATA8(0X81);
- LCD_WR_REG(0xE8);
- LCD_WR_DATA8(0x85);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x79);
- LCD_WR_REG(0xCB);
- LCD_WR_DATA8(0x39);
- LCD_WR_DATA8(0x2C);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x34);
- LCD_WR_DATA8(0x02);
- LCD_WR_REG(0xF7);
- LCD_WR_DATA8(0x20);
- LCD_WR_REG(0xEA);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0xC0); //Power control
- LCD_WR_DATA8(0x1D); //VRH[5:0]
- LCD_WR_REG(0xC1); //Power control
- LCD_WR_DATA8(0x12); //SAP[2:0];BT[3:0]
- LCD_WR_REG(0xC5); //VCM control
- LCD_WR_DATA8(0x33);
- LCD_WR_DATA8(0x3F);
- LCD_WR_REG(0xC7); //VCM control
- LCD_WR_DATA8(0x92);
- LCD_WR_REG(0x3A); // Memory Access Control
- LCD_WR_DATA8(0x55);
- LCD_WR_REG(0x36); // Memory Access Control
- if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x08);
- else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC8);
- else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x78);
- else LCD_WR_DATA8(0xA8);
- LCD_WR_REG(0xB1);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x12);
- LCD_WR_REG(0xB6); // Display Function Control
- LCD_WR_DATA8(0x0A);
- LCD_WR_DATA8(0xA2);
- LCD_WR_REG(0x44);
- LCD_WR_DATA8(0x02);
- LCD_WR_REG(0xF2); // 3Gamma Function Disable
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0x26); //Gamma curve selected
- LCD_WR_DATA8(0x01);
- LCD_WR_REG(0xE0); //Set Gamma
- LCD_WR_DATA8(0x0F);
- LCD_WR_DATA8(0x22);
- LCD_WR_DATA8(0x1C);
- LCD_WR_DATA8(0x1B);
- LCD_WR_DATA8(0x08);
- LCD_WR_DATA8(0x0F);
- LCD_WR_DATA8(0x48);
- LCD_WR_DATA8(0xB8);
- LCD_WR_DATA8(0x34);
- LCD_WR_DATA8(0x05);
- LCD_WR_DATA8(0x0C);
- LCD_WR_DATA8(0x09);
- LCD_WR_DATA8(0x0F);
- LCD_WR_DATA8(0x07);
- LCD_WR_DATA8(0x00);
- LCD_WR_REG(0XE1); //Set Gamma
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x23);
- LCD_WR_DATA8(0x24);
- LCD_WR_DATA8(0x07);
- LCD_WR_DATA8(0x10);
- LCD_WR_DATA8(0x07);
- LCD_WR_DATA8(0x38);
- LCD_WR_DATA8(0x47);
- LCD_WR_DATA8(0x4B);
- LCD_WR_DATA8(0x0A);
- LCD_WR_DATA8(0x13);
- LCD_WR_DATA8(0x06);
- LCD_WR_DATA8(0x30);
- LCD_WR_DATA8(0x38);
- LCD_WR_DATA8(0x0F);
- LCD_WR_REG(0x29); //Display on
- }
- else //初始化ST7789
- {
- LCD_GPIO_Init();//初始化GPIO
- LCD_RES_Set();//復位
- Ddl_Delay1ms(50);
- LCD_RES_Clr();
- Ddl_Delay1ms(50);
- LCD_RES_Set();
- Ddl_Delay1ms(50);
- LCD_BLK_Set();//打開背光
- Ddl_Delay1ms(250);
- LCD_WR_REG(0x11);
- Ddl_Delay1ms(60);//Delay 20ms
- //************* Start Initial Sequence **********//
- //------------------------------display and color format setting--------------------------------//
-
- LCD_WR_REG(0X36);// Memory Access Control
- if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x00);
- else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC0);
- else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x70);
- else LCD_WR_DATA8(0xA0);
- LCD_WR_REG(0X3A);
- LCD_WR_DATA8(0X05);
- //--------------------------------ST7789S Frame rate setting-------------------------
- LCD_WR_REG(0xb2);
- LCD_WR_DATA8(0x0c);
- LCD_WR_DATA8(0x0c);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x33);
- LCD_WR_DATA8(0x33);
- LCD_WR_REG(0xb7);
- LCD_WR_DATA8(0x35);
- //---------------------------------ST7789S Power setting-----------------------------
- LCD_WR_REG(0xbb);
- LCD_WR_DATA8(0x1c);
- LCD_WR_REG(0xc0);
- LCD_WR_DATA8(0x2c);
- LCD_WR_REG(0xc2);
- LCD_WR_DATA8(0x01);
- LCD_WR_REG(0xc3);
- LCD_WR_DATA8(0x0b);
- LCD_WR_REG(0xc4);
- LCD_WR_DATA8(0x20);
- LCD_WR_REG(0xc6);
- LCD_WR_DATA8(0x0f);
- // LCD_WR_REG(0xca);
- // LCD_WR_DATA8(0x0f);
- // LCD_WR_REG(0xc8);
- // LCD_WR_DATA8(0x08);
- // LCD_WR_REG(0x55);
- // LCD_WR_DATA8(0x90);
- LCD_WR_REG(0xd0);
- LCD_WR_DATA8(0xa4);
- LCD_WR_DATA8(0xa1);
- //--------------------------------ST7789S gamma setting------------------------------
- LCD_WR_REG(0xe0);
- LCD_WR_DATA8(0xd0);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x03);
- LCD_WR_DATA8(0x09);
- LCD_WR_DATA8(0x13);
- LCD_WR_DATA8(0x1c);
- LCD_WR_DATA8(0x3a);
- LCD_WR_DATA8(0x55);
- LCD_WR_DATA8(0x48);
- LCD_WR_DATA8(0x18);
- LCD_WR_DATA8(0x12);
- LCD_WR_DATA8(0x0e);
- LCD_WR_DATA8(0x19);
- LCD_WR_DATA8(0x1e);
- LCD_WR_REG(0xe1);
- LCD_WR_DATA8(0xd0);
- LCD_WR_DATA8(0x00);
- LCD_WR_DATA8(0x03);
- LCD_WR_DATA8(0x09);
- LCD_WR_DATA8(0x05);
- LCD_WR_DATA8(0x25);
- LCD_WR_DATA8(0x3a);
- LCD_WR_DATA8(0x55);
- LCD_WR_DATA8(0x50);
- LCD_WR_DATA8(0x3d);
- LCD_WR_DATA8(0x1c);
- LCD_WR_DATA8(0x1d);
- LCD_WR_DATA8(0x1d);
- LCD_WR_DATA8(0x1e);
- LCD_WR_REG(0x29);
- }
- }
復制代碼 他標的是ST7789S不過我用的是商家個的51代碼中個的參數更改了的。
原本是用軟SPI的后面用硬件SPI了邏輯分析儀解碼的數據是一樣的。
解碼參數設置
F8J43)XFMGOA)%[MUTVHJCF.png (16.52 KB, 下載次數: 69)
下載附件
2022-5-3 19:46 上傳
我個人感覺是初始化參數有問題。要么是SPI的對齊方式有問題這些要看數據手冊挺長的我明天再看看。
)[UKB3M}CYSRVEDD(6ZHCJB.png (12.17 KB, 下載次數: 64)
下載附件
2022-5-3 19:57 上傳
再放一張硬件SPI的波形是初始化的0x36命令的部分
|