打印
[技术问答]

如何使用SPI的PDMA功能作为主设备接收数据

[复制链接]
1150|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2024-10-18 22:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为时钟要由主设备送出,如果开启PDMA功能,想要接收数据,是不是要开启两个PDMA通道,一个通道用于内存-->SPI_TX,目的是送出时钟信号给从设备;另一个通道用于SPI_RX-->内存,真正用于接收数据?

使用特权

评论回复
沙发
星星点点didi| | 2025-1-15 19:58 | 只看该作者
在使用SPI通信时,如果主设备需要通过PDMA功能来接收数据,通常需要配置两个PDMA通道

使用特权

评论回复
板凳
wamed| | 2025-1-15 22:15 | 只看该作者
PDMA可以减轻CPU的负担,直接在外设和内存之间传输数据。为了实现SPI的全双工通信,需要分别处理发送和接收的数据。

使用特权

评论回复
地板
ewyu| | 2025-1-16 08:25 | 只看该作者
即使你不需要发送实际数据,也需要发送虚拟数据(如全0或全1)以产生时钟信号。

使用特权

评论回复
5
清芯芯清| | 2025-1-16 10:12 | 只看该作者
例如:配置PDMA将内存中的虚拟数据传输到SPI的发送寄存器(SPI_TX)。

使用特权

评论回复
6
eleg34ance| | 2025-1-16 11:38 | 只看该作者
用于接收从设备返回的数据。主设备在发送时钟信号的同时,从设备会将数据通过MISO线返回。例如:配置PDMA将SPI的接收寄存器(SPI_RX)中的数据直接传输到内存。

使用特权

评论回复
7
gra22ce| | 2025-1-16 13:21 | 只看该作者
配置发送通道(内存 --> SPI_TX):设置源地址为内存中的虚拟数据缓冲区。设置目标地址为SPI的发送寄存器(SPI_TX)。配置传输长度为需要发送的数据长度。使能PDMA通道。

使用特权

评论回复
8
pe66ak| | 2025-1-16 14:33 | 只看该作者
启动SPI的发送和接收。PDMA会自动将虚拟数据发送到SPI_TX,同时将SPI_RX中的数据存储到内存。等待PDMA传输完成。从内存中读取接收到的数据

使用特权

评论回复
9
miltk| | 2025-1-16 15:41 | 只看该作者
如果不需要发送实际数据,可以发送全0或全1作为虚拟数据。虚拟数据的长度应与接收数据的长度一致

使用特权

评论回复
10
gongqijuns| | 2025-1-16 21:04 | 只看该作者
SPI是全双工通信协议,主设备在发送数据的同时也会接收数据。主设备通过发送时钟信号(SCLK)来驱动通信,同时从设备会在时钟的驱动下返回数据。

使用特权

评论回复
11
hight1light| | 2025-1-16 23:52 | 只看该作者
第一个PDMA通道:内存 --> SPI_TX:用于发送数据(通常是虚拟数据,目的是产生时钟信号)。主设备通过发送数据来驱动SCLK,从而让从设备返回数据。

使用特权

评论回复
12
Stahan| | 2025-1-19 23:30 | 只看该作者
PDMA跟DMA什么区别啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2078

主题

7719

帖子

11

粉丝