公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
yiru_1705901
Level 4
Level 4
First solution authored 25 replies posted 25 sign-ins

我用的是CY8C6347BZI_BLD53,  我用SPI_DMA传输数据,当我把spi的速度设置小于15MHZ时传输正常,当SPI速度大于15MHZ后,DMA传输到中间,突然每16个时钟周期会有停顿,信号图如附件,这是什么原因,我该怎么解决,

0 点赞
1 解答
Translation_Bot
Community Manager
Community Manager
Community Manager

请参阅这篇文章强制放置 DMA。

https://community.infineon.com/t5/PSoC-6/Select-which-DMA-block-to-use/td-p/90361

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-6/When-the-PSOC6-spidma-is-transmitted-at-high-speed-there-is-a-pause-of-about-4/m-p/651579

在原帖中查看解决方案

0 点赞
7 回复数
yiru_1705901
Level 4
Level 4
First solution authored 25 replies posted 25 sign-ins

yiru_1705901_0-1701173777442.png

这是测试的信号波形

0 点赞
Ida_Wang
Moderator
Moderator
Moderator
100 replies posted 25 solutions authored 10 likes received

您好,可否提供下您的测试程序?

0 点赞
yiru_1705901
Level 4
Level 4
First solution authored 25 replies posted 25 sign-ins

我 测试分析了, 如果2个spi +dma 发送 中间没停顿 速度能达到30MHZ,当有四个SPI+DMA时 spi传输没有停顿速度只能达到14MHZ, 这个是不是因为同时触发DMA时,但是只有一个响应,其他要等待   导致的?

0 点赞
Ida_Wang
Moderator
Moderator
Moderator
100 replies posted 25 solutions authored 10 likes received

您好,该系列芯片有两个DMA controller, 所以如果四个通道同时传输数据,有的通道状态会变为pending.

Ida_Wang_0-1701397401823.png

关于DAM channel状态等信息您可以参考以下链接的10.3节

https://www.infineon.com/dgdl/Infineon-PSoC_63_MCU_with_Bluetooth_LE_CY8C63x6_CY8C63x7_architecture_...

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

之所以发生这种情况,是因为 DMA 无法跟上 SPI 带宽。

您可以采取一些措施来优化 DMA 传输:

1) 如果可以,请将 SPI RX/TX 的数据宽度设置为 16 位而不是 8 位,然后将 DMA 配置为将 HALFWORD 传输到 WORD,而不是将 BYTE 传输到 WORD。

2) 如前所述,使用不同的 DMA 控制器也会有所帮助。 使用来自 DW0 的信道和来自 DW1 的另一个信道。

3) 如果您使用硬件触发器,请将触发"器输入类型配置"为每个触发器"一个 X 环路传输"。 如果你无法保持带宽,那么你不必担心这会让FIFO感到饥饿。 你甚至可以将每个触发"器设置"为完整的描述符传输。

4) 如果之前的建议加速传输速度过快,请查看"触发器的停用和重新触发,"以便在 4 或 16 个周期后重新触发。 你可能还想使用 X 循环次数来增加暂停时间。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-6/When-the-PSOC6-spidma-is-transmitted-at-high-speed-there-is-a-pause-of-about-4/m-p/651040

0 点赞
yiru_1705901
Level 4
Level 4
First solution authored 25 replies posted 25 sign-ins

creator 自动生成的Spi dma控制器都DW0, 怎么改成DW1,我手动在库里改没问题吧?

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

请参阅这篇文章强制放置 DMA。

https://community.infineon.com/t5/PSoC-6/Select-which-DMA-block-to-use/td-p/90361

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-6/When-the-PSOC6-spidma-is-transmitted-at-high-speed-there-is-a-pause-of-about-4/m-p/651579

0 点赞