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.

[参考译文] ADS1261:从何处获取 ADS1261EVM 的固件源代码?

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/836032/ads1261-where-to-get-the-firmware-source-code-of-ads1261evm

器件型号:ADS1261

您好!

我的客户在控制 自己的 ADS1261板时遇到问题[一定的可能性无法通过 SPI 正确读取或写入]。 我尝试找到并重现此问题。  我刚刚获得了 ADS1261EVM,但 EVM GUI 不够灵活。

我 认为一种更简单的方法是稍微修改 EVM 上 TM4C129的代码、 例如 更改 SPI 速度、特定命令序列等。 此外,TM4的 JTAG 接口是打开的。 您是否愿意向我共享此固件代码?  谢谢。  

我还 注意到有一个测试代码、ADS1261示例 C 代码软件、 它在哪个 TI 平台上进行了测试?  是否有任何指导可在 ADS1261EVM 上快速设置和运行?  

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

    尊敬的 Yue:

    遗憾的是、我们没有完整的 EVM 固件项目可以与客户共享。 但是、如果您需要调试或测试某些内容、我们可能会提供帮助。 请告诉我您想要测试什么、或者您希望更多地控制 SPI 配置的哪些部分、我将看到我可以做些什么来帮助...

    对于 ADS1261示例 C 代码、它是实际 EVM 固件的子集。 当与 TivaWare DriverLib 工程一同使用时、构建一个与 ADS1261通信的有效 CCS 工程不会太困难。

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

    尊敬的 Chris:

    我没有 Tiva EVM、也不熟悉该器件。 您能否基于 Simplink 平台器件或 MSP430设置演示?   我需要一个解决方案来解决此问题。 谢谢。  

    我的客户使用 STM32 MCU 和  ADS1261示例 C 代码软件 来驱动 ADS1261、他们正在对该器件进行评估。 现在、它们正在执行重复的寄存器读取 和写入测试。  在大多数情况下,它们都得到了正确的响应。 但是、有时它们会得到 CRC 错误响应、这种症状每隔几十秒就会出现一次。 他们以前很少使用其他器件遇到这种情况。 到目前为止、他们进行了大量测试、降低了 SPI 速度或提高了 SPI 速度(1.6m 至4M)、增加了每个命令的间隔、但仍然会出现此问题。

    我尝试使用 EVM 和 GUI 来重现此问题、但该工具 没有那么灵活、例如、我可以使用脚本执行重复测试。

    下面是错误打印。 只会打印出错误的响应。

       

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

    尊敬的 Yue:

    我认为在尝试复制之前、我们应该尝试从客户那里收集更多信息、否则我们很难成功地复制这些信息。

    对于启动器、它们发送的(命令)模式是什么、它们发送这些命令的频率是多少?...it 看起来它们执行重复的 RREG 和 WREG 命令。

    您还能让客户看看逻辑分析仪或示波器上的 SPI 通信吗? 如果他们能够捕获具有 CRC 错误的 SPI 帧、那将会非常有用。 如果错误的频率很低、则可能需要配置微控制器、以便在检测到 CRC 错误时切换 GPIO 引脚。

    首先、我发现收到的"回波字节2"并不总是与它们传输的"任意"字节匹配、如下所示:

    回波字节1在大多数情况下似乎是正常的、但 DataRx = 0xFF 时除外、这表示器件根本没有响应。 在这种情况下、将导入以检查/CS、/RESET 和/PWDN 引脚、以确保器件处于活动状态并在 SPI 总线上选择器件。 如果 SPI 总线上有其他器件、则可能需要检查其他器件是否处于活动状态并将 DOUT 保持为高电平。

    回波字节2似乎更经常地不正确。 由于此数据将打印到终端、因此我无法判断 SPI 通信是问题、还是将此数据打印到终端的代码导致了问题。 因此、确定打印到端子的数据是否正确以及 DIN 和 DOUT 引脚上是否发生相同的不匹配非常重要。

    如果 DIN/DOUT 上的数据损坏、那么我要注意 SCLK/DIN/DOUT 信号是否干净或者是否存在导致传输错误的大噪声尖峰。 此外、检查在此期间是否启用了任何其他器件的/CS 引脚(共享相同的 SPI 总线)。

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

    感谢您的建议。   处理 不常发生的错误的想法很好,我忘记标记的间隔是10ms。 并且在测试中仅使用一个 SPI 从器件。  

    老实说, 一个可测试的环境对我来说非常重要,不仅对快速验证非常重要,而且对我 来说,对快速学习此设备也非常重要。 我似乎需要 获取逻辑分析仪 并对其进行现场测试、即使他们没有使用我们的 MCU。

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

    尊敬的 Yue:

    请随时向我们发布您的进度。

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

    Tom、

    我在现场支持它们、事实证明 TI 提供的参考代码中有一个小错误。 经过此修改、到目前为止、未报告任何其他问题。  

    /*(可选)写入所有寄存器*/

    uint8_t startIndex = REG_ADDR_STATUS;

    uint8_t count = NUM_registers - startIndex;

    writeMultipleRegisters (startIndex、count、&initRegisterMap[startIndex]);

    void writeMultipleRegisters (uint8_t addr、uint8_t count、const uint8_t data[])

    /*检查寄存器映射地址范围是否未超出*/

    assert((addr + count)<= NUM_registers );

     

    uint8_t i;

    对于(i = addr;i <(addr + count);i++)

      writeSingleRegister (i+addr、data[i]);

     

    已更改为:------------------------------------------------------------

     

    /*(可选)写入所有寄存器*/

    uint8_t startIndex = REG_ADDR_STATUS;

    uint8_t count = NUM_registers - startIndex;

    writeMultipleRegisters (startIndex、count、initRegisterMap);

     

    /*(可选)读回所有寄存器*/

    readMultipleRegisters (startIndex、count、adc_RegisterMap);

     

     

    void writeMultipleRegisters (uint8_t addr、uint8_t count、const uint8_t data[])

    /*检查寄存器映射地址范围是否未超出*/

    assert((addr + count)<= NUM_registers );

     

    uint8_t i;

    对于(i = addr;i <(addr + count);i++)

      writeSingleRegister (i、data[i]);