硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3325|回复: 7
收起左侧

[emWin] RA8875配合7寸屏800x480的时钟设定经验

[复制链接]

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
发表于 2016-3-2 10:49:41 | 显示全部楼层 |阅读模式
本来的设定使用的半年都没有问题的,当开始使用EDIT控件的时候,发现进入编辑模式后,框框内的字符经常扭曲变形。RA8875的基本设定也是参考armfly。
经过尝试和分析之后,发现armfly的RA8875初始化是分屏幕不一样的,而我照抄了前面几行,那是给480x272屏的设定!
结论如下:
0x88这个寄存器需要写12,把系统时钟设定到81M。如果写10或者11,系统时钟对应68M或者75M都是不行的。
虽然看起来区别不大,而且貌似FMSC是根本用不上那么高的时钟的,但是必须设定到81M,才能不花屏!

评分

参与人数 1 +5 收起 理由
eric2013 + 5

查看全部评分

回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
 楼主| 发表于 2016-3-2 11:16:28 | 显示全部楼层
还有一点经验,理论上FSMC设定慢一点,应该更稳定。但是如果设定,反而不正常了,

timing.FSMC_AddressSetupTime = 1;  //这个设定0或者1都可以。
    timing.FSMC_AddressHoldTime = 0;
    timing.FSMC_DataSetupTime = 2;// 参照armfly的SRAM设定为3,EDIT控件出现花屏,设定为2,正常。
    timing.FSMC_BusTurnAroundDuration = 0;
    timing.FSMC_CLKDivision = 0;
    timing.FSMC_DataLatency = 0;
    timing.FSMC_AccessMode = FSMC_AccessMode_A;

这个设定只对控件edit的编辑模式,也就是说只是和读取像素的底层函数有关! 一般人看不出来。。。。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107352
QQ
发表于 2016-3-2 12:09:42 | 显示全部楼层
除了系统时钟外,还有一个像素时钟,这个也很重要,这个设置高了很容易花屏。

/* REG[04h] Pixel Clock Setting Register (PCSR)
            bit7  PCLK Inversion
                0 : PDAT 是在PCLK 正缘上升 (Rising Edge) 时被取样。
                1 : PDAT 是在PCLK 负缘下降 (Falling Edge) 时被取样。
            bit1:0 PCLK 频率周期设定
                Pixel Clock ,PCLK 频率周期设定。
                00b: PCLK 频率周期= 系统频率周期。
                01b: PCLK 频率周期= 2 倍的系统频率周期。
                10b: PCLK 频率周期= 4 倍的系统频率周期。
                11b: PCLK 频率周期= 8 倍的系统频率周期。
        */
        RA8875_WriteReg(0x04, 0x81);
回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
 楼主| 发表于 2016-3-2 17:16:57 | 显示全部楼层

回 eric2013 的帖子

eric2013:除了系统时钟外,还有一个像素时钟,这个也很重要,这个设置高了很容易花屏。

/* REG[04h] Pixel Clock Setting Register (PCSR)
            bit7 &#160CLK Inversion
       .. (2016-03-02 12:09) 
这个地方,我分析过,应该是分频,而不是倍频。 就是说PCLK<SYS_CLK。指的是液晶屏的刷新频率。

RA8875说过,800x480的屏幕应该为30-33MHz。而480x272的只需要9MHz。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107352
QQ
发表于 2016-3-2 17:28:12 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:这个地方,我分析过,应该是分频,而不是倍频。 就是说PCLK<SYS_CLK。指的是液晶屏的刷新频率。

RA8875说过,800x480的屏幕应该为30-33MHz。而480x272的只需要9MHz。 (2016-03-02 17:16) 
这个2倍的,4倍的,8倍的不是倍频的意思,是指的2个,4个和8个系统时钟。也就是进行分频
回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
 楼主| 发表于 2016-3-5 19:53:10 | 显示全部楼层
发现一个问题,RA8875的最高系统时钟在datasheet中说明是60MHz。
我这个方法把它设定到81MHz,虽然能用,但是有风险。。。。
回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
 楼主| 发表于 2016-3-8 21:54:26 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:发现一个问题,RA8875的最高系统时钟在datasheet中说明是60MHz。
我这个方法把它设定到81MHz,虽然能用,但是有风险。。。。 (2016-03-05 19:53)
经过多次尝试,RA8875读取数据模式下的不稳定,找到根本原因了,是FSMC设定太慢了。

RA8875的锁相环还是设定为60MHz,这个是datasheet承认的最高时钟。(armfly的历程中是设定为81.25MHz了)

关键的FSMC设定为:
       timing.FSMC_AddressSetupTime = 0;  //armfly的设定为1.
    timing.FSMC_AddressHoldTime = 0;
    timing.FSMC_DataSetupTime = 2;
    timing.FSMC_BusTurnAroundDuration = 0;
    timing.FSMC_CLKDivision = 0;
    timing.FSMC_DataLatency = 0;
    timing.FSMC_AccessMode = FSMC_AccessMode_A;

我的环境是F103,emwin528,emwin的自带RA8875驱动。问题出现的是edit模式下,光标闪烁,显示不规则的乱码或者扭曲。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107352
QQ
发表于 2016-3-9 00:11:06 | 显示全部楼层
[s:151] [s:151]
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-28 07:27 , Processed in 0.177443 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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