OpenEdv-开源电子网

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

ILI9320读ID一直是ffff??应该是软件问题,麻烦帮忙看看哪错了?

[复制链接]

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2012-11-2
在线时间
1 小时
发表于 2012-12-25 17:26:25 | 显示全部楼层 |阅读模式
#include "stm32f10x.h"
#define ILI932X_CTR_PORT         GPIOC     // 控制管脚
#define ILI932X_BL GPIO_Pin_10;
#define ILI932X_CS         GPIO_Pin_9 //片选
#define ILI932X_RS         GPIO_Pin_6 //寄存器选择
#define ILI932X_WR              GPIO_Pin_7 //写
#define ILI932X_RD            GPIO_Pin_8 //读
#define ILI932X_RST GPIO_Pin_11 //复位

#define ILI932X_DATA_PORT GPIOD //16根数据线

#define Set_Cs                ILI932X_CTR_PORT->BSRR = ILI932X_CS;//数据 高
#define Clr_Cs                ILI932X_CTR_PORT->BRR = ILI932X_CS;//数据 低

#define Set_Rs                ILI932X_CTR_PORT->BSRR = ILI932X_RS;//数据 高
#define Clr_Rs                ILI932X_CTR_PORT->BRR = ILI932X_RS;//数据 低

#define Set_nWr                ILI932X_CTR_PORT->BSRR = ILI932X_WR;//数据 高
#define Clr_nWr                ILI932X_CTR_PORT->BRR = ILI932X_WR;//数据 低

#define Set_nRd                ILI932X_CTR_PORT->BSRR = ILI932X_RD;//数据 高
#define Clr_nRd                ILI932X_CTR_PORT->BRR = ILI932X_RD;//数据 低

#define Set_Rst                ILI932X_CTR_PORT->BSRR = ILI932X_RST;//数据 高
#define Clr_Rst                ILI932X_CTR_PORT->BRR = ILI932X_RST;//数据 低

#define Set_bl                ILI932X_CTR_PORT->BSRR = ILI932X_BL;//数据 高
#define Clr_bl                ILI932X_CTR_PORT->BRR = ILI932X_BL;//数据 低

void delay_ms(u16 n)
{    

u32 x,y;
for(x=n; x>0; x--)
for(y=14396; y>0; y--);

}

void GPIO_Config()
{
  GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = ILI932X_CS | ILI932X_RS | ILI932X_WR | ILI932X_RD | ILI932X_RST|ILI932X_BL;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(ILI932X_CTR_PORT, &GPIO_InitStructure);
}
void LCD_WR_COM(u16 Index)
{
    Clr_Cs;
    Clr_Rs;
    GPIO_Write(ILI932X_DATA_PORT,Index);
    Clr_nWr;
    Set_nWr;
    Set_Rs;
    Set_Cs;
}
void LCD_WR_Data(u16 data)
{
    Clr_Cs;
Set_Rs;
    GPIO_Write(ILI932X_DATA_PORT,data);
    Clr_nWr;
    Set_nWr;
    Set_Cs;
}
//读寄存器
u16 LCD_ReadReg(u8 LCD_Reg)
{
u16 t=0;   
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(ILI932X_DATA_PORT, &GPIO_InitStructure);
// LCD_WR_Data(0xffff);

LCD_WR_COM(LCD_Reg);   //写入要读的寄存器号  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;// 上拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(ILI932X_DATA_PORT, &GPIO_InitStructure);

Set_Rs;
Clr_Cs;
Clr_nRd;   
Set_nRd;
  t=GPIOD->IDR;   //数据输入
Set_Cs;   

return t;  

int main(void)
{

    //开启响应时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOC, ENABLE); //时钟使能
GPIO_Config();
Set_nRd;
Set_nWr;
    Set_Rs;
    Set_Cs;
Set_bl;
delay_ms(10);
    LCD_ReadReg(00);


}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-25 18:43:31 | 显示全部楼层
先检查硬件.
挨个将D0~D15接GND,看看读出的数据是否正常.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2012-11-2
在线时间
1 小时
 楼主| 发表于 2012-12-26 09:00:40 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥!
我接地了!!好像一直还是FFFF??
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2012-12-26 09:17:04 | 显示全部楼层
我相当奇怪,为什么楼主不用FSMC驱动?
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2012-11-2
在线时间
1 小时
 楼主| 发表于 2012-12-26 09:31:47 | 显示全部楼层
回复【4楼】Tardis:
---------------------------------
不会用!我现在的想法是先显示点东西,然后再触摸,至于FSMC。等我把基本功能会了以后再考虑吧!?
现在的问题是我居然连读ID值都不会,郁闷啊 !看了两天!
硬件都挨个接地试了试,一直是FFFF。应该是我哪的软件错误??
我新手啊
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2012-12-26 09:56:56 | 显示全部楼层
慢慢来吧,检查仔细点,曾经连点四块屏都FFFF,搞得想死心都有了。每次重新换LCD屏,或是重新画的板 都得折腾我一上午才能找到问题,其实都是些小问题了。
1-1
回复 支持 反对

使用道具 举报

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2012-11-2
在线时间
1 小时
 楼主| 发表于 2012-12-26 10:02:46 | 显示全部楼层
回复【6楼】mygod:
---------------------------------
嗯  我已经慢慢2天了,实在找不出这样的小问题,只好论坛求助了!
话说这个屏幕真的那么容易有问题吗??
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2012-12-26 11:49:52 | 显示全部楼层
回复【7楼】dwiller:
---------------------------------
咋说呢,看人品啊,几个月买的20块LCD,不知道怎么测试的我发现能用的只有 5-6块,第二次改PCB板时候,因为担心以前的LCD有问题,就又重新买了40块,后面放上去都是好的,再把以前那些 坏的不能用的,一悍上去,奶奶的又都全好了,郁闷得我现在都不知道咋回事
1-1
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2012-12-26 17:34:29 | 显示全部楼层
回复【5楼】dwiller:
---------------------------------
呃~如果你用FSMC,结合库函数,可以完全不管屏的通讯协议了,初步估计,你协议可能写错了,因为屏上电后,IO全部输出高电平的
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

4

主题

13

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2012-12-18
在线时间
0 小时
发表于 2012-12-26 18:18:19 | 显示全部楼层
看不懂你的程序,在读之前是不是也要先发送启动晶振的命令?
回复 支持 反对

使用道具 举报

23

主题

76

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2012-11-2
在线时间
1 小时
 楼主| 发表于 2012-12-27 11:00:19 | 显示全部楼层
回复【10楼】flkflk:
---------------------------------
谢谢你的提醒,今天我再试了一遍,一看触摸屏自带的资料初始化中有一句开启晶振的语句,我瞬间就明白了
真心谢谢!我当小白很长啊…………
回复 支持 反对

使用道具 举报

4

主题

13

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2012-12-18
在线时间
0 小时
发表于 2012-12-27 18:43:54 | 显示全部楼层
呵呵 恭喜 恭喜
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-20 04:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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