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.
您好、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]