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.

[参考译文] ADS1258-DMA:将 EP 与 ADS1258配合使用

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1468738/ads1258-ep-using-dma-with-ads1258

器件型号:ADS1258-ADS1258 EP
主题中讨论的其他器件:ADS1258

工具与软件:

您好!

我们计划在连接到具有 DMA 引擎(SAMv71)的 MCU 主机的一条 SPI 总线上使用2个 ADS1258。

我想在尽可能少 CPU 干预的情况下从 ADS1258传输样本、所以我想办法在"一次性"模式下以10kHz 的频率传输所有通道的数据。

通读数据表、当新数据就绪时、DRDY 线似乎置位低电平、并且在被覆盖之前仅保存一个样本的数据。

从 ADS1258获取数据的唯一可行方法可能是在 DRDY 的下降沿运行 ISR、一次传输一个通道、这在高速运行时可能会产生大量 CPU 开销(使用 DMA 进行一次采样传输是不值得开销的)。

是否可以将 START 引脚置为有效、等待下降 DRDY 边沿以启动 DMA 传输、并将 SPI 时钟速度设置为正确的频率、以便所有通道数据有效、使 START 无效、然后等待到下一个所需的采样周期?

谢谢!

-格雷格

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

    你好、Greg Baghdikian、

    [quote userid="391646" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1468738/ads1258-ep-using-dma-with-ads1258通过 ADS1258获取数据的唯一方法似乎是在 DRDY 的下降沿运行 ISR 一次传输一个通道、

    是的。 无法一次从多个通道获取数据。 如果您等待>1个采样周期、数据将被覆盖

    [quote userid="391646" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1468738/ads1258-ep-using-dma-with-ads1258是否可以将 START 引脚置为有效、等待 DRDY 下降沿以启动 DMA 传输、并将 SPI 时钟速度设置为恰好合适的频率、以便所有通道数据都有效、使 START 置为无效、然后等到下一个所需的采样周期?

    我不是完全确定你在这里建议什么,你可以详细说明吗?

    -Bryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定您在这里建议了什么、您能详细说明吗?

    基本上、能否以这样的速度运行 DMA/SPI:每次 DRDY 线变为低电平时、DMA/SPI 恰好发送/接收每个样本的正确字节数? 本质上、观察第一个 DRDY 下降沿、并以"开环"方式拉离 ADS1258的所有通道数据(在捕获到所有通道之前、不观察后续的 DRDY 边沿)。

    这就是尝试使用由 DMA 控制的 SPI 所完成的所有操作。

    Bryan、对于如何让 ADS1258与 DMA 控制的 SPI 一同工作有什么建议吗? 还是有其他功能类似且支持 DMA 的 ADC?

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

    你好、Greg Baghdikian、

    感谢您的澄清、这可能是可行的。 基本上、您可以这样做

    • 切换 START 引脚并使其保持高电平、以便 ADC 继续在序列发生器中循环
    • 等待 DRDY 第一次降至低电平
    • 发送 RDATA 命令、并确保已启用 STATUS 字节。 这需要40个 SCLK (RDATA 为8位、状态为8位、ADC 数据为24位)
    • 继续发送该相同的帧(40位)、直到您从序列发生器中启用了多个通道的情况获取所有数据
    • 确保在 DRDY 切换之间随时移出多个完整的24位值、因为其中的某些值会损坏或不是新数据。 我建议设置 SCLK 速度、以便您在每个转换周期内生成至少两个完整的帧
    • 使用 STATUS 字节中的 DRDY 位来确定是新数据、而使用 Chid 位来确定在该帧中测量的通道

    我在 EVM 上尝试了这种功能、如下所示。 我只显示了两个帧的数据、但我启用了所有16个单端通道、并以23.7kSPS 的速率运行。

    如果您对这些信息有任何疑问、请告诉我

    同时、我会邀请一位同事与您联系、以获取有关可能符合您需求的新器件的更多信息

    -Bryan

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

    你好、Greg Baghdikian、

    有关显示所有16倍 DRDY 转换(实际上为17x)的附加图、请参阅下面的

    我还在末尾添加了一个 WREG、将 MUXSG0寄存器重写为0xFF (因此无变化)、但这会将序列发生器通道索引重置回第一个已启用的通道。 我在此设置中遇到问题、如果我没有阅读正确数量的信息、我可能会在顺序中转到未知步骤。 这可确保您始终从头开始

    我也能够切换启动以控制转换

    如果您对此设置有任何疑问、以及您需要哪种类型的解决方案、敬请告知

    -Bryan

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

    Brian、您好!

    感谢您的试用以及获得的说明。这可能对我们有用、但我仍想从您的同事那里了解 TI 的其他潜在选择。

    例如、我过去使用的是 Analog 公司的 AD7949、在这里、采样、时序和事务都是由 SPI 信令控制的、因此只需与 DMA 控制的 SPI 接口连接即可。

    -格雷格

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

    你好、Greg Baghdikian、

    谢谢、我再次给他们发了电话、与您联系

    -Bryan