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.

[参考译文] TM4C1292NCPDT:SPI 和 UDMA 操作澄清

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/614710/tm4c1292ncpdt-spi-and-udma-operation-clarfication

器件型号:TM4C1292NCPDT

您好!

我的目标是通过 SPI 接口实现 UDMA 操作、从而在无需微控制器干预的情况下从 LTC2333-16 ADC 连续读取样本。

通过 TM4C1292NCPDT 数据表、我们了解到使用 SPI 接口可以实现 UDMA。 即、只要 SPI 数据缓冲区被填满、SPI 就会发出 DMA 请求。 UDMA 将配置为乒乓模式、以从 SPI 接收数据到存储器、并在 UDMA 乒乓缓冲器填满时生成处理器中断。

LTC2333-16 ADC 可选择配置控制字、即在序列运行模式下为通道选择预先确定的顺序。 但是、每个通道都需要 CNV 即转换信号来从主器件启动转换。 当转换完成时、BUSY 信号被取消置位、并且期望 SCKI 信号从主器件驱动 SDO 数据。 请查看以下单个样本的时序图。

 

要使用 LTC2335-16的内部序列发生器、我们必须按照如下所述使用多达16种配置的所需序列对其进行编程。 这些配置中的每一种都指定了一次转换所需的通道编号和 SoftSpan 范围。 然后、LTC2335-16将第一个配置应用于第一个转换、第二个配置应用于第二个转换、依此类推、直到达到编程序列的末尾、此时周期将从开始重新开始。

 

现在、我计划使用计时器脉冲来处理每个样本的 CNV 信号。 然而、SPI 应该在 ADC BUSY 信号之间具有某种握手信号、并且在无需处理器干预的情况下驱动主时钟。

 

请澄清以下内容。  

  1. 对于每次采样读取、SPI 是否应该能够处理 BUSY 信号以将主时钟驱动到 ADC 而无需处理器干预?
  2. 请建议是否可以实现任何逻辑来处理 BUSY 信号和 SPI 主时钟之间的握手。
  3. 在每次从 SPI 缓冲器读取样本后、是否可以在没有处理器干预的情况下提供从 uDMA 到 ADC 的一些信号?

谢谢

巴拉

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

    1) 1)否、在没有处理器控制的情况下、SPI 应该也不能处理忙信号
    2)在 BUSY 引脚上有一个具有中断功能的 GPIO、当它下降到低电平时、将 SPI 总线排队以开始通信、从而读出 ADC 结果
    3) 3) UDMA 没有发送到外部 ADC 的信号功能。 但是、可能可以设置另一个 DMA 通道、以便执行从 RAM 到 GPIO 的 DMA 传输。 那么、您可以使用 GPIO 信号向外部 ADC 发出信号吗? 不过、这并不完全是一种高效的方法、因为 DMA 和 CPU 都无法进行位写入、因此您最好尝试答案2中概述的方法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Jacobi。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ralph Jacobi、

    还有一个问题。

    基本问题似乎是 ADC 不提供串行通信位时钟源、因此最直接的通信实现将使 CPU 成为 SPI 主器件。 但是、SPI 主器件被设计成连续传输消息。

    配置为 SPI 从器件时、TI UP 上的 SPI 接口能否接受不规则的时钟输入?

    如果是、那么添加生成串行时钟并将其门控为仅在数据转换窗口期间运行的数字硬件将允许在我认为的两个方向上使用正常 SPI DMA。 请澄清。

    要配置 ADC 的序列发生器模式操作、需要将 TI UP SPI 设置为主模式;配置后是否可以在运行时间将 SPI 配置更改为从模式?

    TI 处理器的 SPI 是否会等待读取下一个数据–直到下一次转换后时钟恢复? 在没有处理器干预的情况下、SPI 从器件是否会接收到数据 DMA 到存储器缓冲器?

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

    虽然我没有很详细地阅读您的 ADC 数据表、但我所阅读的内容似乎只是通过 SPI 操作时的从器件(请参阅第14页的引脚功能... 专门针对 SCKO 的引脚功能)。

    考虑到上述知识、您应该只关注自己如何将 TM4C 用作 SPI 主器件。

    您说 SPI 主设备设计为连续传输消息-我不确定我是否理解您在这种情况下尝试传输的内容? 您能更好地说明这一点吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ralph Jacobi、

    让我对我的问题进行清楚的解释。

    我想通过 SPI 接口连续读取 LTC233-26 ADC 中的24位数据、即在没有处理器干预的情况下使用 DMA。 根据 LTC 数据表、我了解到它需要来自 SPI 主设备的 CNV 信号和 SCKI、以便在繁忙信号从高电平转换到低电平后发送 SDO 数据。 在这种情况下、我计划添加一些外部硬件电路来控制 CNV 信号、并在 BUSY 信号警报后向 ADC 提供时钟。
    如果我将 TI 微控制器 SPI 配置为具有外部时钟的从器件、那么 SPI 从器件是否能够从 ADC 接收到哪个时钟不规则?
    2.是否可以在 SPI 处于从模式时设置 DMA 数据传输?

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

    1) 1)通常情况下、这应该是可以的、因为重要的是数据计时的边沿。 尽管如此、您需要注意周期不会变得太小。 TM4C12x 器件的 SCLK 到从器件的时间不能高于系统时钟的1/12、因此时钟不能有超过这个限制的时间周期。 除此之外、还可以、但通过使用不规则的时钟、您可能会在调试方面增加很多复杂度、因为您必须确保频率保持在上述范围内。 要完全了解从模式时序、请参阅器件数据表第27.17节中的规格(其中一个注释包括提到的1/12 SYSCLK 要求)。

    2) 2)是的、可以这样做。 如果您不确定如何执行此操作、请在 E2E 论坛中搜索"SPI Slave DMA"-已就该主题提出许多问题、您可以浏览大量相关知识! )