This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
器件型号:MSP432P401R
您好!
我想将一些数据从 RAM 传输到连接到 DAC 的 SPI 接口之一。
DAC 需要16位、但不会将两者之间的 CS 线路置为有效。 目前、我使用 GPIO 引脚手动生成 CS 线路。
为了加快整个过程、我想使用 DMA 传输。
我的问题(在开始深入研究 DMA 文档之前):
-是否可以将16位字(2字节序列)传输到具有 DMA 的 SPI 接口并自动创建正确的 CS 信号(在2字节传输之前/之后生效/失效)?
-是否可以使用第二个 DMA 通道生成 CS 信号?
欢迎您提供任何提示和帮助!
BR、Andreas
尊敬的 Andreas:
1.研究 ARM 的 DMA 理论。 至少是 TI 的"slla356"文档第11节。
2.在以下步骤中使用 DMA 的散聚模式:
a.使用位带将 CS 置为甜点。
b.发送字的第一个字节
c.发送第二个字字节
正如您可以猜测的那样、同步过程不需要 CPU 干预、这很好。
此致、
Alexey
@Alexey 和 Chris:非常有帮助的提示,非常感谢。 当 PCM 输出与 DMA 配合使用时(与 MP3解码器[libmad]配合使用、它已经与中断驱动的 PCM 输出配合使用)、我将发布另一条回复。
还有一个简短的问题:当写入某些 GPIO 端口的输出寄存器时、DMA 工作正常。
当我尝试写入相应的位带别名地址时、不会发生任何情况。 当通过 DMA 写入位带区时、有什么特别的考虑?
此外、CCS 不提供手动更改位带区域。 当我在内存浏览器中显示地址0x42000000时、不会显示任何内容...
您好!
使用散聚 DMA 序列、我现在能够通过 SPI 写入16位半字并生成正确的 CS 信号。 我的程序仍然有一个 IRQ 例程、每秒调用44100次(最初我希望我可以通过 DMA 写入整个数据块)、 但该例程当然要快得多、因为我只需触发 DMA 传输、而不是通过 SPI "手动"发送2个字节。
再次感谢您的大力支持!
BR、Andreas