搜索
bottom↓
回复: 111

STM32F429驱动7寸屏

  [复制链接]

出0入4汤圆

发表于 2014-10-16 17:21:20 | 显示全部楼层 |阅读模式
最近接到一个新案子,需要驱动7寸屏,选择的MCU是STM32F429,之前没有弄过,硬件已经画出来了,用STM32F429的LTDC(18bit)接GM7123输出RGB信号到7寸屏,没有用SDRAM作缓存,不知道可不可行?现在手头有块STM32F429 discovery版,驱动2.4寸屏都用了SDRAM作缓存的,不知道没有SDRAM驱动7寸屏可不可行,很久没发帖了,特来请大神们给点建议?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2014-10-16 17:35:27 | 显示全部楼层
7寸的不用SDRAM缓存不够,怎么不用24位的呢

出0入8汤圆

发表于 2014-10-16 17:52:37 | 显示全部楼层
谁定的方案找谁,不做个验证就画板?
还是需要sdram做缓存的

出0入0汤圆

发表于 2014-10-16 17:59:06 | 显示全部楼层
2.4寸用16位内部RAM做缓存还是够用,也只能用单层

出0入90汤圆

发表于 2014-10-16 18:37:52 | 显示全部楼层
用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊

出0入0汤圆

发表于 2014-10-16 18:42:23 | 显示全部楼层
honami520 发表于 2014-10-16 18:37
用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊 ...

有见地~~~不能见钱就看眼

出0入93汤圆

发表于 2014-10-16 19:22:14 | 显示全部楼层
LZ的屏的分辨率是多少?480*234的可行,800*480、1024*600的就别想了

出0入0汤圆

发表于 2014-10-16 21:22:48 来自手机 | 显示全部楼层
7寸的估计是800*480的

出0入4汤圆

 楼主| 发表于 2014-10-17 09:10:00 | 显示全部楼层
czg1411 发表于 2014-10-16 17:35
7寸的不用SDRAM缓存不够,怎么不用24位的呢

是我太草率了,STM32F429的RGB只有22位,R0跟R1没有

出0入0汤圆

发表于 2014-10-17 09:20:33 | 显示全部楼层
batou 发表于 2014-10-17 09:10
是我太草率了,STM32F429的RGB只有22位,R0跟R1没有

LQFP176封装的有

出0入4汤圆

 楼主| 发表于 2014-10-17 09:27:51 | 显示全部楼层

是的,你用过这个芯片吧,跟LPC1788比性能怎样?

出0入4汤圆

 楼主| 发表于 2014-10-17 09:28:52 | 显示全部楼层
liwei_jlu 发表于 2014-10-16 17:52
谁定的方案找谁,不做个验证就画板?
还是需要sdram做缓存的

是我们太草率,手头也没有相关硬件就没有做实验

出0入4汤圆

 楼主| 发表于 2014-10-17 09:31:19 | 显示全部楼层
czg1411 发表于 2014-10-16 17:59
2.4寸用16位内部RAM做缓存还是够用,也只能用单层

是的

出0入4汤圆

 楼主| 发表于 2014-10-17 09:32:20 | 显示全部楼层
takashiki 发表于 2014-10-16 19:22
LZ的屏的分辨率是多少?480*234的可行,800*480、1024*600的就别想了

800*480的,这么说只能重新画板打样了

出0入4汤圆

 楼主| 发表于 2014-10-17 09:32:42 | 显示全部楼层
czg1411 发表于 2014-10-16 21:22
7寸的估计是800*480的

对滴

出0入4汤圆

 楼主| 发表于 2014-10-17 09:35:33 | 显示全部楼层
honami520 发表于 2014-10-16 18:37
用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊 ...

是啊,时间就是金钱,不能拖久了,已经叫硬工重新画板了

出0入0汤圆

发表于 2014-10-17 09:36:52 | 显示全部楼层
行不行在方案论证的时候就能确定啊。

出0入4汤圆

 楼主| 发表于 2014-10-17 09:38:40 | 显示全部楼层
感谢各位大大的提醒和建议,已经加入2M SDRAM,希望后面调试能一帆风顺

出0入4汤圆

 楼主| 发表于 2014-10-17 09:40:40 | 显示全部楼层
big_cat 发表于 2014-10-17 09:36
行不行在方案论证的时候就能确定啊。

小公司,各方面都不完善,你懂的

出0入0汤圆

发表于 2014-10-17 09:43:21 | 显示全部楼层
batou 发表于 2014-10-17 09:27
是的,你用过这个芯片吧,跟LPC1788比性能怎样?

比LPC1788快,而且还有DMA2D。就是价格高了一点。

出0入90汤圆

发表于 2014-10-17 10:17:41 | 显示全部楼层
batou 发表于 2014-10-17 09:40
小公司,各方面都不完善,你懂的

哦,是公司项目啊!那应该没什么问题的。2MB的SDRAM稍微少了点!勉强满足需要把!
最好用稍微大一点的SDRAM,把用到的图片上电后都放到SDRAM里面去。需要用的时候,可以快速的刷新图片。
比你再从外部FLASH里面读出来快多了。

出0入0汤圆

发表于 2014-10-17 10:28:32 | 显示全部楼层
7寸屏TFT驱动,不知道F4能不能胜任,等楼主试验。

出0入4汤圆

 楼主| 发表于 2014-10-17 10:32:21 | 显示全部楼层
so_so_so_so 发表于 2014-10-17 10:28
7寸屏TFT驱动,不知道F4能不能胜任,等楼主试验。

我的是18bitRGB数字信号经过GM7123转成模拟的VGA信号啊,也是7寸屏,应该差不多

出0入0汤圆

发表于 2014-10-17 10:33:00 | 显示全部楼层
一直想试试,一直没去弄,坐等楼主实验

出0入4汤圆

 楼主| 发表于 2014-10-17 11:03:03 | 显示全部楼层
honami520 发表于 2014-10-17 10:17
哦,是公司项目啊!那应该没什么问题的。2MB的SDRAM稍微少了点!勉强满足需要把!
最好用稍微大一点的SDR ...

是啊,跟8M位字节的差不多,到时不行可以换的,用到的图片上电后就放到SDRAM里,这真是个好方法啊,速度肯定快多了

出0入0汤圆

发表于 2014-10-17 12:32:06 | 显示全部楼层
batou 发表于 2014-10-17 11:03
是啊,跟8M位字节的差不多,到时不行可以换的,用到的图片上电后就放到SDRAM里,这真是个好方法啊,速度 ...

各种图片资源放在SDRAM中是正常的处理方式。WINCE,LINUX系统也都是上电从FLASH中复制到SDRAM中后,在SDRAM中才启动运行的,速度就很快了。

出0入0汤圆

发表于 2014-10-20 15:12:01 | 显示全部楼层
SDRAM的价格应该很便宜,你用2M不见得比8M的便宜,还是大点好。

出0入4汤圆

 楼主| 发表于 2014-10-21 09:58:41 | 显示全部楼层
baonng 发表于 2014-10-20 15:12
SDRAM的价格应该很便宜,你用2M不见得比8M的便宜,还是大点好。

是的,就用8M的了

出0入4汤圆

 楼主| 发表于 2014-10-21 09:59:56 | 显示全部楼层
老板真的下了血本,80多RMB的芯片下了5块,我都替他不舍

出0入0汤圆

发表于 2014-10-21 10:02:13 | 显示全部楼层
honami520 发表于 2014-10-16 18:37
用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊 ...

我觉得,没做过敢接是很正常的事情,至少在学校里面就是这样的。外面公司说要做什么,都是先接过来再说的~~社会就是这样。。。当然,我们都明白,双方都没好处,可是有钱赚,谁在乎。

出0入0汤圆

发表于 2014-10-21 10:05:01 | 显示全部楼层
不用SDRAM做缓存推7寸屏?自己计算一下啊,sram 256k都用完都不够坐一层的缓存。

出0入90汤圆

发表于 2014-10-21 11:08:21 | 显示全部楼层
Nexus 发表于 2014-10-21 10:02
我觉得,没做过敢接是很正常的事情,至少在学校里面就是这样的。外面公司说要做什么,都是先接过来再说的 ...

并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N多项目的实际经验来说,有些比较复杂的东西,但是之前没有类似经验的,把握不是太大的。
这种项目接了,最后很有可能就是做不出来的。或者本身一个月的,最后花了3个月还搞不定。这个时候,你就亏大了。因为,你最多拿到一点点定金。客户不是傻子,不会一开始就给你很多钱的。
这个浪费掉得2-3个月时间,去做搞的定的事情,最后赚得多,效果更好。
一句话总结:在自己能力范围内的,把握大的可接。超出太多的,放弃其实更划算。

出0入0汤圆

发表于 2014-10-21 11:13:50 | 显示全部楼层
跟着前辈学习~以前都不懂弄缓存……

出0入0汤圆

发表于 2014-10-21 11:32:41 | 显示全部楼层
honami520 发表于 2014-10-21 11:08
并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N ...

恩,很实在。我也只是说明下,学校里面的状况。老板接项目从来不看会不会,因为他都不会,而且他可以逼学生做出来。所以只要有钱,都会接。

出0入4汤圆

 楼主| 发表于 2014-10-21 13:37:48 | 显示全部楼层
nongxiaoming 发表于 2014-10-21 10:05
不用SDRAM做缓存推7寸屏?自己计算一下啊,sram 256k都用完都不够坐一层的缓存。 ...

是的啊,PCB已经来了,驱动2.4寸屏跟7寸屏除了缓存不一样,其他应该都一样吧

出0入4汤圆

 楼主| 发表于 2014-10-21 13:38:49 | 显示全部楼层
honami520 发表于 2014-10-21 11:08
并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N ...

说的太对了

出0入0汤圆

发表于 2014-10-21 16:41:37 来自手机 | 显示全部楼层
哈哈,我用新唐N329做八寸屏,效果好,性价比更高

出0入0汤圆

发表于 2014-10-21 16:48:40 | 显示全部楼层
batou 发表于 2014-10-17 09:10
是我太草率了,STM32F429的RGB只有22位,R0跟R1没有

你可以用18位(6:6:6)或者16位(5:6:5)也是可以的,去掉地位,只要高位就可以了

出0入4汤圆

 楼主| 发表于 2014-10-22 13:30:51 | 显示全部楼层
hilam 发表于 2014-10-21 16:41
哈哈,我用新唐N329做八寸屏,效果好,性价比更高

老板选的芯片,么有办法

出0入4汤圆

 楼主| 发表于 2014-10-22 13:31:30 | 显示全部楼层
ljuneLCD 发表于 2014-10-21 16:48
你可以用18位(6:6:6)或者16位(5:6:5)也是可以的,去掉地位,只要高位就可以了

是的,就是用18位(6:6:6)

出0入0汤圆

发表于 2014-10-22 14:02:41 | 显示全部楼层
刚画过这个板子 stm32f429+128m美光的sdram+1g美光nand+4.3+5.6裸屏液晶

出0入4汤圆

 楼主| 发表于 2014-10-22 15:32:25 | 显示全部楼层
study_hardware 发表于 2014-10-22 14:02
刚画过这个板子 stm32f429+128m美光的sdram+1g美光nand+4.3+5.6裸屏液晶

厉害,1g的nand做什么用,U盘吗

出0入0汤圆

发表于 2014-10-22 20:47:16 | 显示全部楼层
batou 发表于 2014-10-22 15:32
厉害,1g的nand做什么用,U盘吗

1Gb 是比特 也就是128M,就是存放图片和病人的数据就差不多了

出0入0汤圆

发表于 2014-10-27 10:47:11 | 显示全部楼层
batou 发表于 2014-10-21 09:59
老板真的下了血本,80多RMB的芯片下了5块,我都替他不舍

STM32F429要80元么?好不好买啊?

出0入4汤圆

 楼主| 发表于 2014-10-27 11:34:39 | 显示全部楼层
fishhead 发表于 2014-10-27 10:47
STM32F429要80元么?好不好买啊?

还好吧,淘宝上就有

出0入4汤圆

 楼主| 发表于 2014-10-27 11:36:23 | 显示全部楼层
honami520 发表于 2014-10-21 11:08
并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N ...

请教一个问题,关于stm32f429驱动7寸屏显示的,如图片所示,为什么会出现一条条的蓝色条形呢,还有画的圆跟正方形尺寸都不太对,驱动代码是从官网的2.4寸屏的基础上改的,这些跟同步跟消隐信号配置有关系吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入90汤圆

发表于 2014-10-27 12:21:07 | 显示全部楼层
batou 发表于 2014-10-27 11:36
请教一个问题,关于stm32f429驱动7寸屏显示的,如图片所示,为什么会出现一条条的蓝色条形呢,还有画的圆 ...

应该是没关系!你的白色框能正常显示就说明了驱动是对的。
有一个地方可能需要注意一下。就是SDRAM的初始化。SDRAM和内部SRAM是有区别的。如果不初始化的话,它内部并不是全0。
官方的是2.4的屏,分辨率小。你现在7寸,最起码也是800*480,所以,我猜问题可能是出在这!
不过话说回来了。你直接去刷全屏单色不就马上知道答案了。

出0入0汤圆

发表于 2014-10-27 12:45:12 | 显示全部楼层
7寸,好吃力的感觉。。。

出0入20汤圆

发表于 2014-10-27 16:02:38 | 显示全部楼层
没有缓存很难驱动LCD。前段时间正好做了7寸驱动。可惜是客户的。不能随便公开。

出0入0汤圆

发表于 2014-10-27 17:16:52 | 显示全部楼层
效果怎样?

出0入4汤圆

 楼主| 发表于 2014-10-28 14:33:00 | 显示全部楼层
honami520 发表于 2014-10-27 12:21
应该是没关系!你的白色框能正常显示就说明了驱动是对的。
有一个地方可能需要注意一下。就是SDRAM的初始 ...

你说的很对,现在可以刷屏了,跑emwin看了下效果不怎么理想,还有如图所示右下角的进度条没显示出来,我调整过尺寸等参数都没有解决,不知哪里问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

 楼主| 发表于 2014-10-28 14:39:35 | 显示全部楼层
GodHunter 发表于 2014-10-27 12:45
7寸,好吃力的感觉。。。

还行吧,刷屏可以达到57M

出0入4汤圆

 楼主| 发表于 2014-10-28 14:45:34 | 显示全部楼层
mon51 发表于 2014-10-27 16:02
没有缓存很难驱动LCD。前段时间正好做了7寸驱动。可惜是客户的。不能随便公开。 ...

理解,你的是800X480的吗,我的也可以显示了,只是还有个问题,移植网上的emwin左下角的进度条还有部分显示不出来,我的行场同步等信号都是按手册上面配的,我这么配的你看对吗
#define  HSW            ((uint16_t)48)     /* Horizontal synchronization */
#define  HBP            ((uint16_t)40)      /* Horizontal back porch      */
#define  HFP            ((uint16_t)40)      /* Horizontal front porch     */
#define  VSW            ((uint16_t)3)     /* Vertical synchronization   */
#define  VBP            ((uint16_t)29)      /* Vertical back porch        */
#define  VFP            ((uint16_t)13)      /* Vertical front porch       */

  /* Configure horizontal synchronization width */     
  LTDC_InitStruct.LTDC_HorizontalSync = HSW-1;
  /* Configure vertical synchronization height */
  LTDC_InitStruct.LTDC_VerticalSync = VSW-1;
  /* Configure accumulated horizontal back porch */
  LTDC_InitStruct.LTDC_AccumulatedHBP = HSW+HBP-1;
  /* Configure accumulated vertical back porch */
  LTDC_InitStruct.LTDC_AccumulatedVBP = VSW+VBP-1;  
  /* Configure accumulated active width */  
  LTDC_InitStruct.LTDC_AccumulatedActiveW = LCD_PIXEL_WIDTH + HBP+HSW-1;
  /* Configure accumulated active height */
  LTDC_InitStruct.LTDC_AccumulatedActiveH = LCD_PIXEL_HEIGHT + VBP+VSW-1;
  /* Configure total width */
  LTDC_InitStruct.LTDC_TotalWidth = LCD_PIXEL_WIDTH + HBP + HFP+HSW-1;
  /* Configure total height */
  LTDC_InitStruct.LTDC_TotalHeigh = LCD_PIXEL_HEIGHT + VBP + VFP+VSW-1;

出0入4汤圆

 楼主| 发表于 2014-10-28 14:47:49 | 显示全部楼层

还不错哦

出0入0汤圆

发表于 2014-10-28 15:33:13 | 显示全部楼层
hilam 发表于 2014-10-21 16:41
哈哈,我用新唐N329做八寸屏,效果好,性价比更高

请问个人玩新唐N329如果购买芯片以及得到SDK?你是N329X 裸跑,还是上系统(Ucos or Linux)?

出0入0汤圆

发表于 2014-10-28 15:36:26 | 显示全部楼层
hilam 发表于 2014-10-21 16:41
哈哈,我用新唐N329做八寸屏,效果好,性价比更高

八寸的是800*600,24位色吗,刷新多少帧

出0入0汤圆

发表于 2014-10-28 15:40:34 | 显示全部楼层
新唐N329,看起来不错
主频:200~300MHZ
内置DDR2内存
LCD驱动(1028*768)JPEG硬解
带MPEG3/MF4/H.264

出0入0汤圆

发表于 2014-10-28 15:51:49 | 显示全部楼层
如果刷新速度有要求,没有SRAM作保证还是有点玄

出0入4汤圆

 楼主| 发表于 2014-10-28 15:53:52 | 显示全部楼层
cnxh 发表于 2014-10-28 15:40
新唐N329,看起来不错
主频:200~300MHZ
内置DDR2内存

还带硬解MPEG3?不知价格怎么样

出0入20汤圆

发表于 2014-10-28 16:29:56 | 显示全部楼层
batou 发表于 2014-10-28 14:45
理解,你的是800X480的吗,我的也可以显示了,只是还有个问题,移植网上的emwin左下角的进度条还有部分显 ...

你可以测试一下扫描范围是否达到800*480 ,那些参数,手册上不一定准。

出0入20汤圆

发表于 2014-10-28 16:32:38 | 显示全部楼层
//-----------------------------------------------------------------------------
//函数:void LCD_GPIOInit(void)
//输入:void
//输出:void
//描述:LCD GPIO初始化
//-----------------------------------------------------------------------------
void LCD_GPIOInit(void)
{ unsigned i;
  GPIO_InitTypeDef GPIO_InitStructure;
//----------------------------------------------------------------------------
// R3 -->  PH9 | G2 --> PH13 | B3 --> PG11 | VSYNC --> PI10 原
// R4 --> PH10 | G3 --> PH14 | B4 --> PG12 | HSYNC -->  PI9
// R5 --> PH11 | G4 --> PH15 | B5 -->  PI5 | DE    --> PF10
// R6 -->  PB1 | G5 -->  PI0 | B6 -->  PI6 | CLK   -->  PG7
// R7 -->  PG6 | G6 -->  PI1 | B7 -->  PI7 | BL_EN --> PG13
//             | G7 -->  PI2 |
       
//----------------------------------------------------------------------------
// R3 -->  PH9 | G2 --> PH13 | B3 --> PG11 | VSYNC -->  PI9 现     为何与原来相反!!!!
// R4 --> PH10 | G3 --> PH14 | B4 -->  PI4 | HSYNC --> PI10
// R5 --> PH11 | G4 --> PH15 | B5 -->  PI5 | DE    --> PF10
// R6 --> PH12 | G5 -->  PI0 | B6 -->  PI6 | CLK   -->  PG7
// R7 -->  PG6 | G6 -->  PI1 | B7 -->  PI7 | LCD_BM-->  PH6
//             | G7 -->  PI2 |
// 使能GPIO时钟
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOG
                         | RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_GPIOI, ENABLE);
       
       
  LCD_HSYNCOn();
  LCD_VSYNCOn();
                LCD_U_DOn();
//                LCD_U_DOff();
//                LCD_L_ROn();
                LCD_L_ROff();
                LCD_RESETOn(); for(i=0;i<10000000;i++);
               
  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;
       
// PFxx设置为LCD[1  00]
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource10, GPIO_AF_LTDC);     //LCD_DE
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
  
// PGxx设置为LCD[1  02]
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource7,  GPIO_AF_LTDC);     //LCD_CLK               
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource6,  GPIO_AF_LTDC);     //LCD_R7
  GPIO_PinAFConfig(GPIOG, GPIO_PinSource11, GPIO_AF_LTDC);     //LCD_B3
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 |GPIO_Pin_7 | GPIO_Pin_11;
  GPIO_Init(GPIOG, &GPIO_InitStructure);

// PHxx设置为LCD[0  07]
  GPIO_PinAFConfig(GPIOH, GPIO_PinSource9,  GPIO_AF_LTDC);     //LCD_R3
  GPIO_PinAFConfig(GPIOH, GPIO_PinSource10, GPIO_AF_LTDC);     //LCD_R4
  GPIO_PinAFConfig(GPIOH, GPIO_PinSource11, GPIO_AF_LTDC);     //LCD_R5
  GPIO_PinAFConfig(GPIOH, GPIO_PinSource12, GPIO_AF_LTDC);     //LCD_R6
  GPIO_PinAFConfig(GPIOH, GPIO_PinSource13, GPIO_AF_LTDC);     //LCD_G2
  GPIO_PinAFConfig(GPIOH, GPIO_PinSource14, GPIO_AF_LTDC);     //LCD_G3
  GPIO_PinAFConfig(GPIOH, GPIO_PinSource15, GPIO_AF_LTDC);     //LCD_G4
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_9  | GPIO_Pin_10         | GPIO_Pin_11   
                                            | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14
                                                                                                                                                                                                                                                | GPIO_Pin_15;
  GPIO_Init(GPIOH, &GPIO_InitStructure);

// PIxx设置为LCD[0  07]
//7+2
  GPIO_PinAFConfig(GPIOI, GPIO_PinSource0,  GPIO_AF_LTDC);     //LCD_G5
  GPIO_PinAFConfig(GPIOI, GPIO_PinSource1,  GPIO_AF_LTDC);     //LCD_G6
  GPIO_PinAFConfig(GPIOI, GPIO_PinSource2,  GPIO_AF_LTDC);     //LCD_G7
  GPIO_PinAFConfig(GPIOI, GPIO_PinSource4,  GPIO_AF_LTDC);     //LCD_B4
  GPIO_PinAFConfig(GPIOI, GPIO_PinSource5,  GPIO_AF_LTDC);     //LCD_B5
  GPIO_PinAFConfig(GPIOI, GPIO_PinSource6,  GPIO_AF_LTDC);     //LCD_B6
  GPIO_PinAFConfig(GPIOI, GPIO_PinSource7,  GPIO_AF_LTDC);     //LCD_B7
  GPIO_PinAFConfig(GPIOI, GPIO_PinSource9,  GPIO_AF_LTDC);     //LCD_VSYNC
  GPIO_PinAFConfig(GPIOI, GPIO_PinSource10, GPIO_AF_LTDC);     //LCD_HSYNC
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0  | GPIO_Pin_1  | GPIO_Pin_2
                                            | GPIO_Pin_4  | GPIO_Pin_5  | GPIO_Pin_6
                              | GPIO_Pin_7  | GPIO_Pin_9  | GPIO_Pin_10;
  GPIO_Init(GPIOI, &GPIO_InitStructure);
  /* BL_EN pin configuration */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
  GPIO_Init(GPIOH, &GPIO_InitStructure);
       
        //_________________________________________________________________________________
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8; //添加PH8!!!!!!
  GPIO_Init(GPIOH, &GPIO_InitStructure);
               
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_12 ; //添加PA!!!!!!
  GPIO_Init(GPIOA, &GPIO_InitStructure);
       
         LCD_RESETOff();
                for(i=0;i<100000;i++);
                LCD_RESETOn();
}
//-----------------------------------------------------------------------------
//函数:void LCD_GPIOInit(void)
//输入:void
//输出:void
//描述:LCD初始化
//-----------------------------------------------------------------------------
void LCD_Init(void)
{ //unsigned short *
  LTDC_InitTypeDef       LTDC_InitStruct;
  LTDC_Layer_InitTypeDef LTDC_Layer_InitStruct;
  LTDC_Layer_TypeDef     LTDC_Layerx;  
       
  /* IO口初始化 */
  LCD_GPIOInit();
       
  LCD_DisplayOff();
  /* 使能LCD时钟 */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_LTDC, ENABLE);
  /* 使能DMA时钟*/
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2D, ENABLE);
       
  /* 水平同步信号---低电平有效 */
  LTDC_InitStruct.LTDC_HSPolarity = LTDC_HSPolarity_AL;     
  /* 垂直同步信号---低电平有效 */  
  LTDC_InitStruct.LTDC_VSPolarity = LTDC_VSPolarity_AL;     
  /* 数据使能信号---低电平有效 */
  LTDC_InitStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL;     
  /* 像素时钟配置--- */
  LTDC_InitStruct.LTDC_PCPolarity = LTDC_PCPolarity_IPC;
        /* LCD背光设置 */
  LTDC_InitStruct.LTDC_BackgroundRedValue = 0;            
  LTDC_InitStruct.LTDC_BackgroundGreenValue = 0;         
  LTDC_InitStruct.LTDC_BackgroundBlueValue = 0;         
  /*
   ****************************************************************************
   *PLLSAI_VCO = HSE*PLLSAI_N / PLL_M = 8 * 192 / 8 = 192MHz
   *PLLLCDCLK = PLLSAI_VCO / PLLSAI_R = 192 / 3 = 64 Mhz
   *LTDC clock frequency = PLLLCDCLK / RCC_PLLSAIDivR = 64 / 2 = 32 Mhz
   ****************************************************************************
   */
  RCC_PLLSAIConfig(192, 7, 3);
  RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div2);//RCC_PLLSAIDivR_Div2
  /* 使能PLLSAI时钟 */
  RCC_PLLSAICmd(ENABLE);
  /* 等待PLLSAI时钟 */
  while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET){}
  /*  */
  /* Timing configuration */  
  /* Configure horizontal synchronization width */     
  LTDC_InitStruct.LTDC_HorizontalSync = 39;//40-1
  /* Configure vertical synchronization height */
  LTDC_InitStruct.LTDC_VerticalSync = 19;//20-1
  /* Configure accumulated horizontal back porch */
  LTDC_InitStruct.LTDC_AccumulatedHBP = (46-1);
  /* Configure accumulated vertical back porch */
  LTDC_InitStruct.LTDC_AccumulatedVBP = (23-1);  
  /* Configure accumulated active width */  
  LTDC_InitStruct.LTDC_AccumulatedActiveW = (46+LCD_PIXEL_WIDTH-1);
  /* Configure accumulated active height */
  LTDC_InitStruct.LTDC_AccumulatedActiveH = (23+LCD_PIXEL_HEIGHT-1);
  /* Configure total width */
  LTDC_InitStruct.LTDC_TotalWidth = (46+LCD_PIXEL_WIDTH+210-1);
  /* Configure total height */
  LTDC_InitStruct.LTDC_TotalHeigh = (23+LCD_PIXEL_HEIGHT+22-1);
  LTDC_Init(&LTDC_InitStruct);
               
  LTDC_Layer_InitStruct.LTDC_HorizontalStart = 46;
  LTDC_Layer_InitStruct.LTDC_HorizontalStop = (LCD_PIXEL_WIDTH + 46 - 1);
  LTDC_Layer_InitStruct.LTDC_VarticalStart = 23;
  LTDC_Layer_InitStruct.LTDC_VerticalStop = (LCD_PIXEL_HEIGHT +23 - 1);       

  /* Pixel Format configuration*/            
  LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_RGB565;
  /* Alpha constant (255 totally opaque) */
  LTDC_Layer_InitStruct.LTDC_ConstantAlpha = 255;
  /* Default Color configuration (configure A,R,G,B component values) */         
  LTDC_Layer_InitStruct.LTDC_DefaultColorBlue = 0;        
  LTDC_Layer_InitStruct.LTDC_DefaultColorGreen = 0;      
  LTDC_Layer_InitStruct.LTDC_DefaultColorRed = 0;         
  LTDC_Layer_InitStruct.LTDC_DefaultColorAlpha = 0;
  /* Configure blending factors */      
  LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_CA;   
  LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_CA;
  /* the length of one line of pixels in bytes + 3 then :
     Line Lenth = Active high width x number of bytes per pixel + 3
     Active high width         = LCD_PIXEL_WIDTH
     number of bytes per pixel = 2    (pixel_format : RGB565)
  */
  LTDC_Layer_InitStruct.LTDC_CFBLineLength = ((LCD_PIXEL_WIDTH * 2) + 3);
  /*  the pitch is the increment from the start of one line of pixels to the
      start of the next line in bytes, then :
      Pitch = Active high width x number of bytes per pixel     
  */
  LTDC_Layer_InitStruct.LTDC_CFBPitch = (LCD_PIXEL_WIDTH * 2);
  /* configure the number of lines */  
  LTDC_Layer_InitStruct.LTDC_CFBLineNumber = LCD_PIXEL_HEIGHT;

  /* Input Address configuration */  
                LTDC_Layer_InitStruct.LTDC_CFBStartAdress =(uint32_t)gRam1;
  LTDC_LayerInit(LTDC_Layer1, &LTDC_Layer_InitStruct);

  /* Configure Layer2 */
  LTDC_Layer_InitStruct.LTDC_CFBStartAdress = (uint32_t)gRam2;
  LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_PAxCA;   
  LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_PAxCA;
  LTDC_LayerInit(LTDC_Layer2, &LTDC_Layer_InitStruct);
       
  LTDC_ReloadConfig(LTDC_IMReload);
  
  /* Enable foreground & background Layers */
  LTDC_LayerCmd(LTDC_Layer1, ENABLE);
// LTDC_LayerCmd(LTDC_Layer2, ENABLE);//ENABLE
  LTDC_ReloadConfig(LTDC_IMReload);
       
/* dithering activation */
  LTDC_DitherCmd(ENABLE);
/* Enable the LTDC */
  //LTDC_Cmd(ENABLE);

        LCD_DisplayOn();
        LCD_LTDC_Layer1_SetTransparency(255); //127
//        LCD_LTDC_Layer2_SetTransparency(127); //127
}

//---------------------------------------------------
//函数:void LCD_DisplayOn(void)[PH06]
//描述:LCD显示开启,使能背光,使能电源
void LCD_DisplayOn(void)
{ GPIO_SetBits(GPIOH, GPIO_Pin_6);
  LTDC_Cmd(ENABLE); /* display ON */
}
//函数:void LCD_DisplayOff(void)
//描述:LCD显示关闭,失能背光,失能电源
void LCD_DisplayOff(void)
{ GPIO_ResetBits(GPIOH, GPIO_Pin_6);
         LTDC_Cmd(DISABLE);
}
//---------------------------------------------------

出0入0汤圆

发表于 2014-10-28 19:31:18 来自手机 | 显示全部楼层
lpc1788+sdram+flash+emwin+7寸屏, 性能效果都是杠杠的。

出0入4汤圆

 楼主| 发表于 2014-10-29 08:51:09 | 显示全部楼层
mon51 发表于 2014-10-28 16:32
//-----------------------------------------------------------------------------
//函数:void LCD_GPI ...

可能屏不一样,你的驱动我用不了,你有没有用emwin呢,要使显示反转过来有函数可以设置吗

出0入0汤圆

发表于 2014-11-5 13:51:18 | 显示全部楼层

你的GUI呢楼主可不厚道

出0入0汤圆

发表于 2014-11-11 18:30:44 | 显示全部楼层
hilam 发表于 2014-10-21 16:41
哈哈,我用新唐N329做八寸屏,效果好,性价比更高

用这个芯片需要什么条件吗?

出0入0汤圆

发表于 2014-11-11 20:40:27 来自手机 | 显示全部楼层
fsmc初始化太麻烦,那些时序参数,一不小心就弄错,都是只能拷贝过来,

出0入4汤圆

 楼主| 发表于 2014-11-12 08:59:57 | 显示全部楼层
zj2003 发表于 2014-10-28 19:31
lpc1788+sdram+flash+emwin+7寸屏, 性能效果都是杠杠的。

有没有用上位机开发, 如ucguibuilder?

出0入4汤圆

 楼主| 发表于 2014-11-12 09:01:25 | 显示全部楼层
yuwangwangyu 发表于 2014-11-5 13:51
你的GUI呢楼主可不厚道

我的还有问题啊 尺寸 分辨率都还没对上

出0入0汤圆

发表于 2014-11-12 09:56:23 | 显示全部楼层
honami520 发表于 2014-10-21 11:08
并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N ...

赞 一个 很有道理,

出0入0汤圆

发表于 2014-11-12 10:11:45 | 显示全部楼层
batou 发表于 2014-11-12 09:01
我的还有问题啊 尺寸 分辨率都还没对上

有没可能是 EMWIN初始化的时候LCD没有设置对?我也是参考着网上EMWIN教程搞的 lCD 不过是在F407上面 FMSC接口,

出0入0汤圆

发表于 2014-11-12 10:30:02 | 显示全部楼层
为嘛不先买个屏幕试试呢

出0入4汤圆

 楼主| 发表于 2014-11-12 10:42:45 | 显示全部楼层
fenglove 发表于 2014-11-12 10:11
有没可能是 EMWIN初始化的时候LCD没有设置对?我也是参考着网上EMWIN教程搞的 lCD 不过是在F407上面 FMSC ...

我也一直在怀疑LTDC的行场同步跟前后沿参数的问题,我按手册上的配置然后也修改试了很多次,但是点还是没有对上,尤其刷新一屏时出现杂乱的颜色闪动,肿么办 呜呜~~~~(>_<)~~~~  

出0入0汤圆

发表于 2014-11-12 10:43:09 | 显示全部楼层
同意楼上的看法 可以自己动手去试一试

出0入4汤圆

 楼主| 发表于 2014-11-12 10:52:22 | 显示全部楼层
yuanshanhen 发表于 2014-11-12 10:30
为嘛不先买个屏幕试试呢

现在已经在试了,不过分辨率不对

出0入4汤圆

 楼主| 发表于 2014-11-12 11:02:29 | 显示全部楼层
tiger2023 发表于 2014-11-12 10:43
同意楼上的看法 可以自己动手去试一试

已经在试了,分辨率不对啊,你看得出来哪里的问题吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-11-13 11:13:31 | 显示全部楼层
顶一个,正准备研究这个

出0入0汤圆

发表于 2014-11-13 11:21:11 | 显示全部楼层
好东西,跟踪研究进展

出0入0汤圆

发表于 2014-11-13 12:56:26 | 显示全部楼层
慢慢调,别急,按说明一步一步来

出0入0汤圆

发表于 2014-11-13 20:06:58 | 显示全部楼层
也想用类似方案,不知道效果怎么样?

出0入4汤圆

 楼主| 发表于 2014-11-14 15:43:09 | 显示全部楼层
yuanshanhen 发表于 2014-11-13 12:56
慢慢调,别急,按说明一步一步来

我也想啊,可是。。你懂的 总有人逼着你急

出0入4汤圆

 楼主| 发表于 2014-11-14 15:47:29 | 显示全部楼层
heaijun 发表于 2014-11-13 20:06
也想用类似方案,不知道效果怎么样?

调通了的话效果肯定很好,杠杠滴

出10入0汤圆

发表于 2014-11-14 19:47:36 来自手机 | 显示全部楼层
新唐N329价格多少????

出0入0汤圆

发表于 2014-11-14 21:31:12 | 显示全部楼层
留个MARK,学习.

出0入4汤圆

 楼主| 发表于 2014-11-15 13:01:43 | 显示全部楼层
终于正常了,按我前面的配置就行,原来是硬件上面的问题,唉,坑死爹了,感谢各位坛友大大的热心帮助 非常感谢

出0入0汤圆

发表于 2014-11-25 14:15:21 | 显示全部楼层
4.3寸480x272没有SDRAM可以搞不?

出0入0汤圆

发表于 2014-11-25 18:26:45 | 显示全部楼层
800*480,RA8875驱动也可以呀

出0入0汤圆

发表于 2014-11-25 23:20:32 | 显示全部楼层
有分辨率之类的吗?可以算下么!

出0入0汤圆

发表于 2014-11-27 02:25:17 | 显示全部楼层
用2416的话80块钱CPU+nand+ddr 全搞定 就是不好焊接哎~~ 莫老大推荐的那个片子不错

出0入0汤圆

发表于 2015-4-29 16:42:12 | 显示全部楼层
batou 发表于 2014-10-28 14:33
你说的很对,现在可以刷屏了,跑emwin看了下效果不怎么理想,还有如图所示右下角的进度条没显示出来,我 ...

楼主是不是做了什么优化,我的429驱动480x272的4.3寸屏每秒打点数才19181000

出100入101汤圆

发表于 2015-4-30 07:30:20 | 显示全部楼层
实时性要求不高的话,买核心板,上linux可能更好些!

出0入0汤圆

发表于 2015-4-30 09:01:58 | 显示全部楼层
batou 发表于 2014-11-15 13:01
终于正常了,按我前面的配置就行,原来是硬件上面的问题,唉,坑死爹了,感谢各位坛友大大的热心帮助 非常 ...

硬件上什么问题呢?

你用的是144脚的吗?

出0入4汤圆

 楼主| 发表于 2015-5-4 17:35:41 | 显示全部楼层
heitu103 发表于 2014-11-25 14:15
4.3寸480x272没有SDRAM可以搞不?

不好意思,到现在才回复,假设RGB是565格式即每个像素2byte,则480x272需要的内存空间是480*272*2/1024=255K,而这款芯片内存也就这么大,所以就算可以也够呛的

出0入4汤圆

 楼主| 发表于 2015-5-4 17:38:34 | 显示全部楼层
kinsno 发表于 2015-4-30 09:01
硬件上什么问题呢?

你用的是144脚的吗?

是的,MCU跟SDRAM的走线尽量等长,还有时钟线要加个电容

出0入4汤圆

 楼主| 发表于 2015-5-4 17:41:59 | 显示全部楼层
heitu103 发表于 2015-4-29 16:42
楼主是不是做了什么优化,我的429驱动480x272的4.3寸屏每秒打点数才19181000

没有优化,我开始用的是全彩格式

出0入0汤圆

发表于 2015-5-4 21:17:50 | 显示全部楼层
honami520 发表于 2014-10-16 18:37
用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊 ...

支持

说的有道理

出0入0汤圆

发表于 2015-5-4 22:55:26 | 显示全部楼层
batou 发表于 2015-5-4 17:38
是的,MCU跟SDRAM的走线尽量等长,还有时钟线要加个电容

我一直以为它也得象LPC1788一样搞一个208脚才能带得动呢;
SDRAM等长,如果在99SE里面还是不好搞的,如果在阿丽哥里面那是相当的好搞;看啥软件吧;
只是144脚,能同时接SDRAM和RGB565的TFT吗?
如果能同时接这两个器件,是否方便在不透露公司机密的前提下上个原理图参考一下;

出0入0汤圆

发表于 2015-5-6 07:59:19 | 显示全部楼层
本帖最后由 shouqiang_zhang 于 2015-5-6 08:03 编辑
batou 发表于 2015-5-4 17:41
没有优化,我开始用的是全彩格式


我也想用439的LTDC驱动7寸, 准备画板了, 你用的效果怎么样? 可以介绍下吗? 有没有使用fsmc的方式快?

出0入0汤圆

发表于 2015-5-6 08:05:22 | 显示全部楼层
shouqiang_zhang 发表于 2015-5-6 07:59
我也想用439的LTDC驱动7寸, 准备画板了, 你用的效果怎么样? 可以介绍下吗? 有没有使用fsmc的方式快? ...

你的概念错了,一般大屏幕,都是RGB或LVDS接口,不能用FSMC,它不能和SDRAM或者NANDFLASH一样挂在总线上的;
如果你喜欢用FSMC可以用一个RA8875来转;

出0入0汤圆

发表于 2015-5-21 17:10:15 | 显示全部楼层
kinsno 发表于 2015-5-4 22:55
我一直以为它也得象LPC1788一样搞一个208脚才能带得动呢;
SDRAM等长,如果在99SE里面还是不好搞的,如果 ...

STM32F429Disc就是SDRAM+RGB屏的,大家都是参照那个来的吧

出0入0汤圆

发表于 2015-5-21 17:11:01 | 显示全部楼层
kinsno 发表于 2015-5-4 22:55
我一直以为它也得象LPC1788一样搞一个208脚才能带得动呢;
SDRAM等长,如果在99SE里面还是不好搞的,如果 ...

还有个工具STM32CUBE MX可以直接生成引脚分配图
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 21:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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