找回密码
 立即注册
查看: 47|回复: 3

求助SPI-TFT刷屏对比速度比较慢

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:319
  • 最近打卡:2026-06-03 00:02:07
已绑定手机

24

主题

48

回帖

1350

积分

金牌会员

积分
1350
发表于 前天 11:15 | 显示全部楼层 |阅读模式
为什么STC32G144K246和STM32F103VET6对比 视频左边2.0寸屏是STC的 右边是STM32 2.4寸屏  


/****************  用户定义宏  ****************/

#define SEL_HPLL1       1
#define SEL_HPLL2       2
#define HPLL_SEL        SEL_HPLL2

#if(HPLL_SEL==SEL_HPLL1)
    #define MAIN_Fosc   120000000L //定义主时钟(超频)
#else
    #define MAIN_Fosc   90000000L  //定义主时钟
#endif

/**********************************************************/


//========================================================================
// 函数: void HPLL_config(void)
// 描述: PLL时钟配置函数。
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2025-11-01
// 备注:
//========================================================================
void HPLL_config(void)
{
#if(HPLL_SEL==SEL_HPLL2)
    WTST = 2;           //通过WTST增加等待时钟控制Flash读取速度在33MHz以内, 主时钟:360MHz/2/2=90MHz, 读Flash速度:90MHz/(1+2)=30MHz

    HPLLCR |= 0x80;     //使能HPLL(高速外设默认使用HPLL时钟,切换到HPLL2前要先使能HPLL,切换完再关闭HPLL)

                        //首先需要将HIRC主频调节到48MHz
    HPLL2CR &= ~0x10;   //选择HPLL2输入时钟源为HIRC
//    HPLL2CR |= 0x10;    //选择HPLL2输入时钟源为IRCM
    HPLL2PDIV = 8;      //设置HPLL2输入时钟预分频为8(HPLL输入频率必须为6MHz)
//    HPLL2CR |= 0x00;    //HPLL2=6MHz*52=312MHz
//    HPLL2CR |= 0x01;    //HPLL2=6MHz*54=324MHz
//    HPLL2CR |= 0x02;    //HPLL2=6MHz*56=336MHz
//    HPLL2CR |= 0x03;    //HPLL2=6MHz*58=348MHz
    HPLL2CR |= 0x04;    //HPLL2=6MHz*60=360MHz
//    HPLL2CR |= 0x05;    //HPLL2=6MHz*62=372MHz
//    HPLL2CR |= 0x06;    //HPLL2=6MHz*64=384MHz
//    HPLL2CR |= 0x07;    //HPLL2=6MHz*66=396MHz
//    HPLL2CR |= 0x08;    //HPLL2=6MHz*68=408MHz
//    HPLL2CR |= 0x09;    //HPLL2=6MHz*70=420MHz
//    HPLL2CR |= 0x0a;    //HPLL2=6MHz*72=432MHz
//    HPLL2CR |= 0x0b;    //HPLL2=6MHz*74=444MHz
//    HPLL2CR |= 0x0c;    //HPLL2=6MHz*76=456MHz
//    HPLL2CR |= 0x0d;    //HPLL2=6MHz*78=468MHz
//    HPLL2CR |= 0x0e;    //HPLL2=6MHz*80=480MHz
//    HPLL2CR |= 0x0f;    //HPLL2=6MHz*82=492MHz
    HPLL2CR |= 0x20;    //高速外设时钟选择 HPLL2/2
    HPLL2CR |= 0x80;    //使能HPLL2

    HPLLCR &= ~0x80;    //关闭HPLL(高速外设默认使用HPLL时钟,切换到HPLL2前要先使能HPLL,切换完再关闭HPLL)
   
    CLKDIV = 2;         //系统时钟 = 主时钟源/2 = HPLL2/2/2 = 90MHz
    CLKSEL = 0x08;      //选择HPLL2/2作为主时钟源

#else
    WTST = 3;           //通过WTST增加等待时钟控制Flash读取速度在33MHz以内, 主时钟:480MHz/2/2=120MHz, 读Flash速度:120MHz/(1+3)=30MHz
                        //首先需要将HIRC主频调节到48MHz
    HPLLCR &= ~0x10;    //选择HPLL输入时钟源为HIRC
//    HPLLCR |= 0x10;     //选择HPLL输入时钟源为IRCM
    HPLLPDIV = 8;       //设置HPLL输入时钟预分频为8(HPLL输入频率必须为6MHz)
//    HPLLCR |= 0x00;     //HPLL=6MHz*52=312MHz
//    HPLLCR |= 0x01;     //HPLL=6MHz*54=324MHz
//    HPLLCR |= 0x02;     //HPLL=6MHz*56=336MHz
//    HPLLCR |= 0x03;     //HPLL=6MHz*58=348MHz
//    HPLLCR |= 0x04;     //HPLL=6MHz*60=360MHz
//    HPLLCR |= 0x05;     //HPLL=6MHz*62=372MHz
//    HPLLCR |= 0x06;     //HPLL=6MHz*64=384MHz
//    HPLLCR |= 0x07;     //HPLL=6MHz*66=396MHz
//    HPLLCR |= 0x08;     //HPLL=6MHz*68=408MHz
//    HPLLCR |= 0x09;     //HPLL=6MHz*70=420MHz
//    HPLLCR |= 0x0a;     //HPLL=6MHz*72=432MHz
//    HPLLCR |= 0x0b;     //HPLL=6MHz*74=444MHz
//    HPLLCR |= 0x0c;     //HPLL=6MHz*76=456MHz
//    HPLLCR |= 0x0d;     //HPLL=6MHz*78=468MHz
    HPLLCR |= 0x0e;     //HPLL=6MHz*80=480MHz
//    HPLLCR |= 0x0f;     //HPLL=6MHz*82=492MHz
    HPLL2CR &= ~0x60;   //高速外设时钟选择 HPLL/2
    HPLLCR |= 0x80;     //使能HPLL

    CLKDIV = 2;         //系统时钟=主时钟源/2 = HPLL/2/2 = 120MHz
    CLKSEL = 0x04;      //选择HPLL/2作为主时钟源
#endif

//    P5M0 |= 0x10; P5M1 &= ~0x10;//设置P5.4口为推挽输出
//    P5SR &= ~0x10;              //设置P5.4口为快速模式
//    HIRCCR |= 0x10;             //输出系统时钟
//    MCLKOCR = 10;               //系统时钟 10 分频到P5.4
}



/******************************************************************************
      函数说明:LCD串行数据写入函数
      入口数据:dat  要写入的串行数据
      返回值:  无
******************************************************************************/
void LCD_Writ_Bus(u8 dat)
{       
    // 清除标志
    SPSTAT = 0xC0;
   
    // 发送数据
    SPDAT = dat;
   
    // 等待发送完成
    while (!(SPSTAT & 0x80)); // 等待 SPIF 为 1
   
    // 清除标志
    SPSTAT = 0xC0;
}


/******************************************************************************
      函数说明:LCD写入数据
      入口数据:dat 写入的数据
      返回值:  无
******************************************************************************/
void LCD_WR_DATA8(u8 dat)
{
        LCD_CS = 0;
        LCD_Writ_Bus(dat);
        LCD_CS = 1;
}


/******************************************************************************
      函数说明:LCD写入数据
      入口数据:dat 写入的数据
      返回值:  无
******************************************************************************/
void LCD_WR_DATA(u16 dat)
{
        LCD_CS = 0;
        LCD_Writ_Bus((u8)(dat>>8));
        LCD_Writ_Bus((u8)dat);
        LCD_CS = 1;
}


/******************************************************************************
      函数说明:LCD初始化函数
      入口数据:无
      返回值:  无
******************************************************************************/
void LCD_Init(void)
{
        SPI_Init();        //(SPI_io, SPI_speed), 参数:         SPI_io: 切换IO(SS MOSI MISO SCLK), 0: 切换到P1.4 P1.5 P1.6 P1.7,  1: 切换到P2.4 P2.5 P2.6 P2.7, 2: 切换到P4.0 P4.1 P4.2 P4.3,  3: 切换到P3.5 P3.4 P3.3 P3.2,

        LCD_RES = 0;
        delay_ms(50);
        LCD_RES = 1;
        delay_ms(50);
    LCD_BLK=1;
    delay_ms(100);
        //************* Start Initial Sequence **********//
        LCD_WR_REG(0x11);         //Sleep out 退出睡眠
        delay_ms(120);                //Delay 120ms
        //************* Start Initial Sequence **********//
    LCD_WR_REG(0x36);   
    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);

        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);

        LCD_WR_REG(0xBB);                       
        LCD_WR_DATA8(0x32); //Vcom=1.35V
                                       
        LCD_WR_REG(0xC2);
        LCD_WR_DATA8(0x01);

        LCD_WR_REG(0xC3);                       
        LCD_WR_DATA8(0x15); //GVDD=4.8V  颜色深度
                               
        LCD_WR_REG(0xC4);                       
        LCD_WR_DATA8(0x20); //VDV, 0x20:0v

        LCD_WR_REG(0xC6);                       
        LCD_WR_DATA8(0x0F); //0x0F:60Hz               

        LCD_WR_REG(0xD0);                       
        LCD_WR_DATA8(0xA4);
        LCD_WR_DATA8(0xA1);

        LCD_WR_REG(0xE0);
        LCD_WR_DATA8(0xD0);   
        LCD_WR_DATA8(0x08);   
        LCD_WR_DATA8(0x0E);   
        LCD_WR_DATA8(0x09);   
        LCD_WR_DATA8(0x09);   
        LCD_WR_DATA8(0x05);   
        LCD_WR_DATA8(0x31);   
        LCD_WR_DATA8(0x33);   
        LCD_WR_DATA8(0x48);   
        LCD_WR_DATA8(0x17);   
        LCD_WR_DATA8(0x14);   
        LCD_WR_DATA8(0x15);   
        LCD_WR_DATA8(0x31);   
        LCD_WR_DATA8(0x34);   

        LCD_WR_REG(0xE1);     
        LCD_WR_DATA8(0xD0);   
        LCD_WR_DATA8(0x08);   
        LCD_WR_DATA8(0x0E);   
        LCD_WR_DATA8(0x09);   
        LCD_WR_DATA8(0x09);   
        LCD_WR_DATA8(0x15);   
        LCD_WR_DATA8(0x31);   
        LCD_WR_DATA8(0x33);   
        LCD_WR_DATA8(0x48);   
        LCD_WR_DATA8(0x17);   
        LCD_WR_DATA8(0x14);   
        LCD_WR_DATA8(0x15);   
        LCD_WR_DATA8(0x31);   
        LCD_WR_DATA8(0x34);
        LCD_WR_REG(0x21);

        LCD_WR_REG(0x29);

}

VID_20260601_111108.mp4

25.14 MB, 下载次数: 6

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2026-06-02 12:58:27

853

主题

1万

回帖

2万

积分

管理员

积分
23404
发表于 昨天 13:10 | 显示全部楼层
可让 STC32G144K246的 I/O的速度工作在 45MHz 以上,用 DMA-P2P刷屏

截图202606021310385751.jpg

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:554
  • 最近打卡:2026-06-02 08:57:33
已绑定手机

108

主题

4470

回帖

1万

积分

荣誉版主

无情的代码机器

积分
10094
发表于 昨天 13:28 | 显示全部楼层

参考此贴效果:提升pll倍频 & 提升spi速度
https://www.stcaimcu.com/forum.p ... 0285&pid=188012


截图202606021328172916.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:34
  • 最近打卡:2026-06-02 18:19:08

4

主题

226

回帖

1332

积分

金牌会员

积分
1332
发表于 昨天 18:19 | 显示全部楼层
看这速度,STM32F103VET6是不是使用DMA刷的
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-6-3 03:09 , Processed in 0.110300 second(s), 67 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表