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.

[参考译文] DAC7568:如何利用 C2000 MCU 驱动 DAC7568?

Guru**** 2008950 points
Other Parts Discussed in Thread: TMS320F28379D, DAC7568, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1240858/dac7568-how-to-drive-dac7568-with-c2000-mcu

器件型号:DAC7568
主题中讨论的其他器件:TMS320F28379D、、 C2000WARE

您好、TI。

我想使用 TMS320F28379D 驱动 DAC7568。 我想知道如何配置 DSP 的 SPI 寄存器。

DAC7568所需的数据格式为32位、但 DSP 仅支持16位。 因此、我认为我应该连续传输两个16位字。 这意味着 SPIFFCT.TXDLY 应配置为:0h (R/W)=前一个字传输完成后、TX FIFO 缓冲区中的下一个字立即传输到 SPITXBUF。

但是、根据 DAC7568的要求、CS 高电平时间应最短80ns。 这意味着应该在每两个32位数据之间插入80ns 或更高的时间延迟。  

那么、如果我想在不等待传输完成的情况下将8个数据传输到 DAC、如何配置 SPI 模块呢?

顺便说一下、TI 是否提供这种情况下的示例代码?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    DAC7568要求的数据格式为32位、但 DSP 仅支持16位。 因此、我认为我应该连续传输两个16位字。 这意味着 SPIFFCT.TXDLY 应该被配置为:0h (R/W)=在前一个字的传输完成后、TX FIFO 缓冲器中的下一个字立即被传输到 SPITXBUF。

    是的、这是一种实现方法。 您还应启用 FIFO 模式并始终将两个16位值写入 FIFO、以确保 CS 引脚在整个32位传输期间保持低电平。

    但是、根据 DAC7568的要求、CS 高电平时间应最短80ns。 这意味着应该在每两个32位数据之间插入80ns 或更高的时间延迟。  

    那么、如果我想在不等待传输完成的情况下将8个数据传输到 DAC、如何配置 SPI 模块呢?

    [/报价]

    最简单的方法是轮询 接收 向 TX FIFO 写入2个16位值后、FIFO 级别状态设为等于2。 通过轮询 RX FIFO、您可以确保已发送完整的32个位、因为 SPI 将始终接收其传输的每个数据的数据。 如果需要、您可以插入一个较小的 CPU NOP 延迟、以确保 CS 引脚具有80ns 的高电平时间。 当 CPU = 200MHz 时、这只有16个 NOP。 如果您不想浪费 CPU 周期进行轮询、可以启用中断。  

    顺便说一下、TI 是否提供了这种情况下的示例代码?

    不适用于此特定用例、但可以在 c2000ware 中利用一些通用示例。

    C:\ti\c2000\C2000Ware_4_03_00\driverlib\f2837xd\examples\cpu1\spi

    [/quote]