找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 708|回复: 4
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
本帖最后由 harchy 于 2024-7-22 15:26 编辑

本篇介绍单片机使用硬件SPI-4方式控制RA8889驱动彩屏。
提供STC8H8K64U和STC8051U34K64的参考代码。

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

单片机实际不限,这里采用的STC最新、主推的型号,比如STC8H8K64U、STC8051U34K64进行实验测试,您可以换用不同型号。目前测试这两个系列,显示速度均相当不错,软件设计也是极为简单。各篇文章下方均提供源码供参考下载。
RA8889是一款瑞佑科技推出的高性能液晶控制芯片,单片机下指令即可,可以驱动最高1366x768等液晶屏,其内建JEPG解码引擎,图形驱动引擎,因此显示速度相当不错,是单片机扩展彩屏UI的好搭档。也有低阶的型号比如RA8871M,RA8873M等,可根据实际需求选择。RA8889功能方框图:



1. 实物连接图:STC8H8K64U+RA8889开发板,使用P2口SPI接口:



2.实物连接图:STC8051U34K64+RA8889开发板,使用P2口SPI接口:



3.RA8889的SPI-4电路连接图:



4.RA8889开发板的接口说明,SPI接口主要使用到DB4(CS),DB5(SDO),DB6(SDI)和DB7(SCK):



5.单片机的引脚图:STC8H8K64U:



6.单片机的引脚图:STC8051U34K64:



7. STC8H8K64U与RA8889开发板详细连接说明:



8. STC8051U34K64与RA8889开发板详细连接说明:





【软件部份】

9. STC8H8K64U与RA8889的连接:
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡STC8H8K64U硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
[P2.1] GPIO                ----> RA8889的复位        RA8889_RST
[P2.2] SPI_SS        ----> RA8889的片选        DB[4] (XnSCS)
[P2.3] SPI_MOSI        ----> RA8889的SDI         DB[6] (XSSDI)
[P2.4] SPI_MISO        <---- RA8889的SDO         DB[5] (XSSDO)
[P2.5] SPI_SCK        ----> RA8889的SCK         DB[7] (XSSCL)
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
在RA8889_MCU_IF.h文件中进行配置定义:
  1. /* P2.SPI-4(硬件) IO口配置*/
  2. sbit RA8889_RST        = P2 ^ 1;                // Reset RA8889                                (通过IO口接到RA8889/RA8876进行硬件复位)
  3. sbit SPI_SS           = P2 ^ 2;                // Slave Select                                (RA8889片选)
  4. sbit SPI_MISO                = P2 ^ 3;                // Master In Slave Out(接RA8889的SDO)
  5. sbit SPI_MOSI                = P2 ^ 4;                // Master Out Slave In(接RA8889的SDI)
  6. sbit SPI_SCK                = P2 ^ 5;                // Serial Clock
复制代码


10. STC8051U34K64与RA8889的连接:
≡≡≡≡≡≡≡≡≡≡≡≡≡≡STC8051U34K64硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡
[P2.3] GPIO                ----> RA8889的复位        RA8889_RST
[P2.4] SPI_SS        ----> RA8889的片选        DB[4] (XnSCS)
[P2.5] SPI_MOSI        ----> RA8889的SDI         DB[6] (XSSDI)
[P2.6] SPI_MISO        <---- RA8889的SDO         DB[5] (XSSDO)
[P2.7] SPI_SCK        ----> RA8889的SCK         DB[7] (XSSCL)
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
在RA8889_MCU_IF.h文件中进行配置定义:
  1. /* P2.SPI-4(硬件) IO口配置*/
  2. sbit RA8889_RST        = P2 ^ 3; // Reset RA8889                                        (通过IO口接到RA8889/RA8876进行硬件复位)
  3. sbit SPI_SS                        = P2 ^ 4; // Slave Select                                        (RA8889片选)
  4. sbit SPI_MOSI         = P2 ^ 5; // Master Out Slave In        (接RA8889的SDI)
  5. sbit SPI_MISO         = P2 ^ 6; // Master In Slave Out        (接RA8889的SDO)
  6. sbit SPI_SCK          = P2 ^ 7; // Serial Clock
复制代码


11. STC8H8K64U配置IO口:
在main.c中配置SPI-4的IO口:
  1. P2M0 = 0xef; P2M1 = 0x00;         //P2.4(MISO)设置为双向口,其它为推挽模式(使用P2.SPI)
复制代码


12. STC8051U34K64配置IO口:
在main.c中配置SPI-4的IO口:
  1. P2M0 = 0xbf; P2M1 = 0x00;                //P2.6(MISO)设置为双向口,其它为推挽模式(使用P2.SPI)
复制代码


13. STC8H8K64U的SPI初始化:
在RA8889_MCU_IF.c文件中设定SPI初始化:
  1. * SPI-4 初始化 */
  2. void SPI4_Init()
  3. {
  4.     SPCTL |=  (1 << 7); //忽略 SS 引脚功能,使用 MSTR 确定器件是主机还是从机
  5.     SPCTL |=  (1 << 6); //使能 SPI 功能
  6.     SPCTL &= ~(1 << 5); //先发送/接收数据的高位( MSB)
  7.     SPCTL |=  (1 << 4); //设置主机模式
  8.     SPCTL |=  (1 << 3); //SCLK 空闲时为高电平,SCLK 的前时钟沿为下降沿,后时钟沿为上升沿
  9.     SPCTL |=  (1 << 2); //数据在 SCLK 的前时钟沿驱动,后时钟沿采样
  10.     SPCTL = (SPCTL & ~3) | 2;   //SPI 时钟频率选择, 0: 4T, 1: 8T,  2: 16T,  3: 2T  (时钟频率先调整到最慢,再依照自己的系统调整)

  11.     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

  12.     SPSTAT = SPIF + WCOL;   //清0 SPIF和WCOL标志        
  13. }
复制代码


14. STC8051U34K64的SPI初始化:
在RA8889_MCU_IF.c文件中设定SPI初始化:
  1. /* SPI-4 初始化 */
  2. void SPI4_Init()
  3. {
  4.     SPCTL |=  (1 << 7); //忽略 SS 引脚功能,使用 MSTR 确定器件是主机还是从机
  5.     SPCTL |=  (1 << 6); //使能 SPI 功能
  6.     SPCTL &= ~(1 << 5); //先发送/接收数据的高位( MSB)
  7.     SPCTL |=  (1 << 4); //设置主机模式
  8.     SPCTL |=  (1 << 3); //SCLK 空闲时为高电平,SCLK 的前时钟沿为下降沿,后时钟沿为上升沿
  9.     SPCTL |=  (1 << 2); //数据在 SCLK 的前时钟沿驱动,后时钟沿采样
  10.     SPCTL = (SPCTL & ~3) | 2;   //SPI 时钟频率选择, 0: 4T, 1: 8T,  2: 16T,  3: 2T  (时钟频率先调整到最慢,再依照自己的系统调整)

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

  12.     SPSTAT = SPIF + WCOL;   //清0 SPIF和WCOL标志        
  13. }
复制代码

***两种MCU的SPI硬件接口定义不同,初始化有细微差异,初始化代码大同小异,具体请查阅规格书。


15. RA8889开发板的补充说明:
(1)PS[2:0]跳线,SPI-4通信方式请配置为101:



(2)要将RA8889_Demo文件夹内的RA8889_Demo_F103_8080_SPI_floating_firmware.hex下载到开发板上,将开发板上的MCU与RA8889的连接引脚设定为floating模式,才可以通过外部MCU输入控制RA8889。


【源码下载:硬件SPI-4通信方式】
STC8H_RA8889_SPI4_HW_v1.3.7z (14.86 MB, 下载次数: 11)
STC8051U_RA8889_SPI4_HW_v1.3.zip (16.36 MB, 下载次数: 13)



关注我,带你玩转TFT彩屏!帮您轻松搞定UI界面的设计!

评分

参与人数 1黑币 +15 收起 理由
jacky1124 + 15 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1042173 发表于 2024-7-23 07:12 | 只看该作者
刷新率如何?快不?
回复

使用道具 举报

板凳
ID:65967 发表于 2024-8-5 09:50 | 只看该作者
QQQQ987 发表于 2024-7-23 07:12
刷新率如何?快不?

那是相当滴快!使用103主频72MHz测试,800x480的图片约100张/秒。速度取决于单片机
回复

使用道具 举报

地板
ID:462629 发表于 2024-8-27 10:00 | 只看该作者
STC 有103?
回复

使用道具 举报

5#
ID:433219 发表于 2024-8-28 11:33 | 只看该作者
RA8889  光芯片就要70¥多,,7寸TFT大概要50~70¥ 加pcb什么的,此方案合计成本估计150¥左右
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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