OpenEdv-开源电子网

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

stm32 FSMC 读取TFT驱动IC的ID

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2014-7-30
在线时间
0 小时
发表于 2014-8-6 11:22:02 | 显示全部楼层 |阅读模式
5金钱
/*
LCD_BL对应PC7
LCD_CS接了一个译码器,由FSMC_A22,FSMC_A21,FSMC_NE4三个引脚控制,分别对应PE6,PE5,PG12
LCD_RS对应PF0,即FSMC_A0
LCD_WR对应PD5,即FSMC_NWE
LCD_RD对应PD4,即FSMC_NOE
LCD_D[15:0]对应FSMCD15-FSMC_D0
*/


#define LCD_BASE        ((uint32_t)(0x6C000000 | 0x00000000))   //用的是FSMC_A0
#define LCD             ((LCD_TypeDef *) LCD_BASE)


void LCD_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
 FSMC_NORSRAMTimingInitTypeDef  readWriteTiming; 
FSMC_NORSRAMTimingInitTypeDef  writeTiming;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOG,ENABLE);

//PORTC
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);

//PORTG
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOG, &GPIO_InitStructure); 

//PORTA
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); 

//PORTD
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_14|GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure); 

//PORTE
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure); 

//PORTF
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOF, &GPIO_InitStructure); 

readWriteTiming.FSMC_AddressSetupTime = 0x01;
readWriteTiming.FSMC_AddressHoldTime = 0x00;
readWriteTiming.FSMC_DataSetupTime = 0x0f;
readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
readWriteTiming.FSMC_CLKDivision = 0x00;
readWriteTiming.FSMC_DataLatency = 0x00;
readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A;
    

writeTiming.FSMC_AddressSetupTime = 0x00;
writeTiming.FSMC_AddressHoldTime = 0x00;
writeTiming.FSMC_DataSetupTime = 0x03;  
writeTiming.FSMC_BusTurnAroundDuration = 0x00;
writeTiming.FSMC_CLKDivision = 0x00;
writeTiming.FSMC_DataLatency = 0x00;
writeTiming.FSMC_AccessMode = FSMC_AccessMode_A;

 
  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; 
  FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable; 
  FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;   
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;  
  FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;   
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable; 
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; 
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming; 
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &writeTiming;  


GPIO_ResetBits(GPIOG, GPIO_Pin_12);//译码器的操作,使得LCD_CS为低电平
GPIO_ResetBits(GPIOE, GPIO_Pin_5);//译码器的操作,使得LCD_CS为低电平
GPIO_ResetBits(GPIOE, GPIO_Pin_6);//译码器的操作,使得LCD_CS为低电平

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);  
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);  

GPIO_SetBits(GPIOC, GPIO_Pin_7);//点亮液晶背光

delay_ms(50);
LCD_WriteReg(0x0000,0x0001);
delay_ms(50);
lcddev.id = LCD_ReadReg(0x0000);
lcddev.id = LCD_ReadReg(0x0000);
printf(" LCD ID:%x\r\n",lcddev.id); 

那个FSMC的初始话是完全按照原子的程序,打印出来的ID始终都是0,哪位大神能够帮忙解答啊?谢谢了

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

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2014-8-6 13:23:59 | 显示全部楼层
你的屏主控的型号,不同的屏读ID的寄存器不一样,看手册。你用的什么开发板,如果不是原子的Fsmc地址不一定相同,看原理图。编译时不要开优化,正常后在试。
回复

使用道具 举报

4

主题

200

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2012-12-19
在线时间
0 小时
发表于 2014-8-6 15:11:56 | 显示全部楼层
你的屏幕如果是在原子那买的就没有问题。。如果自己买的,很可能只支持8位扩充到16位模式的那那种屏幕是读不到数据的。。。。
目前在玩STM32,BBB,RPi
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2014-7-30
在线时间
0 小时
 楼主| 发表于 2014-8-6 15:43:38 | 显示全部楼层
谢谢各位的解答。这个屏幕是很早以前买的开发板上面带的,也不知道是不是原来买开发板配的那块,现在问卖家,他说是SSD1289,也不知道是不是好的,目前读不到它的ID,我看了一些资料,应该可以通过读0x00000000寄存器读ID,用的不是原子的开发板,仔细看了原理图的,引脚那些都做了修改,RS用的是FSMC_A0。FSMC初始化那部分,没有改过,也看不懂。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-6 23:18:25 | 显示全部楼层
回复【4楼】ftpwww:
---------------------------------
是可以通过读寄存器0读到1289的ID(8989)

另外,最好先确认下屏是好的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2014-7-30
在线时间
0 小时
 楼主| 发表于 2014-8-7 08:55:24 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
谢谢原子哥的解答,程序应该没有啥大问题吧。咋么确认屏是不是好的啊?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-7 23:37:46 | 显示全部楼层
回复【6楼】ftpwww:
---------------------------------
问卖家确认,或者发回去给卖家.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 10:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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