STM32系列单片机SPI速度研究(flash读取写入速度提高,液晶显示屏刷新率提高)

STM32系列单片机SPI速度研究(flash读取写入速度提高,液晶显示屏刷新率提高)

  • 前言
  • 设备参数
  • 测试内容
    • 1.软件模拟SPI
      • 1). 程序代码
      • 2). 示波器波形采集
    • 2.HAL库SPI函数
      • 1). 程序代码
      • 2). 示波器波形采集
    • 3.寄存器操作SPI
      • 1). 程序代码
      • 2). 示波器波形采集
  • 总结

前言

为了提高STM32单片机与外设在SPI总线上的速度,比如提高FLASH存储读取速度,或者外部液晶显示屏刷新率,特别对比了三种SPI方式的总线效率。

设备参数

项目 名称
单片机 STM32L151(32MHZ)
SPI外设 IPS彩屏240*135
示波器 是德科技DSOX2002A

测试内容

1.软件模拟SPI

1). 程序代码

void LCD_Writ_Bus(u8 dat) 
{	
	u8 i;
	LCD_CS_Clr();
	for(i=0;i<8;i++)
	{			  
		LCD_SCLK_Clr();
		if(dat&0x80)
		{
		   LCD_MOSI_Set();
		}
		else
		{
		   LCD_MOSI_Clr();
		}
		LCD_SCLK_Set();
		dat<<=1;
	}	
  LCD_CS_Set();	
}

2). 示波器波形采集

发送效率:17.4us/byte;

2.HAL库SPI函数

1). 程序代码

void LCD_Writ_Bus(u8 dat) 
{	
	LCD_CS_Clr();
    HAL_SPI_Transmit(&hspi1, &dat, 1, 1); 
    LCD_CS_Set();	
}

2). 示波器波形采集

发送效率:8.82us/byte;

3.寄存器操作SPI

1). 程序代码

void LCD_Writ_Bus(u8 dat) 
{	
	LCD_CS_Clr();
    SPI1->DR = dat;
    while((SPI1->SR&1<<1)==0);
    LCD_CS_Set();	
}

2). 示波器波形采集

发送效率:1.5us/byte;

总结

速率表格:

方式 传输效率(字节/秒) 比特率bps
软件模拟SPI 57.5K 0.56M
HAL库SPI函数 113.4K 16M
寄存器操作SPI 666.7K 16M

虽然在硬件SPI下,通讯波特率都达到了16M,每个字节发送过程只需要0.5us时间,但使用HAL库函数时,字节间的时间浪费特别严重。
为了使SPI通讯效率达到最高,最好选择操作寄存器方式。

你可能感兴趣的:(STM32系列单片机SPI速度研究(flash读取写入速度提高,液晶显示屏刷新率提高))