问题描述
我有一个可以与 50MHz SPI 接口一起使用的 DAC。它是一个具有 8 位地址的 16 位 DAC,因此我需要发送 24 位数据。我想使用 Pico 将数据发送到 DAC,以便产生 1 kHz 的正弦波,20 个样本(因此采样率 不超过 20ksps)。我使用 Micropython 对 pico 进行编程,但无法获得超过 500 hz 的波形。我做错了什么......有没有办法使用DMA来加速这个过程? DAC 也需要芯片选择,这不在机器模块中,所以我不得不使用 gpio。这是否会减慢进程?
解决方法
除了任何其他问题外,RP2040 中的 SPI 硬件实现仅提供对高达 16 位传输的 CSn 的自动控制。
对于您的情况,在 PIO 子系统中实现一个简单的 24 位固定格式仅输出 SPI 非常简单,并且具有仅需要单个 DMA 通道即可进行完全 DMA 操作的优势(与在至少 2 个链接的 DMA 通道,用于完全 DMA SPI/GPIO 方法)。 RP2040 数据表中的示例已经提供了大部分实现。