ST意法半导体
直播中

张鹏

8年用户 1243经验值
私信 关注
[问答]

STM32F429IIT6节启用“禁用”与显示器的LTDC设置发生引脚冲突怎么解决 ?

我正在使用 STM32F429IIT6,SDRAM 连接到 SDRAM 2,SDCKE1+SDNE1,字节启用“禁用”与显示器的 LTDC 设置发生引脚冲突,480x272 RGB888 显示器连接到 LTDC。我可以用如下代码读写SDRAM
uint32_t *外部RAM = 0xd0200000;
const uint32_t 大小 = 120000;
//写外部RAM
for(int i = 0; i < size; i++)
{
   外部RAM = i;
}

以同样的方式读回 SDRAM 确认读写 SDRAM 的能力。如果我在使用 STM32CubeIDE 生成的代码设置系统的其余部分后填充帧缓冲区,SDRAM 数据将写入显示器,显示我编程到 SDRAM 中的纯色。我意识到,因为 SDRAM 中的所有值都相同,所以我还不知道 DMA 传输是 16 位还是 32 位宽。但大部分系统都在工作。

我可以通过调试器看到 SDRAM 正在被填充,但写入的内容似乎是 16 位宽并且没有反映写入的内容。例如,一个信号 32 位字应该是
0x030004ff 在 SDRAM 中显示为 0xffffffff 0xffffff03 0xffffff04 并重复。我能够使用 uint16_t var 在程序控制下进行多次写入以获得相同的结果。文件 HAP.cpp 中生成的代码中定义的 uint16_t* frameBuffer0 确认了 uint16_t 指针。

该问题可能是由于在 STM32CubeMX 中的 Software Packs TouchGXF Generator 下设置帧缓冲区像素格式引起的。当设置为 ARG8888(LTDC 像素参数中的设置)时,我在 TouchGFXGeneratedHAL.cpp 中看到一页错误

FreeMarker 模板错误(DEBUG 模式;在生产中使用 RETHROW!):
以下已评估为空或缺失:
==> data.parameters.tgfx_video [在第 81 行第 6 列的模板“TouchGFXGeneratedHAL_cpp.ftl”中]
提示:导致此错误的是最后一个点之后的步骤,而不是之前的步骤。
----
提示:如果已知失败的表达式合法地引用有时为 null 或缺失的内容,请指定默认值,如 myOptionalVar!myDefault,或使用 [ #if myOptionalVar??]when-present[ #else ]when-missing[/ #如果]。(这些仅涵盖表达式的最后一步;要涵盖整个表达式,请使用括号:(myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
... 而这样的例子不胜枚举。

当我在 Software Packs RGB888 下设置 Framebuffer Pixel Format 时,代码生成时没有错误。然而如上所述,对 SDRAM 的写入是 16 位宽。  

我希望已经有解决方法。如果没有,也许有一个战略位置,我可以将写入转换为所需的宽度。

为了完整起见,我附上了一个仅配置了 SDRAM 和 LCD 的 .ioc 配置文件。我有最新版本的 CubeMX。



更多回帖

发帖
×
20
完善资料,
赚取积分