OpenEdv-开源电子网

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

读LCD ID

[复制链接]

10

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-6-13
在线时间
0 小时
发表于 2012-6-27 22:58:01 | 显示全部楼层 |阅读模式
我把device code =0x4535的例程放进去,LCD能正确显示,比如显示背景颜色,这说明整个硬件是没有问题的
而ID始终无法正确读出。非常头大

void write_dat(uint x)    //先写寄存器,再写16位数据
{
    LCD_CS=0;
    LCD_RS=1;
    LCD_WR=1;
    GPIOB->ODR=x;
    LCD_WR=0;
    LCD_WR=1;
    LCD_CS=1;
}//
read_reg(uchar x)
{
    write_reg(x);
    GPIOB->CRL=0X88888888;//设置PB0~PB7为输入模式
    GPIOB->CRH=0X88888888;//设置PB8~PB15为输入模式
    GPIOB->ODR=0XFFFF;//设置为上拉
    LCD_RS=1;
    LCD_CS=0;
    LCD_RD=0;
    LCD_RD=1;
    dat_dat=GPIOB->IDR;
    LCD_CS=1;

    GPIOB->CRL=0X33333333;//设置PB0~PB7为通用推挽输出模式
    GPIOB->CRH=0X33333333;//设置PB8~PB15为通用推挽输出模式
    GPIOB->ODR=0XFFFF;//设置为输出
    return dat_dat;
}
main()
{
    Stm32_Clock_Init(9);
    delay_init(72);
    RCC->APB2ENR|=1<<3;//使能PORT B时钟
    RCC->APB2ENR|=1<<4;//使能PORT C时钟
    RCC->APB2ENR|=1<<0;    //开启辅助时钟
    JTAG_Set(SWD_ENABLE);  //开启SWD
    GPIOB->CRL&=0X00FFFFFF;//设置PB0~PB7为通用推挽输出模式
    GPIOB->CRL|=0X33000000;
    GPIOB->CRH&=0XFFFFF000;//设置PB8~PB15为通用推挽输出模式
    GPIOB->CRH|=0X00000333;
    GPIOB->ODR=0XFFFF;//设置为输出高
    GPIOC->CRL&=0X00FFFFFF;//设置PC6~PC7为通用推挽输出模式
    GPIOC->CRL|=0X33000000;
    GPIOC->CRH&=0XFFFFF000;//设置PC8~PC10为通用推挽输出模式
    GPIOC->CRH|=0X00000333;
    GPIOC->ODR=0XFFFF;//设置为输出高
    delay_ms(50); // delay 50 ms
    write_reg_dat(0x0000,0x0001); //晶振振荡
    delay_ms(50);//等候20ms
   device_code=read_reg(0x0000);  //read code
   delay_us(1);
现在读出的ID是0X0000
我接JTAG做硬件调试,将PB口的每个端子都分别接3.3V实验,都能准确读出,为什么单单读ID的时候不行,程序已经改得跟例程一样了啊?哪位能指点一下?

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

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-6-27 23:25:56 | 显示全部楼层
  LCD_CS=0;
     LCD_RS=1;
     LCD_WR=1;
     LCD_RD=1;
     dat_dat=GPIOB->IDR;
     LCD_RD=0;
     LCD_RD=1;
     LCD_CS=1;
 
咦, 这么读可以么,我记得好像是rd一个低脉冲读哒......
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-6-27 23:30:47 | 显示全部楼层
回复【楼主位】zhengchao20105:
---------------------------------
啊...
GPIOB->CRL&=0X00FFFFFF;//设置PB0~PB7为通用推挽输出模式
     GPIOB->CRL|=0X33000000;
     GPIOB->CRH&=0XFFFFF000;//设置PB8~PB15为通用推挽输出模式
     GPIOB->CRH|=0X00000333;
     GPIOB->ODR=0XFFFF;//设置为输出高
 
这是在设置GPIOB还是GPIOC哦 呵呵
回复 支持 反对

使用道具 举报

10

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-6-13
在线时间
0 小时
 楼主| 发表于 2012-6-27 23:38:24 | 显示全部楼层
回复【3楼】lsj9383:
---------------------------------
脑袋发热,翻来覆去的调试,竟然不小心弄错了
非常感谢,问题已经解决
之前之所以有问题就是因为读时的程序写成了下面这样,这是万万读不出来的,根源就在这里。
      LCD_CS=0;
     LCD_RS=1;
     LCD_WR=1;
     LCD_RD=1;
     dat_dat=GPIOB->IDR;
     LCD_RD=0;
     LCD_RD=1;
     LCD_CS=1;

回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-6-28 13:36:07 | 显示全部楼层
回复【4楼】zhengchao20105:
---------------------------------
呵呵 嗯 加油
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 08:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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