完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嘿,
我有 NUCLEO-L432KC 和 NUCLEO-F446RE。我正在使用它们与基于 ili9163c 的显示器进行交互。 当我将显示器连接到 L432KC 时,效果很好,我得到了一张填满整个显示器的图像。但是,我正在尝试将项目转移到 F446RE,但是当我在 F446RE 上运行程序时,它只在显示屏的上半部分绘制并重复图像,即如果您要将显示屏分成 4 个四分之一,它是只在前两个季度绘制,每个顶部季度都是我想要填充整个显示的图像的重复。我试过在 F446RE 上使用与 L432KC 相同的时钟速度,只是为了看看它是否与时序有关,但似乎并非如此。 我怀疑这与 DMA 有关,因为当我将它连接到逻辑分析仪时,我可以看到 DMA 信号 (MOSI) 有两个重复版本的图像。知道为什么一台设备上的 DMA 与另一台设备上的 DMA 的行为不同吗? 我在循环模式下使用带有 HAL_SPI_TxCpltCallback 函数的 DMA。 谢谢。 |
|
相关推荐
1个回答
|
|
在这里引起您注意的 'F446 和 'L432 之间的区别是SPI 中的数据打包。
SPI 设置为 8 位帧。 'L432 中的 DMA 从内存中选取一个半字,将其存储到 SPI 中,SPI 将其拆分为两个 8 位帧并进行传输。 'F446 中的 DMA 从内存中选取一个半字,将其存储到 SPI 中,SPI 忽略高 8 位并传输一个 8 位帧。 在'L4 Cube中,这是占到了,这就是为什么HAL_SPI_Transmit_DMA()的Size参数有一半出现在CNDTR中的原因。因此,Size 参数表示“传输的 SPI 帧数,无论您使用的 SPI 帧的大小如何。Cube 的文档可能会这么说,因为它令人惊讶并且与涉及 DMA 的其他功能不同,但那是 Cube 给你的。(顺便说一句。如果您在 DMA 中使用 32 位传输,这种“自动化”将会失败)。 在 'F4 中,您需要将 SPI 的帧更改为 16 位(这可能会混淆使用 SPI 的其他功能,因此您需要动态地在 8 位和 16 位之间切换帧大小,我真的不会向新手推荐这种方法),或将 DMA 传输更改为 8 位。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2632 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3607 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 04:57 , Processed in 1.173948 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号