OpenEdv-开源电子网

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

请教:STM32 FSMC 如何调试

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2011-12-16
在线时间
3 小时
发表于 2012-11-30 10:42:27 | 显示全部楼层 |阅读模式
连接LCD   屏无反应。

对数据位测试, 写DATA 能看到电平上升
但读电平却没法,

看MEM 0X60000000 地址下面一群全改成相同的输入了。

一会上图。


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

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2011-12-16
在线时间
3 小时
 楼主| 发表于 2012-11-30 11:12:49 | 显示全部楼层
#define   LCD_DATA  *((volatile u16 *)0x60020000) /* RS = 1 */
#define   LCD_CMD   *((volatile u16 *)0X60000000) /* RS = 0 */


void FSMC_Init(void)
{
  
  RCC->APB2ENR|=1<<5;//先使能外设PORTD时钟
  RCC->APB2ENR|=1<<6;//使能外设PORTE时钟
  
  //相关引脚复用推挽输出
  GPIOD->CRH&=0X00FF0000;
  GPIOD->CRH|=0XBB00BBBB;
  GPIOD->CRL&=0X0F000F00;
  GPIOD->CRL|=0XB0BB30BB;
  GPIOE->CRH=0XBBBBBBBB;
  GPIOE->CRL&=0X0FFFFF0F;
  GPIOE->CRL|=0XB0000030;
  GPIOA->CRL&=0XFFFFF0FF;
  GPIOA->CRL|=0XFFFFF3FF;
  
  
  RCC->AHBENR |= 1<<8; //开启FSMC时钟
  RCC->APB2ENR |= 1<<0;
  FSMC->BCR1 = 0X00001050;//sram 16BIT 模式B
  FSMC->BTR1 = 0X00000501;
  FSMC->BCR1 |= 0X00000001;
  FSMC ->BWTR1=0X0FFFFFFF;
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2011-12-16
在线时间
3 小时
 楼主| 发表于 2012-11-30 11:13:20 | 显示全部楼层
/****************************************************************************
* 名    称:void ili9320_WriteIndex(u16 idx)
* 功    能:写 ili9320 控制器寄存器地址
* 入口参数:idx   寄存器地址
* 出口参数:无
* 说    明:调用前需先选中控制器,内部函数
* 调用方法:ili9320_WriteIndex(0x0000);
****************************************************************************/
void WriteComm(u16 idx)
{
 LCD_CMD= idx;
}



/****************************************************************************
* 名    称:void ili9320_WriteData(u16 dat)
* 功    能:写 ili9320 寄存器数据
* 入口参数:dat     寄存器数据
* 出口参数:无
* 说    明:向控制器指定地址写入数据,调用前需先写寄存器地址,内部函数
* 调用方法:ili9320_WriteData(0x1030)
****************************************************************************/
void WriteData(u16 data)
{
  LCD_DATA= data;
}    
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2011-12-16
在线时间
3 小时
 楼主| 发表于 2012-11-30 11:13:44 | 显示全部楼层
/**************************************************************************


//*************************************************************************/
void LCD_Init(void)
{
  //CS0=0;
  FSMC_Init();
  _SBI(TFT_RST);  
  delay(200);
  
  _CBI(TFT_RST);
  delay(800);
  
  _SBI(TFT_RST);
  WriteComm(0xFF);


  WriteComm(0xFF);
  delay(5);
  WriteComm(0xFF);
  WriteComm(0xFF);
  WriteComm(0xFF);
  WriteComm(0xFF);
  delay(10);
  
  WriteComm(0x11);
  delay(1500);
  
  WriteComm(0xB0);
  WriteData(0x00);
    delay(1500);
  WriteComm(0xB3);
  WriteData(0x02);
  WriteData(0x00);
  WriteData(0x00);
  WriteData(0x00);
  
  WriteComm(0xC0);
  WriteData(0x13);
  WriteData(0x3B);//480
  WriteData(0x00);
  WriteData(0x00);
  WriteData(0x00);
  WriteData(0x01);
  WriteData(0x00);//NW
  WriteData(0x43);
  
  WriteComm(0xC1);
  WriteData(0x08);
  WriteData(0x1B);//CLOCK
  WriteData(0x08);
  WriteData(0x08);
  
  WriteComm(0xC4);
  WriteData(0x11);
  WriteData(0x01);
  WriteData(0x73);
  WriteData(0x01);
  
  WriteComm(0xC6);
  WriteData(0x00);
  
  WriteComm(0xC8);
  WriteData(0x0F);
  WriteData(0x05);
  WriteData(0x14);
  WriteData(0x5C);
  WriteData(0x03);
  WriteData(0x07);
  WriteData(0x07);
  WriteData(0x10);
  WriteData(0x00);
  WriteData(0x23);
  
  WriteData(0x10);
  WriteData(0x07);
  WriteData(0x07);
  WriteData(0x53);
  WriteData(0x0C);
  WriteData(0x14);
  WriteData(0x05);
  WriteData(0x0F);
  WriteData(0x23);
  WriteData(0x00);
  
  WriteComm(0x35);
  WriteData(0x00);
  
  WriteComm(0x36);
  WriteData(0x00);
  
  WriteComm(0x3A);
  WriteData(0x55);
  
  WriteComm(0x44);
  WriteData(0x00);
  WriteData(0x01);
  
  WriteComm(0xD0);
  WriteData(0x07);
  WriteData(0x07);//VCI1
  WriteData(0x1D);//VRH
  WriteData(0x03);//BT
  
  WriteComm(0xD1);
  WriteData(0x03);
  WriteData(0x5B);//VCM
  WriteData(0x10);//VDV
  
  WriteComm(0xD2);
  WriteData(0x03);
  WriteData(0x24);
  WriteData(0x04);
  WriteComm(0x21);
  WriteComm(0x29);
  delay(30);
  
  WriteComm(0x2A);
  WriteData(0x00);
  WriteData(0x00);
  WriteData(0x01);
  WriteData(0x3F);//320
  
  WriteComm(0x2B);
  WriteData(0x00);
  WriteData(0x00);
  WriteData(0x01);
  WriteData(0xDF);//480
  
  WriteComm(0x2C);
    delay(1500);
  
}
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2011-12-16
在线时间
3 小时
 楼主| 发表于 2012-11-30 11:14:01 | 显示全部楼层

void BlockWrite(unsigned int Xstart,unsigned int Xend,unsigned int Ystart,unsigned int Yend) //reentrant
{
  volatile u16 i=1;
  //R61581
/*0x60000000
  
  WriteComm(0x4);
  i=read_Data();
   WriteComm(0x6);
  i=read_Data();
   WriteComm(0x7);
  i=read_Data();
   WriteComm(0x8);
  i=read_Data();
   WriteComm(0xBF);
   //*/
   i=read_Data();

  

//*

  WriteComm(0x2a);   
  WriteData(Xstart>>8);
  WriteData(Xstart&0xff);
  WriteData(Xend>>8);
  WriteData(Xend&0xff);
  
  WriteComm(0x2b);   
  WriteData(Ystart>>8);
  WriteData(Ystart&0xff);
  WriteData(Yend>>8);
  WriteData(Yend&0xff);
  
  WriteComm(0x3A);    // 16/18 bits
  WriteData(0x55);
  
  WriteComm(0x2c);//*/
  
  
}
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2011-12-16
在线时间
3 小时
 楼主| 发表于 2012-11-30 11:16:17 | 显示全部楼层
 


发0x0ff

回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2011-12-16
在线时间
3 小时
 楼主| 发表于 2012-11-30 12:17:21 | 显示全部楼层

中午发现。CS 和 RS 反了 换过来。能现花屏了。晚上再查

回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2011-8-24
在线时间
0 小时
发表于 2013-11-9 17:00:35 | 显示全部楼层
你好,我遇到跟你相同的问题,不显示的问题出在哪儿呢?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 12:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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