OpenEdv-开源电子网

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

TFTLCD屏幕id读取问题,id一直没读取对

[复制链接]

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2019-7-31
在线时间
93 小时
发表于 2019-9-12 22:33:07 | 显示全部楼层 |阅读模式
LCD一直不显示,自己才发现原来连ID都没读取对。下面代码是抄的,自己组合了一下,id还是没读取对
#include"sys.h"
#include"usart.h"
typedef struct {
vu16 LCD_Command;
vu16 LCD_Date;
}LCD_W_R;
#define LCD_BASE        ((u32)(0x6C000000 | 0x000007FE))
#define LCD             ((LCD_W_R *) LCD_BASE)
int main()
{
unsigned int LCD_ID;
Stm32_Clock_Init(9);
uart_init(72,115200);
RCC->AHBENR|=1<<8; //使能 FSMC 时钟
RCC->APB2ENR|=1<<3; //使能 PORTB 时钟
RCC->APB2ENR|=1<<5; //使能 PORTD 时钟
RCC->APB2ENR|=1<<6; //使能 PORTE 时钟
RCC->APB2ENR|=1<<8; //使能 PORTG 时钟
GPIOB->CRL&=0XFFFFFFF0; //PB0 推挽输出 背光
GPIOB->CRL|=0X00000003;
//PORTD 复用推挽输出
GPIOD->CRH&=0X00FFF000;
GPIOD->CRH|=0XBB000BBB;
GPIOD->CRL&=0XFF00FF00;
GPIOD->CRL|=0X00BB00BB;
//PORTE 复用推挽输出
GPIOE->CRH&=0X00000000;
GPIOE->CRH|=0XBBBBBBBB;
GPIOE->CRL&=0X0FFFFFFF;
GPIOE->CRL|=0XB0000000;
//PORTG12 复用推挽输出
GPIOG->CRH&=0XFFF0FFFF;
GPIOG->CRH|=0X000B0000;
GPIOG->CRL&=0XFFFFFFF0;//PG0->RS
GPIOG->CRL|=0X0000000B;
//寄存器清零
//bank1 有 NE1~4,每一个有一个 BCR+TCR,所以总共八个寄存器。
//这里我们使用 NE4 ,也就对应 BTCR[6],[7]。
FSMC_Bank1->BTCR[6]=0X00000000;
FSMC_Bank1->BTCR[7]=0X00000000;
FSMC_Bank1E->BWTR[6]=0X00000000;
//操作 BCR 寄存器 使用异步模式
FSMC_Bank1->BTCR[6]|=1<<12; //存储器写使能
FSMC_Bank1->BTCR[6]|=1<<14; //读写使用不同的时序
FSMC_Bank1->BTCR[6]|=1<<4; //存储器数据宽度为 16bit
//操作 BTR 寄存器
//读时序控制寄存器
FSMC_Bank1->BTCR[7]|=0<<28; //模式 A
FSMC_Bank1->BTCR[7]|=1<<0;
//地址建立时间(ADDSET)为 2 个 HCLK,1/36M=27ns(实际>200ns)
//因为液晶驱动 IC 的读数据的时候,速度不能太快,尤其对 1289 这个 IC。
FSMC_Bank1->BTCR[7]|=0XF<<8; //数据保存时间为 16 个 HCLK
//写时序控制寄存器
FSMC_Bank1E->BWTR[6]|=0<<28; //模式 A
FSMC_Bank1E->BWTR[6]|=0<<0; //地址建立时间(ADDSET)为 1 个 HCLK
//4 个 HCLK(HCLK=72M)液晶驱动 IC 的写脉宽,最少也得 50ns。 72M/4=24M=55ns
FSMC_Bank1E->BWTR[6]|=3<<8; //数据保存时间为 4 个 HCLK
//使能 BANK1,区域 4
FSMC_Bank1->BTCR[6]|=1<<0;
    LCD->LCD_Command=0xD3;
LCD_ID=LCD->LCD_Date;
LCD_ID=LCD->LCD_Date;
LCD_ID=LCD->LCD_Date;
LCD_ID<<=8;
LCD_ID|=LCD->LCD_Date;
printf("%d",LCD_ID);
while(1)
{

}
}

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

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2019-7-31
在线时间
93 小时
 楼主| 发表于 2019-9-13 09:36:01 | 显示全部楼层
原来我一直用printf输出10进制的数,37697转换成16进制正好是0x9341:@
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 10:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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