当前位置: 首页 > news >正文

51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动大屏_硬件SPI4_参考代码(v1.3)

单片机实际不限,这里采用的STC最新、主推的型号,比如STC8H8K64USTC8051U34K64进行实验测试,您可以换用不同型号。目前测试这两个系列,显示速度均相当不错,软件设计也是极为简单。各篇文章下方均提供源码供参考下载。

RA8889是一款瑞佑科技推出的高性能液晶控制芯片,单片机下指令即可,可以驱动最高1366x768等液晶屏,其内建JEPG解码引擎,图形驱动引擎,因此显示速度相当不错,是单片机扩展彩屏UI的好搭档。也有低阶的型号比如RA8871M,RA8873M等,可根据实际需求选择。RA8889功能方框图:
在这里插入图片描述

【硬件部份】STC8H8K64U/STC8051U34K64 + RA8889开发板 + 7寸TFT 800x480

一、STC这两款单片机均提供多组硬件SPI接口,本范例采用P2口的硬件SPI接口如下红框:

(1)主控MCU: STC8H8K64U
在这里插入图片描述
实物连接图,请看接线标识
在这里插入图片描述

(2)主控MCU: STC8051U34K64
在这里插入图片描述

实物连接图,请看接线标识
在这里插入图片描述

二、单片机与RA8889的引脚接线图:

注意MCU的输入SDI(即MISO)必须接RA8889的输出DB[5] SDO;MCU的输出SDO(MOSI)必须接RA8889的输入DB[6] SDI。
在这里插入图片描述

三、实物展示(STC8H8K64U):

在这里插入图片描述

【软件部份】

一、IO口配置:
(1)STC8H8K64U使用P2.4 MISO作为输入:

P2M0 = 0xef; P2M1 = 0x00;         //P2.4(MISO)设置为双向口,其它为推挽模式(使用P2.SPI)

(2)STC8051U34K64使用P2.6 MISO作为输入:

P2M0 = 0xbf; P2M1 = 0x00;                //P2.6(MISO)设置为双向口,其它为推挽模式(使用P2.SPI)

二、SPI通信函数在RA8889_MCU_IF.c和头文件RA8889_MCU_IF.h这两份文件,这里进行重点说明:
(1)在初始化函数SPI4_Init()中,SPI时钟频率的选择,先选择低速16T,待通信成功之后可将速度调快:

SPCTL = (SPCTL & ~3) | 2;   //SPI 时钟频率选择, 0: 4T, 1: 8T,  2: 16T,  3: 2T  (时钟频率先调整到最慢,再依照自己的系统调整)

(2)SPI接口选择,设定P_SW1,根据硬件接线选择对应的通信组:

P_SW1 = (P_SW1 & ~(3<<2)) | (1<<2);     //IO口选择P2. 0:P1.2/P5.4 P1.3 P1.4 P1.5  ||  1:P2.2 P2.3 P2.4 P2.5  ||  2:P5.4 P4.0 P4.1 P4.3  ||  3:P3.5 P3.4 P3.3 P3.2

其它部份与软件模拟SPI相同,请参考本人相关文章。

【硬件SPI和IO口软件模拟SPI通信比较】

初步测试信息提供参考:
  1. 接口配置二者相同;
  2. 时钟速度上,硬件SPI会比软件模拟SPI速度要快不少,但软件模拟对于不同MCU比较友好,容易调试;
  3. 该代码在面包上跳接线,单片机和RA8889通信时钟最快可达11MHz左右,频率越快越容易受干扰,RA8889的SPI最高可以接受到50MHz,因此要根据实际硬件环境进行调试;
  4. RA8889控制TFT彩屏,只要简单的指令即可对UI进行变化,在没有大量数据传输的情况下使用硬件SPI和软件模拟SPI的速度差别不大。

【源码下载】

请使用PC端浏览标题下方,找到下载资源。
或者请至原文下载:
https://bbs.lcdvision.com.cn/forum.php?mod=viewthread&tid=59

http://www.lryc.cn/news/400843.html

相关文章:

  • 实习随笔【前端技术实现全局添加水印】
  • 【软件测试】编写测试用例篇
  • 转型AI产品经理需要掌握的硬知识(二):AI常见概念和算法梳理
  • mysql-connector-java 8.0.33 反序列化漏洞
  • 基于Faster R-CNN的安全帽目标检测
  • linux中vim切换输入中文
  • 嵌入式C++、Qt/QML和MQTT:智能工厂设备监控系统的全流程介绍(附代码示例)
  • 监控易V7.6.6.15升级详解8:机房动环管理功能
  • C++ | Leetcode C++题解之第232题用栈实现队列
  • Git-Updates were rejected 解决
  • Java常用的API_02(正则表达式、爬虫)
  • 2024最新图纸加密软件Top5排行榜
  • 每日一练 - IEEE 802.1Q中STP协议
  • 设计模式--工厂设计模式
  • 消息队列-MQ
  • 近源渗透简介
  • 13 IP层协议-网际控制报文协议ICMP
  • 第一节Linux常见指令
  • 嵌入式全栈设计思路:STM32G4+ChibiOS+FreeRTOS+PID控制+PFC算法构建高效智能电源管理系统(附代码示例)
  • Linux驱动开发-04LED灯驱动实验(直接操作寄存器)
  • Linux命令更新-sort 和 uniq 命令
  • 【密码学】密码学数学基础:剩余系
  • 量化发展历史简述,QMT/PTrade+恒生UFT、LDP极速柜台适用哪些情形?
  • linux服务器anaconda安装及环境变量配置
  • 如何在 Objective-C 中实现多态性,并且它与其他面向对象编程语言的多态性实现有何差异?
  • 阿里云OSS简单应用
  • cleanshot Mac 上的截图工具
  • JMeter进行HTTP接口测试的技术要点
  • 基于智能算法的品牌视觉识别系统优化研究
  • 递归锁与普通锁的区别