OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7143|回复: 8

STM32读TFTLCD屏问题

[复制链接]

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2012-2-15
在线时间
0 小时
发表于 2012-2-15 10:19:03 | 显示全部楼层 |阅读模式
以下程序是按照原子的源程序改的,我的屏是SSD1289控制器,有以下一些问题,希望各位同僚给与帮助!
void LCD_Init(void)

  RCC->APB2ENR|=1<<3;//先使能外设PORTB时钟
  RCC->APB2ENR|=1<<4;//先使能外设PORTC时钟
RCC->APB2ENR|=1<<6;//先使能外设PORTE时钟
 
//PORTC4 5通用推挽输出 
GPIOC->CRL&=0XFF00FFFF;
GPIOC->CRL|=0X00330000;  
GPIOC->ODR|=0X00000030;   
//PORTB0 1 推挽输出
GPIOB->CRL&=0XFFFFFF00; 
GPIOB->CRL|=0X00000033;   
GPIOB->ODR|=0X00000003;
//PORTE 推免输出
GPIOE->CRH&=0X00000000;
GPIOE->CRH|=0X33333333;
GPIOE->CRL&=0X00000000;
GPIOE->CRL|=0X33333333; 
GPIOE->ODR|=0XFFFFFFFF;//PORTE输出高
我的板子是:
板子端口   屏接口
PORTE0~15--D0~15
PORTC4、5--CS、RS
PORTB0、1--WR、RD

这里为什么每次配置完IO口都要设置成输出高??
如果每次配置完端口模式后不使其输出高,这样我连接硬件在MDK4中单步执行程序,每次执行完DeviceCode = LCD_ReadReg(0x0000); (读屏控制器ID),可以得到ID(8989),但为什么下载到板子上,按复位键后却打印出来的ID是0?原子哥给分析一下是什么原因~~弄了好几天了,心灰意冷
STM32学习群:214363223
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-2-15 11:13:18 | 显示全部楼层
回复【楼主位】林少:
---------------------------------
配置完输出高有个好处就是电平都是确定的,而且很多器件的默认空闲状态都是高电平,所以,输出高是一个配置IO后的常用做法.
把延时参数改一改吧.参考我们的代码.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2012-2-15
在线时间
0 小时
 楼主| 发表于 2012-2-15 11:40:07 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
u16 OINT_COLOR = 0x0000,BACK_COLOR = 0xFFFF;  
u16 DeviceCode;  

#if LCD_FAST_IO==1 //快速IO
//写寄存器函数
void LCD_WR_REG(u8 data)

LCD_RS_CLR;//写地址  
  LCD_CS_CLR; 
DATAOUT(data); 
LCD_WR_CLR;
LCD_WR_SET; 
  LCD_CS_SET;   
}
#else//正常IO
//写寄存器函数
void LCD_WR_REG(u8 data)

LCD_RS=0;//写地址  
  LCD_CS=0; 
DATAOUT(data); 
LCD_WR=0;
// delay_us(10); 
LCD_WR=1; 
  LCD_CS=1;   

#endif

//写寄存器
void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue)
{
LCD_WR_REG(LCD_Reg);  
LCD_WR_DATA(LCD_RegValue);       
}    
//读寄存器
u16 LCD_ReadReg(u8 LCD_Reg)
{    
u16 t;
LCD_WR_REG(LCD_Reg);  //写入要读的寄存器号  
GPIOE->CRL=0X88888888; //PE0-7  上拉输入
GPIOE->CRH=0X88888888; //PE8-15 上拉输入
// GPIOE->ODR=0XFFFF;    //全部输出高
#if LCD_FAST_IO==1 //快速IO
LCD_RS_SET;
LCD_CS_CLR;
//读取数据(读寄存器时,并不需要读2次)
LCD_RD_CLR;
delay_us(5);//FOR 8989,延时5us
             t=DATAIN;    
LCD_RD_SET;   
LCD_CS_SET; 
#else
LCD_RS=1;
LCD_CS=0;
//读取数据(读寄存器时,并不需要读2次)
LCD_RD=0;
t=DATAIN;    
LCD_RD=1;  
LCD_CS=1; 
#endif  
  GPIOE->CRL&=0X00000000;
GPIOE->CRH&=0X00000000;
GPIOE->CRL|=0X33333333; //PB0-7  上拉输出
GPIOE->CRH|=0X33333333; //PB8-15 上拉输出
// GPIOE->ODR=0XFFFF;    //全部输出高
return t;  
}

程序里我把t=DATAIN;提到了LCD_RD_SET;前面。是在每次清除写端口、清楚读端口LCD_WR_CLR;、LCD_RD_CLR;后加个延时吗?然后再将其置高?
STM32学习群:214363223
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-2-15 11:55:12 | 显示全部楼层
delay_us(5);//FOR 8989,延时5us 
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2012-2-15
在线时间
0 小时
 楼主| 发表于 2012-2-15 12:42:00 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我就是用的你们的程序,在那里我都改成delay_ms(5);了,还是不行!写寄存器那里要加延时吗?
STM32学习群:214363223
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-2-15 12:44:36 | 显示全部楼层
那就奇怪了.
在我们的板子上试试?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2012-2-15
在线时间
0 小时
 楼主| 发表于 2012-2-15 15:03:17 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
回头试一下,谢谢原子哥
STM32学习群:214363223
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2012-2-15
在线时间
0 小时
 楼主| 发表于 2012-2-15 16:45:26 | 显示全部楼层
回复【7楼】林少:
---------------------------------
可以打印出ID了,但是屏不显示字符,用的是你们的程序。什么原因呢?
读到的ID是8989对应的控制器是SSD1289吗?
STM32学习群:214363223
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-2-15 17:19:06 | 显示全部楼层
是的
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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