STM32F429驱动7寸屏
最近接到一个新案子,需要驱动7寸屏,选择的MCU是STM32F429,之前没有弄过,硬件已经画出来了,用STM32F429的LTDC(18bit)接GM7123输出RGB信号到7寸屏,没有用SDRAM作缓存,不知道可不可行?现在手头有块STM32F429 discovery版,驱动2.4寸屏都用了SDRAM作缓存的,不知道没有SDRAM驱动7寸屏可不可行,很久没发帖了,特来请大神们给点建议? 7寸的不用SDRAM缓存不够,怎么不用24位的呢 谁定的方案找谁,不做个验证就画板?还是需要sdram做缓存的 2.4寸用16位内部RAM做缓存还是够用,也只能用单层 用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊 honami520 发表于 2014-10-16 18:37
用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊 ...
有见地~~~不能见钱就看眼{:titter:} LZ的屏的分辨率是多少?480*234的可行,800*480、1024*600的就别想了 7寸的估计是800*480的 czg1411 发表于 2014-10-16 17:35
7寸的不用SDRAM缓存不够,怎么不用24位的呢
是我太草率了,STM32F429的RGB只有22位,R0跟R1没有 batou 发表于 2014-10-17 09:10
是我太草率了,STM32F429的RGB只有22位,R0跟R1没有
LQFP176封装的有 czg1411 发表于 2014-10-17 09:20
LQFP176封装的有
是的,你用过这个芯片吧,跟LPC1788比性能怎样? liwei_jlu 发表于 2014-10-16 17:52
谁定的方案找谁,不做个验证就画板?
还是需要sdram做缓存的
是我们太草率,手头也没有相关硬件就没有做实验 czg1411 发表于 2014-10-16 17:59
2.4寸用16位内部RAM做缓存还是够用,也只能用单层
是的{:smile:} takashiki 发表于 2014-10-16 19:22
LZ的屏的分辨率是多少?480*234的可行,800*480、1024*600的就别想了
800*480的,这么说只能重新画板打样了 czg1411 发表于 2014-10-16 21:22
7寸的估计是800*480的
对滴{:smile:} honami520 发表于 2014-10-16 18:37
用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊 ...
是啊,时间就是金钱,不能拖久了,已经叫硬工重新画板了 行不行在方案论证的时候就能确定啊。 感谢各位大大的提醒和建议,已经加入2M SDRAM,希望后面调试能一帆风顺 big_cat 发表于 2014-10-17 09:36
行不行在方案论证的时候就能确定啊。
小公司,各方面都不完善,你懂的 batou 发表于 2014-10-17 09:27
是的,你用过这个芯片吧,跟LPC1788比性能怎样?
比LPC1788快,而且还有DMA2D。就是价格高了一点。 batou 发表于 2014-10-17 09:40
小公司,各方面都不完善,你懂的
哦,是公司项目啊!那应该没什么问题的。2MB的SDRAM稍微少了点!勉强满足需要把!
最好用稍微大一点的SDRAM,把用到的图片上电后都放到SDRAM里面去。需要用的时候,可以快速的刷新图片。
比你再从外部FLASH里面读出来快多了。 7寸屏TFT驱动,不知道F4能不能胜任,等楼主试验。 so_so_so_so 发表于 2014-10-17 10:28
7寸屏TFT驱动,不知道F4能不能胜任,等楼主试验。
我的是18bitRGB数字信号经过GM7123转成模拟的VGA信号啊,也是7寸屏,应该差不多 一直想试试,一直没去弄,坐等楼主实验 honami520 发表于 2014-10-17 10:17
哦,是公司项目啊!那应该没什么问题的。2MB的SDRAM稍微少了点!勉强满足需要把!
最好用稍微大一点的SDR ...
是啊,跟8M位字节的差不多,到时不行可以换的,用到的图片上电后就放到SDRAM里,这真是个好方法啊,速度肯定快多了 batou 发表于 2014-10-17 11:03
是啊,跟8M位字节的差不多,到时不行可以换的,用到的图片上电后就放到SDRAM里,这真是个好方法啊,速度 ...
各种图片资源放在SDRAM中是正常的处理方式。WINCE,LINUX系统也都是上电从FLASH中复制到SDRAM中后,在SDRAM中才启动运行的,速度就很快了。 SDRAM的价格应该很便宜,你用2M不见得比8M的便宜,还是大点好。 baonng 发表于 2014-10-20 15:12
SDRAM的价格应该很便宜,你用2M不见得比8M的便宜,还是大点好。
是的,就用8M的了 老板真的下了血本,80多RMB的芯片下了5块,我都替他不舍 honami520 发表于 2014-10-16 18:37
用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊 ...
我觉得,没做过敢接是很正常的事情,至少在学校里面就是这样的。外面公司说要做什么,都是先接过来再说的~~社会就是这样。。。当然,我们都明白,双方都没好处,可是有钱赚,谁在乎。 不用SDRAM做缓存推7寸屏?自己计算一下啊,sram 256k都用完都不够坐一层的缓存。 Nexus 发表于 2014-10-21 10:02
我觉得,没做过敢接是很正常的事情,至少在学校里面就是这样的。外面公司说要做什么,都是先接过来再说的 ...
并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N多项目的实际经验来说,有些比较复杂的东西,但是之前没有类似经验的,把握不是太大的。
这种项目接了,最后很有可能就是做不出来的。或者本身一个月的,最后花了3个月还搞不定。这个时候,你就亏大了。因为,你最多拿到一点点定金。客户不是傻子,不会一开始就给你很多钱的。
这个浪费掉得2-3个月时间,去做搞的定的事情,最后赚得多,效果更好。
一句话总结:在自己能力范围内的,把握大的可接。超出太多的,放弃其实更划算。 跟着前辈学习~以前都不懂弄缓存…… honami520 发表于 2014-10-21 11:08
并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N ...
恩,很实在。我也只是说明下,学校里面的状况。老板接项目从来不看会不会,因为他都不会,而且他可以逼学生做出来。所以只要有钱,都会接。 nongxiaoming 发表于 2014-10-21 10:05
不用SDRAM做缓存推7寸屏?自己计算一下啊,sram 256k都用完都不够坐一层的缓存。 ...
是的啊,PCB已经来了,驱动2.4寸屏跟7寸屏除了缓存不一样,其他应该都一样吧 honami520 发表于 2014-10-21 11:08
并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N ...
说的太对了{:handshake:} 哈哈,我用新唐N329做八寸屏,效果好,性价比更高 batou 发表于 2014-10-17 09:10
是我太草率了,STM32F429的RGB只有22位,R0跟R1没有
你可以用18位(6:6:6)或者16位(5:6:5)也是可以的,去掉地位,只要高位就可以了 hilam 发表于 2014-10-21 16:41
哈哈,我用新唐N329做八寸屏,效果好,性价比更高
老板选的芯片,么有办法 ljuneLCD 发表于 2014-10-21 16:48
你可以用18位(6:6:6)或者16位(5:6:5)也是可以的,去掉地位,只要高位就可以了
是的,就是用18位(6:6:6) 刚画过这个板子 stm32f429+128m美光的sdram+1g美光nand+4.3+5.6裸屏液晶 study_hardware 发表于 2014-10-22 14:02
刚画过这个板子 stm32f429+128m美光的sdram+1g美光nand+4.3+5.6裸屏液晶
厉害,1g的nand做什么用,U盘吗 batou 发表于 2014-10-22 15:32
厉害,1g的nand做什么用,U盘吗
1Gb 是比特 也就是128M,就是存放图片和病人的数据就差不多了 batou 发表于 2014-10-21 09:59
老板真的下了血本,80多RMB的芯片下了5块,我都替他不舍
STM32F429要80元么?好不好买啊? fishhead 发表于 2014-10-27 10:47
STM32F429要80元么?好不好买啊?
还好吧,淘宝上就有 honami520 发表于 2014-10-21 11:08
并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N ...
请教一个问题,关于stm32f429驱动7寸屏显示的,如图片所示,为什么会出现一条条的蓝色条形呢,还有画的圆跟正方形尺寸都不太对,驱动代码是从官网的2.4寸屏的基础上改的,这些跟同步跟消隐信号配置有关系吗 batou 发表于 2014-10-27 11:36
请教一个问题,关于stm32f429驱动7寸屏显示的,如图片所示,为什么会出现一条条的蓝色条形呢,还有画的圆 ...
应该是没关系!你的白色框能正常显示就说明了驱动是对的。
有一个地方可能需要注意一下。就是SDRAM的初始化。SDRAM和内部SRAM是有区别的。如果不初始化的话,它内部并不是全0。
官方的是2.4的屏,分辨率小。你现在7寸,最起码也是800*480,所以,我猜问题可能是出在这!
不过话说回来了。你直接去刷全屏单色不就马上知道答案了。 7寸,好吃力的感觉。。。 没有缓存很难驱动LCD。前段时间正好做了7寸驱动。可惜是客户的。不能随便公开。 效果怎样? honami520 发表于 2014-10-27 12:21
应该是没关系!你的白色框能正常显示就说明了驱动是对的。
有一个地方可能需要注意一下。就是SDRAM的初始 ...
你说的很对,现在可以刷屏了,跑emwin看了下效果不怎么理想,还有如图所示右下角的进度条没显示出来,我调整过尺寸等参数都没有解决,不知哪里问题 GodHunter 发表于 2014-10-27 12:45
7寸,好吃力的感觉。。。
还行吧,刷屏可以达到57M mon51 发表于 2014-10-27 16:02
没有缓存很难驱动LCD。前段时间正好做了7寸驱动。可惜是客户的。不能随便公开。 ...
理解,你的是800X480的吗,我的也可以显示了,只是还有个问题,移植网上的emwin左下角的进度条还有部分显示不出来,我的行场同步等信号都是按手册上面配的,我这么配的你看对吗
#defineHSW ((uint16_t)48) /* Horizontal synchronization */
#defineHBP ((uint16_t)40) /* Horizontal back porch */
#defineHFP ((uint16_t)40) /* Horizontal front porch */
#defineVSW ((uint16_t)3) /* Vertical synchronization */
#defineVBP ((uint16_t)29) /* Vertical back porch */
#defineVFP ((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;
阿文 发表于 2014-10-27 17:16
效果怎样?
还不错哦 hilam 发表于 2014-10-21 16:41
哈哈,我用新唐N329做八寸屏,效果好,性价比更高
请问个人玩新唐N329如果购买芯片以及得到SDK?你是N329X 裸跑,还是上系统(Ucos or Linux)? hilam 发表于 2014-10-21 16:41
哈哈,我用新唐N329做八寸屏,效果好,性价比更高
八寸的是800*600,24位色吗,刷新多少帧 新唐N329,看起来不错
主频:200~300MHZ
内置DDR2内存
LCD驱动(1028*768)JPEG硬解
带MPEG3/MF4/H.264
如果刷新速度有要求,没有SRAM作保证还是有点玄 cnxh 发表于 2014-10-28 15:40
新唐N329,看起来不错
主频:200~300MHZ
内置DDR2内存
还带硬解MPEG3?不知价格怎么样 batou 发表于 2014-10-28 14:45
理解,你的是800X480的吗,我的也可以显示了,只是还有个问题,移植网上的emwin左下角的进度条还有部分显 ...
你可以测试一下扫描范围是否达到800*480 ,那些参数,手册上不一定准。 //-----------------------------------------------------------------------------
//函数: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
GPIO_PinAFConfig(GPIOF, GPIO_PinSource10, GPIO_AF_LTDC); //LCD_DE
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_Init(GPIOF, &GPIO_InitStructure);
// PGxx设置为LCD
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
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
//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(<DC_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, <DC_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, <DC_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)
//描述: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);
}
//--------------------------------------------------- lpc1788+sdram+flash+emwin+7寸屏, 性能效果都是杠杠的。 mon51 发表于 2014-10-28 16:32
//-----------------------------------------------------------------------------
//函数:void LCD_GPI ...
可能屏不一样,你的驱动我用不了,你有没有用emwin呢,要使显示反转过来有函数可以设置吗 czg1411 发表于 2014-10-17 09:20
LQFP176封装的有
你的GUI呢楼主可不厚道{:curse:} hilam 发表于 2014-10-21 16:41
哈哈,我用新唐N329做八寸屏,效果好,性价比更高
用这个芯片需要什么条件吗? fsmc初始化太麻烦,那些时序参数,一不小心就弄错,都是只能拷贝过来, zj2003 发表于 2014-10-28 19:31
lpc1788+sdram+flash+emwin+7寸屏, 性能效果都是杠杠的。
有没有用上位机开发, 如ucguibuilder? yuwangwangyu 发表于 2014-11-5 13:51
你的GUI呢楼主可不厚道
我的还有问题啊 尺寸 分辨率都还没对上 honami520 发表于 2014-10-21 11:08
并不是说要完全都会!有些了解过,觉得把握大的,当然要接!总不可能什么都会了,才去做事吧!
不过根据N ...
赞 一个 很有道理, batou 发表于 2014-11-12 09:01
我的还有问题啊 尺寸 分辨率都还没对上
有没可能是 EMWIN初始化的时候LCD没有设置对?我也是参考着网上EMWIN教程搞的 lCD 不过是在F407上面 FMSC接口, 为嘛不先买个屏幕试试呢 fenglove 发表于 2014-11-12 10:11
有没可能是 EMWIN初始化的时候LCD没有设置对?我也是参考着网上EMWIN教程搞的 lCD 不过是在F407上面 FMSC ...
我也一直在怀疑LTDC的行场同步跟前后沿参数的问题,我按手册上的配置然后也修改试了很多次,但是点还是没有对上,尤其刷新一屏时出现杂乱的颜色闪动,肿么办 呜呜~~~~(>_<)~~~~ 同意楼上的看法 可以自己动手去试一试 yuanshanhen 发表于 2014-11-12 10:30
为嘛不先买个屏幕试试呢
现在已经在试了,不过分辨率不对 tiger2023 发表于 2014-11-12 10:43
同意楼上的看法 可以自己动手去试一试
已经在试了,分辨率不对啊,你看得出来哪里的问题吗 顶一个,正准备研究这个 好东西,跟踪研究进展 慢慢调,别急,按说明一步一步来 也想用类似方案,不知道效果怎么样?
yuanshanhen 发表于 2014-11-13 12:56
慢慢调,别急,按说明一步一步来
我也想啊,可是。。你懂的 总有人逼着你急 heaijun 发表于 2014-11-13 20:06
也想用类似方案,不知道效果怎么样?
调通了的话效果肯定很好,杠杠滴 新唐N329价格多少???? 留个MARK,学习. 终于正常了,按我前面的配置就行,原来是硬件上面的问题,唉,坑死爹了,感谢各位坛友大大的热心帮助 非常感谢{:handshake:} 4.3寸480x272没有SDRAM可以搞不? 800*480,RA8875驱动也可以呀 有分辨率之类的吗?可以算下么! 用2416的话80块钱CPU+nand+ddr 全搞定 就是不好焊接哎~~ 莫老大推荐的那个片子不错 batou 发表于 2014-10-28 14:33
你说的很对,现在可以刷屏了,跑emwin看了下效果不怎么理想,还有如图所示右下角的进度条没显示出来,我 ...
楼主是不是做了什么优化,我的429驱动480x272的4.3寸屏每秒打点数才19181000 实时性要求不高的话,买核心板,上linux可能更好些! batou 发表于 2014-11-15 13:01
终于正常了,按我前面的配置就行,原来是硬件上面的问题,唉,坑死爹了,感谢各位坛友大大的热心帮助 非常 ...
硬件上什么问题呢?
你用的是144脚的吗?
heitu103 发表于 2014-11-25 14:15
4.3寸480x272没有SDRAM可以搞不?
不好意思,到现在才回复,假设RGB是565格式即每个像素2byte,则480x272需要的内存空间是480*272*2/1024=255K,而这款芯片内存也就这么大,所以就算可以也够呛的 kinsno 发表于 2015-4-30 09:01
硬件上什么问题呢?
你用的是144脚的吗?
是的,MCU跟SDRAM的走线尽量等长,还有时钟线要加个电容 heitu103 发表于 2015-4-29 16:42
楼主是不是做了什么优化,我的429驱动480x272的4.3寸屏每秒打点数才19181000
没有优化,我开始用的是全彩格式 honami520 发表于 2014-10-16 18:37
用都没用过,也敢接!!!成功率稍微低了点。就算最后能成功,100%也会折腾不少时间的!双方都比较草率啊 ...
支持
说的有道理 batou 发表于 2015-5-4 17:38
是的,MCU跟SDRAM的走线尽量等长,还有时钟线要加个电容
我一直以为它也得象LPC1788一样搞一个208脚才能带得动呢;
SDRAM等长,如果在99SE里面还是不好搞的,如果在阿丽哥里面那是相当的好搞;看啥软件吧;
只是144脚,能同时接SDRAM和RGB565的TFT吗?
如果能同时接这两个器件,是否方便在不透露公司机密的前提下上个原理图参考一下; 本帖最后由 shouqiang_zhang 于 2015-5-6 08:03 编辑
batou 发表于 2015-5-4 17:41
没有优化,我开始用的是全彩格式
我也想用439的LTDC驱动7寸, 准备画板了, 你用的效果怎么样? 可以介绍下吗? 有没有使用fsmc的方式快? shouqiang_zhang 发表于 2015-5-6 07:59
我也想用439的LTDC驱动7寸, 准备画板了, 你用的效果怎么样? 可以介绍下吗? 有没有使用fsmc的方式快? ...
你的概念错了,一般大屏幕,都是RGB或LVDS接口,不能用FSMC,它不能和SDRAM或者NANDFLASH一样挂在总线上的;
如果你喜欢用FSMC可以用一个RA8875来转; kinsno 发表于 2015-5-4 22:55
我一直以为它也得象LPC1788一样搞一个208脚才能带得动呢;
SDRAM等长,如果在99SE里面还是不好搞的,如果 ...
STM32F429Disc就是SDRAM+RGB屏的,大家都是参照那个来的吧 kinsno 发表于 2015-5-4 22:55
我一直以为它也得象LPC1788一样搞一个208脚才能带得动呢;
SDRAM等长,如果在99SE里面还是不好搞的,如果 ...
还有个工具STM32CUBE MX可以直接生成引脚分配图
页:
[1]
2