首页 > 其他分享 >SPI驱动0.96寸OLED单色屏刷新率测试以及代码优化改进,方法适用于SPI驱动其他设备

SPI驱动0.96寸OLED单色屏刷新率测试以及代码优化改进,方法适用于SPI驱动其他设备

时间:2023-08-18 15:55:30浏览次数:31  
标签:DMA IIC OLED SPI 代码优化 FPS 驱动 刷新率

目前嵌入式当中OLED常用驱屏方式有两种:SPI或IIC。以速度来讲,SPI速度相较于IIC会快上一些,硬件IIC相较于模拟IIC速度又会快上一些。此外还有模拟SPI的,但该种用法我遇到较少,本文就硬件SPI驱动OLED屏幕做一个简单的刷新率测试。

 

测试硬件平台:
CH32V307VCT6+杜邦线连接0.96寸SPI接口OLED屏
CH32V307VCT6介绍如下:
最高144MHz系统主频,64KB SRAM,256KB Flash,其中FLASH、RAM大小可配,SPI最高时钟频率支持到Fpclk的一半,即72MHz。
0.96寸OLED屏介绍如下:
采用OLED技术,支持SPI和IIC驱动显示数据,像素是128*64,单色屏。

 

测试方法:
每次刷新10张图片,计算刷新100次的时间。其中刷新100次采用for循环的方式,计数采用定时器计数中断的方式,每1ms进一次中断,记录进入中断的次数。100次,每次10张,即1000张,1000张除以用时,即可获得每秒刷新的图片张数,可简单认为为FPS值。
注:关于图片的刷新,每次都是先清屏,然后加载图片数据,最后再刷新,具体程序如下:

 

测试结果以及程序优化过程:

直接使用SPI:

(1)采用硬件SPI+库操作的方式:FPS值为228;

(2)若将程序中SPI读写操作直接改为寄存器操作,如下程序,刷新率可进一步提升,FPS值为256。若全部改为寄存器操作,应该还会有进一步提升。

进一步将引脚拉高拉低改为寄存器操作,FPS提高为280;

(3)若将代码进一步优化,省去不必要的步骤,比如在更新显存到OLED的函数中,因为都是写数据,可以不调用OLED_WR_Byte函数,直接配置,如下图:

可进一步将FPS提高到321.

(4)若按照下图再进一步优化,则可将刷新率再一次提高

可进一步将刷新率提高到343;

(5)若按照下图方法再优化一下,刷新率还能再次提高:

刷新率被提高到了397,将近400,这提升还是比较明显的。其中,读完数据寄存器之后再读状态寄存器是为了清除溢出标志位。

使用SPI+DMA:

采用硬件SPI+DMA的方式,测的FPS的值为379,测试代码如下,DMA的使用主要是在更新显存函数中使用。

这结果让我很是诧异,使用DMA传输速度竟然比不上不使用DMA优化后的速度。考虑到会受for循环中数据复制搬运的影响,又做了一下处理,先复制两个字节到DMA缓冲区,然后启动DMA,然后复制剩下的 ,代码如下

修改过后,刷新率FPS达到了394.

以上就是我整个的一个测试结果和我对代码优化的一个流程,可能看结果使用DMA和不使用DMA刷新率差不读,但其实可能受限于个人代码水平的影响,DMA应该还有提升的空间。此外,DMA的好处远不止于此,他不需要依赖CPU做大量处理,在复杂应用中优势的体现会更加明显。

 

 

标签:DMA,IIC,OLED,SPI,代码优化,FPS,驱动,刷新率
From: https://www.cnblogs.com/liaigu/p/17640727.html

相关文章

  • 华秋硬创联合安创加速器,加速和创新赋能技术驱动型创业者
      01大赛介绍中国硬件创新创客大赛始于2015年,由深圳华秋电子有限公司主办,至今已经成功举办八届,赛事范围覆盖华南、华东、华北三大地区,超10个省市区域。大赛影响了超过45万工程师群体,吸引了35000多名硬创先锋报名参加线上线下培训会,并成功聚集了400多家生态合作伙伴,与500多......
  • 卷轴模式开发卷轴任务驱动逻辑案例分析
    卷轴模式从趣步模式开始到现在,不断有新的项目出来,如果说2023年商业模式项目做个排行,我想有一半的项目是卷轴模式的项目,它的特点也很明显,互联网生意讲究免费,羊毛出在猪身上狗来买单的逻辑.免费,让所有人都能参与进来玩,免费,让系统本身具备分销裂变的属性,可以快速地积累用户数据资源。......
  • 恒温碗语音芯片,具备数码管驱动与温度传感算法,NV040C-S8
    近年来,随着科技的飞速发展,智能家居产品已然成为了现代生活的一部分,为人们的生活带来了更多的便利和舒适。在这个不断演进的领域中,恒温碗多功能语音芯片——NV040C-S8成为众多厂商的首选,为智能家居领域注入了全新的交互能力与智能化体验。一芯多能,资源丰富恒温碗多功能语音芯片NV040......
  • 11.2 设备树下的 LED 驱动实验
    一、修改设备树文件  首先进入该目录下/linux/atk-mpl/linux/my_linux/linux-5.4.31/arch/arm/boot/dts打开 stm32mp157d-atk.dts文件,在根节点"/"最后输入以下内容:stm32mp1_led{compatible="atkstm32mp1-led";//设置stm32mp1_led节点兼容为“atkstm......
  • [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
    1.今天开发了一套服务程序,使用的是Odbc连接momhistory.在我本机用VS打开程序时,访问一切正常,当发布出来装在电脑上,连接momhistory时提示:[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序 2.检查ODBC数据源配置时感觉也没啥问题。3.发现“要用......
  • java Sping aop 以及Spring aop 的应用事务管理
    1.回顾线程死锁概念和如何避免死锁的发生:线程的通信waitnotify()notify():---Object类线程的状态:NEW--->start()--->就绪状态---CPU时间片---运行状态RUNNABLE]--->sleep()--->TIMED_WAITING--->wait()---->WAITING----sysn---Blocked---->终止状态[T]线程池:常见......
  • 通用与垂直大模型之战:大模型驱动的商业智能变革之路
    科技云报道原创。是做通用大模型还是垂直大模型,这一个争论在“百模大战”的下讨论愈发热烈。目前,以微软、谷歌、百度、阿里等为代表的发力于通用大模型的科技大厂,也都开始推动大模型在垂直领域的商业化落地。比如说,微软和谷歌已将大模型技术融入操作系统、文档、搜索和邮件等产品中......
  • 【专题】双碳目标驱动的数字化新型电力系统报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33446报告合集根据实践创新,我们提出了“云上新型电力系统”,该系统将加速电力流、信息流和价值流的融通流动,通过更灵活高效的能源资源优化配置平台,支持大规模的新能源开发和利用。这一系统将为电力业务创新、电力行业发展以及全社会的绿色生产和生活......
  • Django博客开发教程:单页面实现与代码优化
    单页面的URL是:网站域名/about/,由于单页面里面的东西比较少,我们就只查询一下分类表获取所有文章分类即可。视图函数代码:blog/views.py# 关于我们def about(request):    allcategory = Category.objects.all()    return render(request, 'page.html',locals(......
  • 超越炒作:产品驱动销售实用指南
    这篇文章探讨从产品驱动增长到产品驱动销售的策略,超越了产品驱动增长的炒作。尽管产品驱动增长模式被认为是科技公司的灵丹妙药,但要取得成功,通常需要结合更传统的企业模式的要素。研究表明,只有少数采用产品驱动增长模式的公司能够取得卓越表现,而他们通过采用一种称为产品驱动销......