[技术问答] 如何使用SPI的PDMA功能作为主设备接收数据

[复制链接]
1837|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)以产生时钟信号。
清芯芯清 发表于 2025-1-16 10:12 | 显示全部楼层
例如:配置PDMA将内存中的虚拟数据传输到SPI的发送寄存器(SPI_TX)。
eleg34ance 发表于 2025-1-16 11:38 | 显示全部楼层
用于接收从设备返回的数据。主设备在发送时钟信号的同时,从设备会将数据通过MISO线返回。例如:配置PDMA将SPI的接收寄存器(SPI_RX)中的数据直接传输到内存。
gra22ce 发表于 2025-1-16 13:21 | 显示全部楼层
配置发送通道(内存 --> SPI_TX):设置源地址为内存中的虚拟数据缓冲区。设置目标地址为SPI的发送寄存器(SPI_TX)。配置传输长度为需要发送的数据长度。使能PDMA通道。
pe66ak 发表于 2025-1-16 14:33 | 显示全部楼层
启动SPI的发送和接收。PDMA会自动将虚拟数据发送到SPI_TX,同时将SPI_RX中的数据存储到内存。等待PDMA传输完成。从内存中读取接收到的数据
miltk 发表于 2025-1-16 15:41 | 显示全部楼层
如果不需要发送实际数据,可以发送全0或全1作为虚拟数据。虚拟数据的长度应与接收数据的长度一致
gongqijuns 发表于 2025-1-16 21:04 | 显示全部楼层
SPI是全双工通信协议,主设备在发送数据的同时也会接收数据。主设备通过发送时钟信号(SCLK)来驱动通信,同时从设备会在时钟的驱动下返回数据。
hight1light 发表于 2025-1-16 23:52 | 显示全部楼层
第一个PDMA通道:内存 --> SPI_TX:用于发送数据(通常是虚拟数据,目的是产生时钟信号)。主设备通过发送数据来驱动SCLK,从而让从设备返回数据。
Stahan 发表于 2025-1-19 23:30 来自手机 | 显示全部楼层
PDMA跟DMA什么区别啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2122

主题

8121

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部