
使用dma2d传输一张图片到帧缓冲里,当图片分辨率与帧分辨率相同时图片可以正常显示,图片分辨率小于帧缓冲分辨率时显示不正常。 根据LCD显示效果似乎图片宽度被拉长到了帧缓存的宽度,查看dma2d初始化参数觉得可能是Dma2dHandle.Init.OutputOffset的参数设置问题。 以下是f746G disc的例程中初始化代码: 例程中采用的模式是DMA2D_M2M_BLEND,相比m2m增加图层混合功能。 其中 LCD_X_SIZE =480,是帧缓存的宽度; x_size =x_size_orig ,图片宽度, Dma2dHandle.Init.Mode = DMA2D_M2M_BLEND; /* DMA2D mode Memory to Memory with Pixel Format Conversion */ Dma2dHandle.Init.ColorMode = DMA2D_RGB565; /* DMA2D Output color mode is RGB565 (16 bpp) */ Dma2dHandle.Init.OutputOffset = (LCD_X_SIZE - x_size) ; /* No offset in output */ /* DMA2D Callbacks Configuration */ Dma2dHandle.XferCpltCallback = TransferComplete; Dma2dHandle.XferErrorCallback = TransferError; /* Foreground layer Configuration : layer 1 */ Dma2dHandle.LayerCfg[1].AlphaMode = DMA2D_COMBINE_ALPHA; Dma2dHandle.LayerCfg[1].InputAlpha = alpha; /* Alpha fully opaque */ Dma2dHandle.LayerCfg[1].InputColorMode = ColorMode; /* Layer 1 input format */ Dma2dHandle.LayerCfg[1].InputOffset = x_size_orig - x_size ; /* No offset in input */ /* Background layer Configuration */ Dma2dHandle.LayerCfg[0].AlphaMode = DMA2D_REPLACE_ALPHA; Dma2dHandle.LayerCfg[0].InputAlpha = 0xFF; /* 127 : semi-transparent */ Dma2dHandle.LayerCfg[0].InputColorMode = CM_RGB565; Dma2dHandle.LayerCfg[0].InputOffset = (LCD_X_SIZE - x_size) ; /* No offset in input */ LayerCfg[0]代表背景层,背景层宽度为帧缓存宽度,相比与与之混合的图片宽度x_size而言需要设置InputOffset = (LCD_X_SIZE - x_size)以便匹配帧缓存。 LayerCfg[1]代表前景层,这层就是输入的图片,该层输入的数据与传入图片宽度一致,所以offset设置为0。 OutputOffset 是输出设置,输出宽度同样为帧缓存宽度,也需要设置OutputOffset = (LCD_X_SIZE - x_size)来匹配宽度。 综合以上,还都是我的猜测,需要实验验证。 |
STM32F723ZET6使用ADC捕获标准正弦波并通过USB主动上报,正弦波重新拟合后存在凹陷峰?
STM32F769是否可以部署边缘AI
STM32F723ZET6配置内部USB PHY的高速模式,初始化的时候usb init无法通过,要怎么修改配置呢?
训练好的ai模型导入cubemx不成功咋办,试了好几个模型压缩了也不行,ram占用过大,有无解决方案?
【STM32F769I-DISC1】LVGL在使用SPI_DMA数据发送时出现错误。
STM32F769I-DISC1的内存地址映印射如果查找
TouchGFX4.25.0 生成工程代码时报TouchGFX CMake projects only support ARM GCC toolchain.
求助
STM32F767+DP83848 LWIP+UDP 大量数据分片发送问题???
请问有STM32F750型号的芯片原理图嘛?