bwsu 发表于 2024-7-22 10:14:12

AI8051U_8H8K64U_RA8889驱动TFT彩屏_硬件I2C通信_参考代码(v1.3)

本篇介绍单片机使用硬件I2C方式控制RA8889驱动彩屏。
提供 8H8K64U 和 AI8051U 的参考代码。

文章导引:

(1)STC8H8K64U搭配RA8889如何控制TFT彩屏(附SPI4源码--软件模拟方式)
(2)51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动TFT彩屏_软件模拟I2C通信(源码v1.3)
(3)51单片机(STC8H8K64U/STC8051U34K64)_RA8889_8080参考代码(v1.3)
(4)51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动大屏_硬件SPI4_参考代码(v1.3)
(5)51单片机(STC8H8K64U/STC8051U34K64)_RA8889驱动TFT彩屏_硬件I2C通信_参考代码(v1.3)

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

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




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



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



3.RA8889的I2C电路连接图:



4.RA8889开发板的接口说明,I2C接口主要使用到DB6(SDA)和DB7(SCK):



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



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



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



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




【软件部份】

9. STC8H8K64U与RA8889的连接:
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡STC8H8K64U硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
I2C_SDA      <---> 接RA8889的SDA      DB (XSDA)
I2C_SCK      ----> 接RA8889的SCL      DB (XSCL)
GPIO                ----> RA8889的复位      RA8889_RST
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
在RA8889_MCU_IF.h文件中进行配置定义:
/* I2C IO口配置*/
sbit I2C_SDA= P2 ^ 4;         //I2C数据线(接入RA8889/RA8876之DB6)
sbit I2C_SCK= P2 ^ 5;         //I2C时钟(接入RA8889/RA8876之DB7)
sbit RA8889_RST= P2 ^ 3;         //RA8889/RA8876复位脚

10. STC8051U34K64与RA8889的连接:
≡≡≡≡≡≡≡≡≡≡≡≡≡≡STC8051U34K64硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡
I2C_SDA      <---> 接RA8889的SDA      DB (XSDA)
I2C_SCK      ----> 接RA8889的SCL      DB (XSCL)
GPIO                ----> RA8889的复位      RA8889_RST
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
在RA8889_MCU_IF.h文件中进行配置定义:
/* I2C IO口配置*/
sbit I2C_SDA= P2 ^ 3;         //I2C数据线(接入RA8889/RA8876之DB6)
sbit I2C_SCK= P2 ^ 4;         //I2C时钟(接入RA8889/RA8876之DB7)
sbit RA8889_RST= P2 ^ 2;         //RA8889/RA8876复位脚

11. STC8H8K64U配置IO口:
在main.c中配置I2C的IO口:
P2M0 = 0xff; P2M1 = 0x30;                //设置P2.4~2.5为开漏【注意:这两脚需要上拉电阻 1~10K】,其它为推挽模式

12. STC8051U34K64配置IO口:
在main.c中配置I2C的IO口:
P2M0 = 0xff; P2M1 = 0x18;                //设置P2.3~2.4为开漏【注意:这两脚需要上拉电阻 1~10K】,其它为推挽模式

13. STC8H8K64U的I2C初始化:
在RA8889_MCU_IF.c文件中设定I2C初始化:
/* I2C初始化 */
void I2C_Initial(void)
{
      P_SW2 |= 0x80;                                 //扩展寄存器(XFR)访问使能
      P_SW2 |= 0x10;                              //I2C选择P2.5/SCK,P2.4/SDA,      00:P1.5,P1.4; 01:P2.5,P2.4; 10:P7.7,P7.6; 11:P3.2,P3.3
      I2CCFG = 0xE0;                              //使能I2C + 主机模式 + MSSPEED=100000b=32,I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHz
      I2CMSST = 0x00;                              //I2C主机状态寄存器清0
}

14. STC8051U34K64的I2C初始化:
在RA8889_MCU_IF.c文件中设定I2C初始化:
/* I2C初始化 */
void I2C_Initial(void)
{
      P_SW2 |= 0x80;                                 //扩展寄存器(XFR)访问使能
      P_SW2 |= 0x00;                              //I2C选择P2.4/SCK,P2.3/SDA,      00:P2.4,P2.3; 01:P1.5,P1.4; 10:N.A.; 11:P3.2,P3.3
      I2CCFG = 0xE0;                              //使能I2C + 主机模式 + MSSPEED=32。 I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHz
      I2CPSCR = 0x00;                              //I2C时钟分频高位 MSSPEED=0
      I2CMSST = 0x00;                              //I2C主机状态寄存器清0
}
***注意:二者对I2C接口定义不同,寄存器要求也略微不同,故初始化有轻微差异,实际使用时务必要注意!同时头文件也要注意引用。


15. RA8889开发板的补充说明:
(1)PS跳线,I2C通信方式请配置为11x:


(2)要将RA8889_Demo文件夹内的RA8889_Demo_F103_8080_SPI_floating_firmware.hex下载到开发板上,通过开发板上的MCU将RA8889的MCU接口配置为I2C,同时将I2C的硬件地址配置为:111111。



【源码下载:硬件I2C通信方式】




是在下输了 发表于 2024-8-21 08:54:38

是不是有个地方代码写错了?

bwsu 发表于 2024-8-26 09:39:35

是在下输了 发表于 2024-8-21 08:54
是不是有个地方代码写错了?

哪里的,能贴上来看看吗?
代码都实际跑过验证没问题的。

是在下输了 发表于 2024-8-29 11:24:04

bwsu 发表于 2024-8-26 09:39
哪里的,能贴上来看看吗?
代码都实际跑过验证没问题的。

可能是我看错了吧,或许是注释的。
页: [1]
查看完整版本: AI8051U_8H8K64U_RA8889驱动TFT彩屏_硬件I2C通信_参考代码(v1.3)