3527|17

1万

帖子

28

TA的资源

裸片初长成(高级)

楼主
 

【TI首届低功耗设计大赛】FR5969带的LCD一直不正常,-----问题已解决,见15的汇报 [复制链接]

本帖最后由 dontium 于 2014-11-7 13:15 编辑

ST7585驱动IC的LCD,原来在F28035上用过,正常!

应该说在FR5969上应用也不是问题吧?然而,却困扰了我四天,仍然没把问题搞定!!


问题描述:

在LCD上要显示这样一个图片:



在LCD上却是这样显示的:




问题是对LCD的X、Y地址控制不起作用!!

程序是这样的:

LCD_drawPicture()函数为:
void LCD_drawPicture(void)
{
        int i;

    LCD_sit(0,0);                   //  归位,从头开始。
    LCD_WRITE_DATA();      //     命令/数据控制端信号

    for ( i = 768; i > 0; i--)
    {
            WriteSpi(BMP1[i-1]);
    }

}
其中的 LCD_sit()为:

void LCD_sit( unsigned char x, unsigned char y)
{
        LCD_WRITE_COMMAND();
        WriteSpi(0x80 | x);
        WriteSpi(0x40 | y);
}



怀疑LCD有问题,就换了新的试;怀疑连线有问题,就在LCD的引脚上看信号;…… 均没有找到原因



最新回复

很明显是图像转换的格式不对。你这个应该黑白反过来了,在LCD上能看到鼻子的那个三角形图案。有错位,位置也不对  详情 回复 发表于 2014-11-7 09:27
 
点赞 关注

回复
举报

940

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
顶端的图标都正常显示了,这一副图应该也没有问题啊,是不是图片转的数据有问题

点评

是 LCD_sit()这个函数不起作用  详情 回复 发表于 2014-11-6 11:43
 
 

回复

1万

帖子

28

TA的资源

裸片初长成(高级)

板凳
 
wgsxsm 发表于 2014-11-6 11:23
顶端的图标都正常显示了,这一副图应该也没有问题啊,是不是图片转的数据有问题

是 LCD_sit()这个函数不起作用

点评

除了画图,其他的例如写字符或者画线画点的函数可以实现吗  详情 回复 发表于 2014-11-6 11:49
 
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

4
 
dontium 发表于 2014-11-6 11:43
是 LCD_sit()这个函数不起作用

除了画图,其他的例如写字符或者画线画点的函数可以实现吗

点评

点、线都可以显示。只是在设置X、Y后,仍然显示在上次的内容后。  详情 回复 发表于 2014-11-6 12:34
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(中级)

5
 
是不是寄存器没写对

点评

宏定义是F28035那个工作里拷贝来的。后来换了换X、Y,也不行。 我在想,FR5969的SPI与F28035的SPI是不是存在没有考虑到的区别?  详情 回复 发表于 2014-11-6 12:26
 
 
 

回复

391

帖子

1

TA的资源

一粒金砂(高级)

6
 

可能是

本帖最后由 hh376158101 于 2014-11-6 12:16 编辑

你在写地址和写数据后面加个短的延时看看,可能操作太快,液晶还没响应,又再次写入数据,肯定会出问题

点评

原来也在想,是不是延时问题,就加入了 __delay_cycles(60000); 或者 TA1_sleep(200); 还是没办法控制X、Y地址。 俺也没有逻辑分析仪,要不然看看信号是怎么传的或者会发现问题。 用F28035时,S  详情 回复 发表于 2014-11-6 12:39
 
个人签名尽善尽美
 
 

回复

1万

帖子

28

TA的资源

裸片初长成(高级)

7
 
motodefy 发表于 2014-11-6 12:01
是不是寄存器没写对

宏定义是F28035那个工作里拷贝来的。后来换了换X、Y,也不行。

我在想,FR5969的SPI与F28035的SPI是不是存在没有考虑到的区别?

点评

如果寄存器都对,那就有可能是spi的模式配置有问题了, 对着一个个看下吧  详情 回复 发表于 2014-11-6 14:01
 
 
 

回复

1万

帖子

28

TA的资源

裸片初长成(高级)

8
 
wgsxsm 发表于 2014-11-6 11:49
除了画图,其他的例如写字符或者画线画点的函数可以实现吗

点、线都可以显示。只是在设置X、Y后,仍然显示在上次的内容后。

点评

搞定了吗 是不是SPI传送的时序高位在前或者低位在前有问题?  详情 回复 发表于 2014-11-6 13:31
这个情况会不会是指令或者操作的顺序不对?  详情 回复 发表于 2014-11-6 13:12
 
 
 

回复

1万

帖子

28

TA的资源

裸片初长成(高级)

9
 
hh376158101 发表于 2014-11-6 12:15
你在写地址和写数据后面加个短的延时看看,可能操作太快,液晶还没响应,又再次写入数据,肯定会出问题

原来也在想,是不是延时问题,就加入了
        __delay_cycles(60000);
或者
        TA1_sleep(200);



还是没办法控制X、Y地址。


俺也没有逻辑分析仪,要不然看看信号是怎么传的或者会发现问题。

用F28035时,SPI的速度设置得最高(即BRR为3)时仍可正常工作。现在的FR5969用的时钟较低,读写数据更应该可靠。
 
 
 

回复

1976

帖子

0

TA的资源

五彩晶圆(初级)

10
 
dontium 发表于 2014-11-6 12:34
点、线都可以显示。只是在设置X、Y后,仍然显示在上次的内容后。

这个情况会不会是指令或者操作的顺序不对?
 
 
 

回复

1976

帖子

0

TA的资源

五彩晶圆(初级)

11
 
要不再换回F28035上去看看屏幕正常不正常?
 
 
 

回复

391

帖子

1

TA的资源

一粒金砂(高级)

12
 
dontium 发表于 2014-11-6 12:39
原来也在想,是不是延时问题,就加入了
        __delay_cycles(60000);
或者
  1. <div class="blockcode"><blockquote>void LCD_set_XY(unsigned int X, unsigned char Y)
  2. {
  3.         unsigned char temp1 = 0,temp2 = 0;
  4. //        Star_SPI();
  5.         LCD_AO_0;
  6.         UCB0TXBUF = 0xb0+Y;   //设置page(页)地址
  7.         delay_us(100);
  8.         temp1 =( X & 0XF0)>>4;      //高四位
  9.         temp2 = X & 0X0F;           //低四位
  10.         UCB0TXBUF = 0x10|temp1;     //设置column(列)地址高4位  (共有131列)
  11.         delay_us(100);
  12.         UCB0TXBUF = temp2;     //设置column(列)地址低4位
  13.         delay_us(100);
  14.         LCD_AO_1;
  15. }
复制代码
  1. 这个是我的代码,我的屏跟你的差不多。
复制代码

 
个人签名尽善尽美
 
 

回复

940

帖子

0

TA的资源

纯净的硅(高级)

13
 
dontium 发表于 2014-11-6 12:34
点、线都可以显示。只是在设置X、Y后,仍然显示在上次的内容后。

搞定了吗

是不是SPI传送的时序高位在前或者低位在前有问题?
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(中级)

14
 
dontium 发表于 2014-11-6 12:26
宏定义是F28035那个工作里拷贝来的。后来换了换X、Y,也不行。

我在想,FR5969的SPI与F28035的SPI是不 ...

如果寄存器都对,那就有可能是spi的模式配置有问题了,
对着一个个看下吧
 
 
 

回复

1万

帖子

28

TA的资源

裸片初长成(高级)

15
 
谢谢@motodefy ,@wgsxsm ,@hh376158101 ,@bobde163 ,及关心本问题的广大网友。问题总算找到了。

问题出在这里:

void LCD_sit( unsigned char x, unsigned char y)
{
        WriteCmd(Set_X_Address | x);
        //__delay_cycles(10000);
        WriteCmd(Set_Y_Address | y);
        //__delay_cycles(10000);
}

如果不加延时,则工作不正常,加了延时才可以。


 
 
 

回复

1944

帖子

32

TA的资源

纯净的硅(高级)

16
 
应该是图像转换格式不对吧,尝试不同的转换格式试试看。或者单步,看看到底应该是什么格式
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

17
 
很明显是图像转换的格式不对。你这个应该黑白反过来了,在LCD上能看到鼻子的那个三角形图案。有错位,位置也不对

点评

格式不对,可以调整,那都是小问题,最重要的是起点,起点不是指定的位置。  详情 回复 发表于 2014-11-7 13:13
 
 
 

回复

1万

帖子

28

TA的资源

裸片初长成(高级)

18
 
qiushenghua 发表于 2014-11-7 09:27
很明显是图像转换的格式不对。你这个应该黑白反过来了,在LCD上能看到鼻子的那个三角形图案。有错位,位置 ...

格式不对,可以调整,那都是小问题,最重要的是起点,起点不是指定的位置。


 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表