完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
看到了f4自带的lcd的官方原理图,f4是内嵌的ili9341控制器,看了下初始化lcd 的过程 他是使用spi给ili9341传送指令和数据初始化lcd的,但是emwin是这样吗,emwin提供的几个接口函数式直接16位数据的形式操作ili9341的,这如何兼容。。。。不懂如何使用emwin的接口函数来操作9341了。。求大侠们明示。。
|
|
相关推荐
22个回答
|
|
什么方式驱动无所谓吧.........
你把屏幕的初始化函数放进emwin的lcd初始化里(在LCDConf.c中) 再把屏幕的画点函数写入emwin画点函数里(在GUIDRV_template.c中),可以的话再优化下template里面的函数就好了吧 |
|
|
|
印象中emwin文档中讲了如何通过SPI驱动屏幕的方法
|
|
|
|
哦,这样就行哇?我是吧f4中的写数据和写寄存器函数内容放在了emwin的 writedata 和writereg函数中。但是f4中的初始化中看到writedata和writereg函数居然是spi的,但是驱动屏幕是565格式的,,这有点乱了,难道点亮屏初始化时候用的spi然后正常写像素点是用的并口吗
|
|
|
|
f4的对lcd的初始化是用的spi方式,然后写像素点肯定不是spi的,所以不知道如何移植了。二楼的思路应该可以尝试的。谢谢一楼二楼。
|
|
|
|
565和是不是SPI无关,应该是SPI写了两个字节,只不过用函数将过程打包了。
|
|
|
|
新款已经没有GUIDRV_template.c,所有内容全部打包为lib了
|
|
|
|
全部打包?那画点函数和初始化函数放哪儿去?
|
|
|
|
初始化函数可以自行编写,参考STemWin的官方例程。驱动部分你要查STemWin的手册,里面包括了很多驱动器的驱动,调用即可
|
|
|
|
|
|
|
|
我用的是5.22的啊 是最新的 但是还是看到了这个文件。。里面有 writedata和writereg函数给用户自己填写的啊
|
|
|
|
他是使用spi发送的初始化时序和命令,但是点亮屏幕的565数据肯定不是spi发送的啊 所以不懂来请教大家的。
|
|
|
|
你从哪里判断565不是SPI的呢?
|
|
|
|
额 我看的是5.20的在工程项目里面确实没发现你说的这个文件。虽然在ST的官方代码里面有屏幕画点函数和读点函数以及后面的画直线圆,但实际单步调试中发现该部分代码并没有被用上,用到的只有初始化部分和writereg和writedata,即FSMC
|
|
|
|
关键我搞不懂。f4的ltdc是使用spi初始化的控制器 然后565格式的数据 是并口发出的。。。搞不懂了 要不先试试把f4例程的初始化代码放在emwin中吧 钠盐估计也点不亮的。。
|
|
|
|
是不是F429?有图纸下载吗
|
|
|
|
是429 是要原理图吗 原理图上的lcd是有565 接口 和spi接口 f4自带的例程都用了 官网可以下载到原理图 如果你不好找 加我q传给你 我的429discovery
|
|
|
|
好的 我下来看看 F429还未接触过
|
|
|
|
我找到的LTDC部分初始化,来自于最新版STemWin
[C] 纯文本查看 复制代码 static void LCD_LL_Init(uint32_t LayerIndex) { uint32_t xSize, ySize, BytesPerLine, BitsPerPixel, i; uint32_t Color; static uint32_t Is_Initialized; LTDC_InitTypeDef LTDC_InitStruct; LTDC_Layer_InitTypeDef LTDC_Layer_Init; LTDC_CLUT_InitTypeDef LTDC_CLUT_InitStruct; if (LayerIndex >= GUI_NUM_LAYERS) { return; } if (Is_Initialized == 0) { Is_Initialized = 1; /* Clock configuration */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2D, ENABLE); /* Enable the LTDC Clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_LTDC, ENABLE); /* Enable the DMA2D Clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2D, ENABLE); /* Configure the LCD Control pins */ LCD_AF_GPIOConfig(); /* Polarity configuration */ /* Initialize the horizontal synchronization polarity as active low */ LTDC_InitStruct.LTDC_HSPolarity = LTDC_HSPolarity_AL; /* Initialize the vertical synchronization polarity as active low */ LTDC_InitStruct.LTDC_VSPolarity = LTDC_VSPolarity_AL; /* Initialize the data enable polarity as active low */ LTDC_InitStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL; /* Initialize the pixel clock polarity as input pixel clock */ LTDC_InitStruct.LTDC_PCPolarity = LTDC_PCPolarity_IPC; /* Configure R,G,B component values for LCD background color */ LTDC_InitStruct.LTDC_BackgroundRedValue = 0; LTDC_InitStruct.LTDC_BackgroundGreenValue = 0; LTDC_InitStruct.LTDC_BackgroundBlueValue = 0; /* Configure PLLSAI prescalers for LCD */ RCC_PLLSAIConfig(192, 7, 3); RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div8); /* Enable PLLSAI Clock */ RCC_PLLSAICmd(ENABLE); /* Wait for PLLSAI activation */ while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET) { } xSize = LCD_GetXSizeEx(LayerIndex); ySize = LCD_GetYSizeEx(LayerIndex); LTDC_InitStruct.LTDC_HorizontalSync = HSW; /* Configure vertical synchronization height */ LTDC_InitStruct.LTDC_VerticalSync = VSW; /* Configure accumulated horizontal back porch */ LTDC_InitStruct.LTDC_AccumulatedHBP = HBP; /* Configure accumulated vertical back porch */ LTDC_InitStruct.LTDC_AccumulatedVBP = VBP; /* Configure accumulated active width */ LTDC_InitStruct.LTDC_AccumulatedActiveW = xSize + HBP; /* Configure accumulated active height */ LTDC_InitStruct.LTDC_AccumulatedActiveH = ySize + VBP; /* Configure total width */ LTDC_InitStruct.LTDC_TotalWidth = xSize + HBP + HFP; /* Configure total height */ LTDC_InitStruct.LTDC_TotalHeigh = ySize + VBP + VFP; LTDC_Init(<DC_InitStruct); LTDC_ITConfig(LTDC_IT_LI, ENABLE); NVIC_SetPriority(LTDC_IRQn, 0); NVIC_EnableIRQ(LTDC_IRQn); } xSize = LCD_GetXSizeEx(LayerIndex); ySize = LCD_GetYSizeEx(LayerIndex); BytesPerLine = GetBytesPerLine(LayerIndex, xSize); LTDC_Layer_Init.LTDC_HorizontalStart = HBP + 1; LTDC_Layer_Init.LTDC_HorizontalStop = (xSize + HBP); LTDC_Layer_Init.LTDC_VerticalStart = VBP + 1; LTDC_Layer_Init.LTDC_VerticalStop = (ySize + VBP); LTDC_Layer_Init.LTDC_PixelFormat = GetPixelformat(LayerIndex); LTDC_Layer_Init.LTDC_ConstantAlpha = 255; LTDC_Layer_Init.LTDC_DefaultColorBlue = 0; LTDC_Layer_Init.LTDC_DefaultColorGreen = 0; LTDC_Layer_Init.LTDC_DefaultColorRed = 0; LTDC_Layer_Init.LTDC_DefaultColorAlpha = 0;#if (GUI_NUM_LAYERS > 1) LTDC_Layer_Init.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_PAxCA; LTDC_Layer_Init.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_PAxCA;#else LTDC_Layer_Init.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_CA; LTDC_Layer_Init.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_CA;#endif LTDC_Layer_Init.LTDC_CFBLineLength = BytesPerLine + 3; LTDC_Layer_Init.LTDC_CFBPitch = BytesPerLine; LTDC_Layer_Init.LTDC_CFBLineNumber = ySize; LTDC_Layer_Init.LTDC_CFBStartAdress = layer_address[LayerIndex]; LTDC_LayerInit((LayerIndex == 0 ? LTDC_Layer1 : LTDC_Layer2), <DC_Layer_Init); /* Enable LUT on demand */ BitsPerPixel = LCD_GetBitsPerPixelEx(LayerIndex); if (BitsPerPixel <= 8) { /* Enable usage of LUT for all modes with <= 8bpp */ LTDC_CLUTCmd((LayerIndex == 0 ? LTDC_Layer1 : LTDC_Layer2), ENABLE); } else { /* Optional CLUT initialization for AL88 mode (16bpp) */ if (apColorConvAPI[LayerIndex] == GUICC_88666I) { LTDC_CLUTCmd((LayerIndex == 0 ? LTDC_Layer1 : LTDC_Layer2), ENABLE); for (i = 0; i < 256; i++) { Color = LCD_API_ColorConv_8666.pfIndex2Color(i); LTDC_CLUT_InitStruct.LTDC_BlueValue = ((Color >> 16) & 0xff); LTDC_CLUT_InitStruct.LTDC_GreenValue = ((Color >> 8) & 0xff); LTDC_CLUT_InitStruct.LTDC_RedValue = (Color & 0xff); LTDC_CLUT_InitStruct.LTDC_CLUTAdress = i << 24; LTDC_CLUTInit((LayerIndex == 0 ? LTDC_Layer1 : LTDC_Layer2), <DC_CLUT_InitStruct); } } } /* Enable layer */ LTDC_LayerCmd((LayerIndex == 0 ? LTDC_Layer1 : LTDC_Layer2), ENABLE); /* Reload configuration */ LTDC_ReloadConfig(LTDC_VBReload);}怎么看也不是SPI接口啊 |
|
|
|
你说的SPI会不会是触摸屏控制芯片的驱动?
|
|
|
|
只有小组成员才能发言,加入小组>>
702 浏览 0 评论
1111 浏览 1 评论
2476 浏览 5 评论
2811 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2654 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
658浏览 9评论
659浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
788浏览 6评论
633浏览 5评论
677浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 02:10 , Processed in 1.411129 second(s), Total 85, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号