1.69寸SPI接口240*280TFT液晶显示模块使用硬件SPI,并提高全屏刷新率的方法探讨

1.69寸SPI接口240*280TFT液晶显示模块,卖家提供了GPIO模拟SPI功能,我移植到了freertos,并点亮了屏幕,接下来是进行硬件SPI的程序修改:
上次还讲到了关于CS管脚的选通信号,再GPIO口的初始化的时候设置为高电平,在液晶显示模块初始化的时候拉低电平,使改显示模块被有效选通:

void LCD_Init(void)
{
	//LCD_GPIO_Init();//初始化GPIO
	//尤其是CS管脚,开始的电平必须是高电平,下拉产生选通信号,要特别注意。
	
	LCD_RES_Clr();		//复位 感觉不是很重要
	HAL_Delay(100);
	LCD_RES_Set();
	HAL_Delay(100);
	
	LCD_BLK_Set();		//打开背光
	HAL_Delay(100);

	LCD_CS_Clr();		//============CS只要放一次就可以=====后面的程序不用处理CS管脚======
	
	//************* Start Initial Sequence **********//
	LCD_WR_REG(0x11); //Sleep out
	HAL_Delay(100);
	//************* 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);
} 

经过测试,的确CS只要在开机的时候是高电平,液晶模块初始化的时候拉一次低电平选通模组一次就够了,后续不用再次变化CS管脚。

stm32CUBEIDE硬件配置的时候打开spi功能
在这里插入图片描述

液晶显示模块只接收数据,不需要向主机发送数据,所以只要单方向传输就可以。
在这里插入图片描述
配置DMA传输,提高传输效率。

void LCD_Writ_Bus(uint8_t dat)
{	
	uint8_t i;
	//LCD_CS_Clr();		//只要初始化拉一次就可以
	//HAL_SPI_Transmit_DMA(&hspi1, &dat, 1);
	HAL_SPI_Transmit(&hspi1, &dat, 1, 0x0F);		
//	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();
}

修改传输数据的方式由模拟SPI到硬件SPI功能,使用DMA和不使用DMA都可以。
在这里插入图片描述
使用硬件SPI后本来想得很好可以大大提高刷新率,但实际并不是十分理想,从波形图可以看出,每次传输一个字节虽然通过时钟可以看出时间很短,但整个指令占用的时间可不小,需要.8.3uS,通过计算3202402*8.3来算最少还是需要1.3秒才能刷整个屏幕。

新的思路测试:
如果使用缓冲区的方法,通过计算3202402=153.6K字节,对于只有64kRAM的CPU显然是不合适的,想用一行作为一个缓冲区的做法来测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/301708.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

年度盘点 | 信捷科技2023年的精彩瞬间

岁序更替&#xff0c;华章日新 与你同行的每一天&#xff0c;我们写下了无数回忆 我们一起穿越城市&#xff0c;畅享便捷 看到了“村超”的精彩 聆听了路边音乐节的热闹 见证了贵阳步入轨道交通“线网时代” …… 我们一起携手并进 让每一次出行都成为双向奔赴的可能 …

抖音矩阵系统源码开发

抖音作为一款流行的短视频分享平台&#xff0c;每天吸引着数以亿计的用户&#xff0c;在全球范围内广受欢迎。为了支持如此庞大的用户群体&#xff0c;抖音必须依靠强大的矩阵系统来支撑其稳定的运行。下面将介绍抖音矩阵系统的源码开发。 抖音矩阵系统源码开发主要有以下几个…

振弦采集仪在桥梁结构监测中的应用研究

振弦采集仪在桥梁结构监测中的应用研究 振弦采集仪在桥梁结构监测中的应用研究是指利用振弦采集仪对桥梁结构进行监测和数据采集的研究。振弦采集仪是一种能够实时监测桥梁结构振动情况的设备&#xff0c;通过采集桥梁上的振弦传感器获取振动数据&#xff0c;并将数据传输到监…

vue3+vite +element plus日历date picker中文显示

项目情况 element-plus 默认是英文模式&#xff0c;需要中文模式的话需要设置一下&#xff1a; 项目框架&#xff08;vue3&#xff09;&#xff1a;vite JS element-plus 版本&#xff1a;&#xff08;注意版本兼容&#xff0c;element plus 较低版本&#xff1a;1.xx.xx&a…

4.vue学习(21-25)

文章目录 21.天气案例-监视属性引入22.监视属性23.深度监视24 监视的简写25 监视属性对比计算属性 21.天气案例-监视属性引入 效果&#xff1a;点击按钮&#xff0c;切换凉爽为炎热 vscode 开发vue的插件;vue 3 snippets 初步实现方式。计算属性&#xff1a; 案例中的坑&#…

山西电力市场日前价格预测【2024-01-09】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-01-09&#xff09;山西电力市场全天平均日前电价为314.92元/MWh。其中&#xff0c;最高日前电价为593.66元/MWh&#xff0c;预计出现在18:15。最低日前电价为54.95元/MWh&#xff0c;预计出…

SurfaceFlinger的commit/handleTransaction分析

整体背景介绍 hi&#xff0c;粉丝朋友们&#xff1a; 大家好&#xff01;本节我们来讲解一下SurfaceFlinger主要合成工作的第一个阶段任务commit 一般SurfaceFlinger端的合成工作主要有两个 1.commit 主要就是处理app端发起的一系列transaction的事务请求&#xff0c;需要对这…

uniapp 微信小程序跳转外部链接

一、背景&#xff1a; 开发小程序时&#xff0c;跳转到内部路径通常会使用&#xff1a;uni.navigateTo&#xff0c;uni.redirectTo&#xff0c;uni.reLaunch&#xff0c;uni.switchTab等方法&#xff0c;可以跳转到pages.json中已经注册的页面 uni.navigateTo(OBJECT) | uni-…

计算机毕业设计-----SSM CRM人事管理系统

项目介绍 CRM人事管理系统&#xff0c;主要功能有&#xff1a; 用户管理&#xff1a;用户查询、添加用户、编辑、删除&#xff1b; 职位管理&#xff1a;职位查询、添加职位、删除&#xff1b; 部门管理&#xff1a;部门查询、添加部门、删除&#xff1b; 员工管理&#xff1…

王者荣耀与元梦之星联名小乔皮肤即将下架!

即将下架&#xff01;几款皮肤你还不知道的&#xff0c;推荐一起看看&#xff01; 元梦之星即将下架皮肤&#xff1b;小乔、宝拉、小爱、大魔术师尼克。 小乔截止日期&#xff1a;2024年1.5日23.59正式下架 灵魂歌姬宝拉截止日期&#xff1a;2024年1.11日23.59正式下架 小爱…

Mysql死锁问题Deadlock found when trying to get lock;try restarting transaction

一、问题描述 今天测试在测试环境做压测&#xff0c;发现了一个报错&#xff0c;来找我帮忙看&#xff0c;如下图&#xff1a; 二、问题排查 先去服务器上&#xff0c;看看死锁的日志&#xff0c;找到 mysql 的安装路径&#xff0c;使用如下命令登录 mysql mysql -h 数据库IP…

计算机毕业设计-----ssm知识库管理系统

项目介绍 文件集中上传&#xff1a;系统支持单文件上传以及批量上传&#xff0c;系统支持zip、rar格式的压缩包导入。亮点创新 多格式文件在线预览 用户可以对所有公共文件进行浏览&#xff0c;支持office&#xff0c;pdf格式以及常见图片格式&#xff0c;音频格式&#xff0c…

BOM,JS执行机制等

1.BOM 概述 1.1什么是 BOM BOM( Browser Object Model &#xff09;即浏览器对象模型&#xff0c;它提供了独立于内容而与浏览器窗口进行交互的对象&#xff0c;其核心对象是window. BOM由一系列相关的对象构成&#xff0c;并且每个对象都提供了很多方法与属性。 BOM缺乏标…

基于ssm的孩童收养信息管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本孩童收养信息管理就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

二叉树的深度和高度问题(算法村第八关白银挑战)

二叉树的最大深度 104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null…

揭开JavaScript数据类型的神秘面纱

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 JavaScript作为一门动态类型语言,其数据类型一直是开发者们关注的话题。本文将深入探讨Jav…

创建K8s节点的虚拟机

1、点击“创建新的虚拟机” 2、选择自定义&#xff0c;点击“下一步” 3、默认&#xff0c;点击“下一步” 4、默认&#xff0c;点击“下一步” 5、默认&#xff0c;点击“下一步” 6、设置虚拟机名称和位置&#xff0c;点击“下一步” 7、点击“下一步” 8、设置2048MB&#x…

x-cmd pkg | gitui - git 终端交互式命令行工具

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 gitui 由 Stephan D 于 2020 年使用 Rust 语言构建的 git 终端交互式命令行工具&#xff0c;旨在终端界面中便捷管理 git 存储库。 首次用户 使用 x gitui 即可自动下载并使用 在终端运行 eval "$(curl https:/…

C语言动态内存管理

我们目前知道的开辟内存空间的方法有&#xff1a; 1.创建变量 2.创建数组&#xff1b; 但是这2种方法开辟的空间大小都是固定的&#xff0c;如果是数组的话确认了大小之后是无法改变的&#xff1b; int a10;//在栈区空间上开辟4个字节的空间&#xff1b;int arr[10];//在栈…