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.

[参考译文] CC3220MODA:连接 ADS8866

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/885478/cc3220moda-interfacing-ads8866

器件型号:CC3220MODA
主题中讨论的其他器件:ADS8866CC3200

我使用 SPI 接口连接到 ADS8866 ADC。 我已使用 ADS886在3线制模式下进行设置、使 DIN 保持高电平、这意味着在 CONVST 信号出现负斜率时、数据可用于通过 SPI 时钟计时。

我的代码使用以41kHz 运行的计时器中断。 中断服务例程将 CONVST 信号设置为低电平、然后立即调用 SPI_TRANSFERT()。 它的工作方式是:CONVST 变为低电平与实际 SPI 时钟启动之间的延迟接近9us -这是缓慢的。 我可以在 SPI_TRANSF()调用中期待什么延迟?  如果该9us 延迟对于该函数来说有点正常、是否有办法加快该速度?

通道1 (黄色)= SPI 时钟

通道2 (蓝色)= ADS886数据输出

通道3 (黄色)=采样时钟/ADC CONVST 输入

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

    您好!

    如果您希望按原样使用 SPI 驱动程序、9us 的速度将与启用 SPI 时钟和计时数据时所需的速度一样快。 您已经从 ISR 运行 SPI_TRANSFORT(),因此它具有最高优先级。

    您可以尝试优化 SPI_TRANSF()函数,特别是在您的用例非常严格的情况下,以删除完整性检查、冗余设置等内容 。 该函数的源代码可在 source/ti/drivers/spi/SPICC32XXDMA.c 中的 SPICC32XXDMA_transfer ()中找到。 但是、修改驱动程序的问题在于、Wi-Fi 主机驱动程序将使用 SPI 传输函数以及通过 SPI 将主 MCU 与 NWP 连接起来。 因此、如果您要修改 SPI 驱动程序、则必须仔细测试 Wi-Fi 功能。

    另一种替代方法是在不使用 TI 驱动程序的情况下控制 SPI 接口、但使用低级 driverlib 调用来写入 SPI 寄存器并自行设置 DMA。 这可以进一步减少开销、但实施代码来执行 SPI 传输将需要相当多的努力。 CC3200 SDK 中有一个 SPI 示例、使用此低级 driverlib 代码、您可以将其用作参考。 SPI 外设硬件以及 driverlib API 在 CC3200和 CC3220之间是通用的。

    我建议您尝试优化您的系统、以便8us 延迟是可以接受的、但如果不是、请尝试调查我在上面描述的方法、看看它们是否合适。

    此致、

    Michael

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

    您好、Michael、感谢您的想法。 我也想优化 SPI_transfer()调用,但由于代码量和与 WiFi 的相互联系程度(新的英文单词),所以有所支持。 我还想避免自己编写低级驱动程序代码。 我一直在使用 ADS8866 3线模式、但4线模式可能有更多/更好的时序选项-我有一些想法。

    由于我整天都在示波器上看到我的眼球,我实际上从未查看过 SPI_TRANSF()返回的样本值。 它们都是零!  对 SPI_transfer()的调用不会失败,但值是一个大 fat 0。  示波器图清楚地显示了 ADS8866以 SPI 时钟的速率从数据中退出、因此传输应该具有_some 值_。  是否有任何想法、我应该检查什么可能发生的事情?

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

    您对 SPI_TRANSFRAT()返回零的看法?

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

    您好!

    您是否已检查以确保在设置 SPI 接口时、您已使用正确的时钟相位/极性帧格式对其进行设置?

    此外、您是否已确保为 MISO 选择了正确的引脚? 如果您在示波器上看到数据正确传入、但 SPI 驱动程序返回所有0、则这些可能是原因。

    此致、

    Michael

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

    我再次回顾我的输入,是的,我使罗基错误 mISO 不能正确连接:-)