本篇介绍单片机使用硬件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硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
[P2.4]I2C_SDA <---> 接RA8889的SDA DB[6] (XSDA)
[P2.5]I2C_SCK ----> 接RA8889的SCL DB[7] (XSCL)
[P2.3]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硬件接线≡≡≡≡≡≡≡≡≡≡≡≡≡≡
[P2.3]I2C_SDA <---> 接RA8889的SDA DB[6] (XSDA)
[P2.4]I2C_SCK ----> 接RA8889的SCL DB[7] (XSCL)
[P2.2]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[5:0]=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[5:0]=32。 I2C总线速度:Fosc/2/(MSSPEED*2+4),在12MHz时当前通信速度约88KHz
- I2CPSCR = 0x00; //I2C时钟分频高位 MSSPEED[13:6]=0
- I2CMSST = 0x00; //I2C主机状态寄存器清0
- }
复制代码
***注意:二者对I2C接口定义不同,寄存器要求也略微不同,故初始化有轻微差异,实际使用时务必要注意!同时头文件也要注意引用。
15. RA8889开发板的补充说明:
(1)PS[2:0]跳线,I2C通信方式请配置为11x:
(2)要将RA8889_Demo文件夹内的RA8889_Demo_F103_8080_SPI_floating_firmware.hex下载到开发板上,通过开发板上的MCU将RA8889的MCU接口配置为I2C,同时将I2C的硬件地址配置为:111111。
【源码下载:硬件I2C通信方式】
STC8H_RA8889_I2C_HW_v1.3.7z
(12.08 MB, 下载次数: 112)
STC8051U_RA8889_I2C_HW_v1.3.7z
(14.57 MB, 下载次数: 101)
|