OpenEdv-开源电子网

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

stm32f407vgt6 驱动ili9341 id都读不出来是哪部分出了问题?

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-6-8
在线时间
1 小时
发表于 2014-6-8 11:59:36 | 显示全部楼层 |阅读模式
5金钱
硬件电路是这么设计的:


是通过fsmc驱动lcd显示屏。
驱动部分代码:
[mw_shl_code=c,true] #define LCD_RAM *(vu16*)((u32)0x60020000) //disp Data ADDR #define LCD_REG *(vu16*)((u32)0x60000000) //disp Reg ADDR void LCD_LineConf(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15 |GPIO_Pin_11 | GPIO_Pin_4 |GPIO_Pin_5 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource4, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource7, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource10, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource11, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_FSMC); /* PEs */ GPIO_InitStructure.GPIO_Pin = 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_Init(GPIOE, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOE, GPIO_PinSource7 , GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE, GPIO_PinSource8 , GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE, GPIO_PinSource9 , GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE, GPIO_PinSource10 , GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE, GPIO_PinSource11 , GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE, GPIO_PinSource12 , GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE, GPIO_PinSource13 , GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE, GPIO_PinSource14 , GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOE, GPIO_PinSource15 , GPIO_AF_FSMC); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_MCO); GPIO_SetBits(GPIOD, GPIO_Pin_0); /*RESERT*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOD, GPIO_PinSource13, GPIO_AF_MCO); GPIO_SetBits(GPIOD, GPIO_Pin_0); } void LCD_FSMCConf(void) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef p; RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE); p.FSMC_AddressSetupTime = 5; p.FSMC_AddressHoldTime = 0; p.FSMC_DataSetupTime = 9; p.FSMC_BusTurnAroundDuration = 0; p.FSMC_CLKDivision = 0; p.FSMC_DataLatency = 0; p.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; 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_AsynchronousWait = FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; 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_Disable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); } u16 LCD_ReadReg(u8 Reg) { LCD_REG=Reg; return (LCD_RAM); } void LCD_Init(void) { LCD_LineConf(); LCD_FSMCConf(); delay_ms(5); lcdid=LCD_ReadReg(0x00); if(lcdid==0x9341) { while(1); } while(1); }[/mw_shl_code]
这个lcdid要么是返回 0要么是返回1。 


注:是不是地址的原因?

最佳答案

查看完整内容[请看2#楼]

 时序设置有问题,读ID得比较慢的速度读,才可以. 见我的配置: [mw_shl_code=c,true] //寄存器清零 //bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。 //这里我们使用NE1 ,也就对应BTCR[0],[1]。 FSMC_Bank1->BTCR[6]=0X00000000; FSMC_Bank1->BTCR[7]=0X00000000; FSMC_Bank1E->BWTR[6]=0X00000000; //操作BCR寄存器 使用异步模式 FSMC_Bank1->BTCR[6]|=1<<12; //存储器 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-6-8 11:59:37 | 显示全部楼层
 时序设置有问题,读ID得比较慢的速度读,才可以.
见我的配置:
[mw_shl_code=c,true] //寄存器清零 //bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。 //这里我们使用NE1 ,也就对应BTCR[0],[1]。 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]|=0XF<<0; //地址建立时间(ADDSET)为16个HCLK 1/168M=6ns*16=96ns //因为液晶驱动IC的读数据的时候,速度不能太快。 FSMC_Bank1->BTCR[7]|=24<<8; //数据保存时间为25个HCLK =6*25=150ns //写时序控制寄存器 FSMC_Bank1E->BWTR[6]|=0<<28; //模式A FSMC_Bank1E->BWTR[6]|=8<<0; //地址建立时间(ADDSET)为8个HCLK =48ns //4个HCLK(HCLK=168M),某些液晶驱动IC的写信号脉宽,最少也得50ns。 FSMC_Bank1E->BWTR[6]|=8<<8; //数据保存时间为6ns*9个HCLK=54ns //使能BANK1,区域4 FSMC_Bank1->BTCR[6]|=1<<0; //使能BANK1,区域1 [/mw_shl_code]


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

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-6-8
在线时间
1 小时
 楼主| 发表于 2014-6-8 11:59:37 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
thanks。。是速度太快读取不了,后面我直接配置lcd屏的寄存器,能够显示图片了,,id读不出来就无所谓了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 18:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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