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.

[参考译文] CCS/RM48L952:尝试使用 SPI1从外部 ADC 获取数据

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/641697/ccs-rm48l952-attempting-to-get-data-from-external-adc-with-spi1

器件型号:RM48L952
主题中讨论的其他器件:HALCOGENADS8922B

工具/软件:Code Composer Studio

您好!  

我目前正在处理一个项目、目前我遇到了一个问题、该问题已使我的进度停止。

上下文:我之前尝试过发布此内容、但遇到了一些奇怪的错误、因此这里尝试了#3。

首先、一些可能有助于故障排除的详细信息:

>相关系统组件:

--> CCSv7

--> HALCoGen v4.07

--> RM48

--> ADS8922B

>我要实现的目标的基本概述:

-->使用 RM48从菊花链配置中获取 ADC 转换

-->将转换存储在 microSD 卡上

 

>当前设置/配置:

->MIBSPI1/SPI1模块连接到 ADC 菊花链(这将是我用于向 ADC 发送数据/从 ADC 接收数据的模块)

---- >我使用的菊花链拓扑直接来自 ADS892xB 数据表;已经过验证

--> SPI 模块的波特率设置为400kHz

->NCS[3]配置为 GIO 以进行位拆裂(其余 SPI 引脚为 SPI 功能)

->MIBSPI1/SPI1模块引脚映射:

        RM48引脚           ->  ADC 引脚 -> 简要详细信息

---- 根据            数据表、>MIBSPI1NCS_3 -> NCS ->所有3个 ADC 的 NCS 线路连接在一起

---- >MIBSPI1SIMO   -> SDI          -> SIMO 线连接到菊花链中第一个 ADC (x 轴)的 SDI 引脚

---- >MIBSPI1SOMI   -> SDO-0     -> SOMI 线连接到菊花链中最后一个 ADC (z 轴)的 SDO-0引脚

---- 根据              数据表、>MIBSPI1CLK -> SCLK ->所有3个 ADC 的 SCLK 线路连接在一起

---- 根据                数据表、所有3个 ADC 的>GIOA_5 -> CONVST -> CONVST 线路连接在一起

---- >每个 ADC 的每个 nRST 和 RVS 引脚都连接到 GPIO

问题:  

我一直使用 Saleae 逻辑分析仪来观察相关 SPI 线路之间的通信。 我目前能够查看和验证我正在发送的数据。 我还不断从菊花链中获得某种垃圾数据响应("垃圾"意味着我目前没有将信号馈送到 ADC 进行转换、因此我得到的响应是随机值)。 我现在要做的只是成功地将我正在获取的"垃圾"存储到缓冲区中。 我正在使用 spiTransmitAndReceive()函数发送/接收数据。 **正在发送源缓冲区数据并已进行验证,但目标缓冲区最终全部为1 (这通常表示没有连接),而不是在 MISO 行上看到的内容**。

问题:

> while (1)循环中的代码是否预计会导致循环每次迭代的单次转换? (时间可能是个问题?)

>完成单次转换后,如何将该数据存储到接收缓冲区(rxBuff)中?

>尝试从外部设备接收数据时是否需要中断? 或者,为了成功接收数据,我是否只能使用 POLLING 函数 spiTransmitAndReceiveData()?

总之:

>我将使用默认的 ADC 配置(到目前为止、如有必要、可能会更改)

>我已验证发送的数据符合我的预期

>我从菊花链中获得某种类型的响应(正如萨莱阿所观察到的)。 然而、这个数据还未被验证、并且我没有成功地将数据存储到接收缓冲器中

我不能确定我现在所遗漏的是什么。 我的直觉告诉我、与外部 ADC 交谈的概念与将两个 SPI 模块设置为主和从、并在两个模块之间发送数据(外部回送)的概念相同。 我的直觉是错误的、或者我尝试执行我的想法是错误的-目前还不确定。

一如既往、感谢您的参与和考虑!

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

    是的、外部 ADS8922B ADC 器件具有 SPI 接口、与 ADS8922B 进行通信时喜欢与 SPI 从器件进行通信。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我也想很多。 我很困惑为什么我无法将相关数据存储到接收缓冲区中。 例如、我在小数1097 (十进制)的小数上看到了响应、这相当于一个11位值10001001001 (二进制)。 但是、我未能成功将此响应存储到接收缓冲区(rxBuff)中。 相反、我最终存储了11位1 (0x07FF);如果我要将移位寄存器大小更改为16位(最大大小)、那么我存储的数据将为0xFFFF (全部为1)。 为了确保从 ADC 传入的数据存储到 rxBuff、我需要做什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

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

    我在该主题中发布了我的 saleae 结果示例的屏幕截图。 在此示例中、我使用的是 mibspi 传输组3。 可以在下图中观察到传输组配置。

    我想知道为什么我没有存储我在 saleae 上看到的内容。