OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1584|回复: 5

stm32 spi2 屏幕刷新慢的问题

[复制链接]

154

主题

263

帖子

0

精华

高级会员

Rank: 4

积分
898
金钱
898
注册时间
2012-6-29
在线时间
37 小时
发表于 2023-11-14 15:24:30 | 显示全部楼层 |阅读模式
1金钱
使用mimi板做个一个spi屏幕驱动, 发现一个问题,我把mini板上得8M晶振去掉后发现屏幕刷新很慢, 求大佬指点:附上部分源码
spi使用的是spi2
void SPI2_Init(void)       
{
        SPI_InitTypeDef  SPI_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
         
        //配置SPI2管脚
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOB, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_14;   
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
        GPIO_Init(GPIOB, &GPIO_InitStructure);  
       
        //SPI2配置选项
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2 ,ENABLE);
          
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
        SPI_InitStructure.SPI_CRCPolynomial = 7;
        SPI_Init(SPI2, &SPI_InitStructure);

        //使能SPI2
        SPI_Cmd(SPI2, ENABLE);   
}

void LCD_Init(void)
{  
        SPI2_Init(); //硬件SPI2初始化
        LCD_GPIOInit();//LCD GPIO初始化                                                                                 
        LCD_RESET(); //LCD 复位
//************* ILI9488初始化**********//       
.......
}

int main(void)
{       
        SystemInit();//初始化RCC 设置系统主频为72MHZ
        delay_init(72);             //延时初始化
        LCD_Init();           //液晶屏初始化
  //循环测试
                DrawTestPage("test");       
        Gui_StrCenter(0,30,RED,BLUE,"test1",16,1);//居中显示
        while(1)
        {
                main_test();                 //测试主界面

        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8462
金钱
8462
注册时间
2020-5-11
在线时间
3904 小时
发表于 2023-11-14 15:30:27 | 显示全部楼层
那你测下当前主频多少
专治疑难杂症
回复

使用道具 举报

11

主题

2130

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4724
金钱
4724
注册时间
2015-1-10
在线时间
590 小时
发表于 2023-11-14 16:35:22 | 显示全部楼层
如果只是去掉外部晶振不改驱动的话MCU会自动切换为HSI,主频会变为8MHz
回复

使用道具 举报

13

主题

171

帖子

0

精华

高级会员

Rank: 4

积分
809
金钱
809
注册时间
2018-12-19
在线时间
166 小时
发表于 2023-11-15 08:50:08 | 显示全部楼层
用DMA,速度会提升很多
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2023-11-19 11:24:12 | 显示全部楼层
底层用寄存器 + dma
回复

使用道具 举报

154

主题

263

帖子

0

精华

高级会员

Rank: 4

积分
898
金钱
898
注册时间
2012-6-29
在线时间
37 小时
 楼主| 发表于 2023-12-14 10:55:44 | 显示全部楼层
阿侑kevin 发表于 2023-11-14 16:35
如果只是去掉外部晶振不改驱动的话MCU会自动切换为HSI,主频会变为8MHz

指点一下 谢谢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 09:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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