完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用 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。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2653 浏览 1 评论
3214 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1788 浏览 1 评论
3617 浏览 6 评论
5996 浏览 21 评论
945浏览 4评论
1318浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
590浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1308浏览 3评论
1368浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 19:54 , Processed in 0.925844 second(s), Total 43, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号