OpenEdv-开源电子网

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

F429驱动7寸原子屏问题/

[复制链接]

20

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-6-10
在线时间
0 小时
发表于 2015-4-22 21:53:59 | 显示全部楼层 |阅读模式
5金钱
 我使用F429 的FMC 驱动 原子的7寸液晶屏 。为什么 清屏 各种颜色都能全屏刷新。 显示图片或是显示文字都会中间一部分消失了 ?甚至显示的部分还严重缺色。。
 这个屏和代码在  F407芯片上都工作正常




[mw_shl_code=c,true]初始化lcd 函数 [/mw_shl_code]
[mw_shl_code=c,true]//初始化lcd //该初始化函数可以初始化各种ILI93XX液晶,但是其他函数是基于ILI9320的!!! //在其他型号的驱动芯片上没有测试! void LCD_Init(void) { vu32 i=0; GPIO_InitTypeDef GPIO_InitStructure; FMC_NORSRAMInitTypeDef FMC_NORSRAMInitStructure; FMC_NORSRAMTimingInitTypeDef readWriteTiming; FMC_NORSRAMTimingInitTypeDef writeTiming; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOG, ENABLE);//使能PB,PD,PE,PF,PG时钟 RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FMC,ENABLE);//使能FMC时钟 // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;//PB15 推挽输出,控制背光 // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式 // GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz // GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 // GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化 //PB15 推挽输出,控制背光 GPIO_InitStructure.GPIO_Pin = (3<<0)|(3<<4)|(7<<8)|(3<<14);//PD0,1,4,5,8,9,10,14,15 AF OUT GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化 GPIO_InitStructure.GPIO_Pin = (0X1FF<<7);//PE7~15,AF OUT GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PF12,FMC_A3 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//PG12,FMC_NE1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉 GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化 GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FMC);//PD0,AF12 GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FMC);//PD1,AF12 GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource9,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource10,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource14,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource15,GPIO_AF_FMC);//PD15,AF12 GPIO_PinAFConfig(GPIOE,GPIO_PinSource7,GPIO_AF_FMC);//PE7,AF12 GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource11,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource12,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource13,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource14,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOE,GPIO_PinSource15,GPIO_AF_FMC);//PE15,AF12 GPIO_PinAFConfig(GPIOF,GPIO_PinSource3,GPIO_AF_FMC); GPIO_PinAFConfig(GPIOD,GPIO_PinSource7,GPIO_AF_FMC); readWriteTiming.FMC_AddressSetupTime = 0X6; //地址建立时间(ADDSET)为6个HCLK 1/168M=6ns*6=36ns readWriteTiming.FMC_AddressHoldTime = 0x00; //地址保持时间(ADDHLD)模式A未用到 readWriteTiming.FMC_DataSetupTime = 0x5; //数据保存时间为6个HCLK =6*6=36ns readWriteTiming.FMC_BusTurnAroundDuration = 0x00; readWriteTiming.FMC_CLKDivision = 0x00; readWriteTiming.FMC_DataLatency = 0x00; readWriteTiming.FMC_AccessMode = FMC_AccessMode_A; //模式A writeTiming.FMC_AddressSetupTime = 0x6; //地址建立时间(ADDSET)为6个HCLK =36ns writeTiming.FMC_AddressHoldTime = 0x00; //地址保持时间(A writeTiming.FMC_DataSetupTime = 0x5; //数据保存时间为6ns*6个HCLK=36ns writeTiming.FMC_BusTurnAroundDuration = 0x00; writeTiming.FMC_CLKDivision = 0x00; writeTiming.FMC_DataLatency = 0x00; writeTiming.FMC_AccessMode = FMC_AccessMode_A; //模式A FMC_NORSRAMInitStructure.FMC_Bank = FMC_Bank1_NORSRAM1;// 这里我们使用NE1 ,也就对应BTCR[6],[7]。///? FMC_NORSRAMInitStructure.FMC_DataAddressMux = FMC_DataAddressMux_Disable; // 不复用数据地址 FMC_NORSRAMInitStructure.FMC_MemoryType = FMC_MemoryType_SRAM;// FMC_MemoryType_SRAM; //SRAM FMC_NORSRAMInitStructure.FMC_MemoryDataWidth = FMC_NORSRAM_MemoryDataWidth_16b;//存储器数据宽度为16bit FMC_NORSRAMInitStructure.FMC_BurstAccessMode = FMC_BurstAccessMode_Disable;// FMC_BurstAccessMode_Disable; FMC_NORSRAMInitStructure.FMC_WaitSignalPolarity = FMC_WaitSignalPolarity_Low; FMC_NORSRAMInitStructure.FMC_AsynchronousWait = FMC_AsynchronousWait_Disable; FMC_NORSRAMInitStructure.FMC_WrapMode = FMC_WrapMode_Disable; FMC_NORSRAMInitStructure.FMC_WaitSignalActive = FMC_WaitSignalActive_BeforeWaitState; FMC_NORSRAMInitStructure.FMC_WriteOperation = FMC_WriteOperation_Enable; // 存储器写使能 FMC_NORSRAMInitStructure.FMC_WaitSignal = FMC_WaitSignal_Disable; FMC_NORSRAMInitStructure.FMC_ExtendedMode = FMC_ExtendedMode_Enable; // 读写使用不同的时序 FMC_NORSRAMInitStructure.FMC_WriteBurst = FMC_WriteBurst_Disable; FMC_NORSRAMInitStructure.FMC_ReadWriteTimingStruct     = &readWriteTiming; //读写时序 FMC_NORSRAMInitStructure.FMC_WriteTimingStruct = &writeTiming; //写时序 FMC_NORSRAMInit(&FMC_NORSRAMInitStructure); //初始化FMC配置 FMC_NORSRAMCmd(FMC_Bank1_NORSRAM1, ENABLE); // 使能BANK1 delay_ms(100); while(i<0X1FFF) { if(LCD_RD_DATA()&0x0001)break;//等待控制器准备好 i++; } lcddev.setxcmd=LCD_CUR_X; //设置写X坐标指令 lcddev.setycmd=LCD_CUR_Y; //设置写Y坐标指令 lcddev.wramcmd=LCD_PIXELS; //设置写入GRAM的指令 lcddev.width=800; //设置宽度 lcddev.height=480; //设置高度 LCD_Scan_Dir(L2R_U2D); //设置默认扫描方向. LCD_SetDisplayLayer(0); //显示层为0 LCD_SetOperateLayer(0); //操作层也为0 LCD_EndXSet(799); //x终点坐标为800 LCD_BackLightSet(10); //背光设置为最亮 LCD_Clear(BLACK); }[/mw_shl_code]

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-4-22 22:27:08 | 显示全部楼层
是不是你的速度设置的太快了?
仿真看一下,先看清屏能否正常。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-6-10
在线时间
0 小时
 楼主| 发表于 2015-4-22 22:38:05 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
清屏都正常。纯色 填充也正常。 就是图片显示和文字显示有问题。 和F407开发板上实现的代码一样 没有任何区别。

哪里设置速度u??
回复

使用道具 举报

20

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-6-10
在线时间
0 小时
 楼主| 发表于 2015-4-22 23:01:04 | 显示全部楼层
是不是 F429 的FMC 初始化不对。/。和 F407的不一样???
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-4-22 23:21:02 | 显示全部楼层
回复【4楼】幽灵骑士:
---------------------------------
那应该就是单点操作的时候,出问题了。检查画点函数什么的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2015-5-12
在线时间
8 小时
发表于 2015-8-11 11:44:32 | 显示全部楼层
请检查第48行,是不是该G口误写成D口的初始化了???
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-12-8
在线时间
6 小时
发表于 2015-11-16 08:42:40 | 显示全部楼层
我也遇到了同样的失真问题,试了很多方法,都没有解决
回复

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-12-8
在线时间
6 小时
发表于 2015-11-20 11:21:06 | 显示全部楼层
回复【3楼】幽灵骑士:
------------------------------
图片显示的问题解决了吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 15:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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