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.

[参考译文] ADC-AM273X:AD7389-4 MCU-PLUS-SDK 连接和数据采集。

Guru**** 2513185 points
Other Parts Discussed in Thread: LMX2595, LM2595

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1535477/mcu-plus-sdk-am273x-ad7389-4-adc-connection-and-data-acquisition

部件号:AM273X - MCU-PLUS-SDK
Thread 中讨论的其他器件:LMX2595LM2595

工具/软件:

您好团队:

我们计划使用 AM273x 通过 SPI 连接 AD7389-4 ADC。 我们可以遵循任何示例工程代码来获取 4 通道输入数据、以便进一步处理这些数据吗?

任何建议和建议都将非常感谢。

感谢您的帮助和支持

此致、

LIN

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

    您好 Lin、

    由于 AD7389-4 支持串行 1/2/4 线模式、因此必须将其设置为 SERIAL1 线模式、以便与 AM273x MIBSPI 连接、该器件可设置为 3 引脚模式或 4 引脚模式。 这意味着您必须将 AD7389-4 的 CS、SDOA、SDI 和 SCLK 连接到 AM273x MIBSPI。

    软件应该简单易行。 请按照接口部分“串行 1 线模式“中的说明进行操作。

    此致、

    Ming

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

    尊敬的 Ming:

    非常感谢您的支持和帮助。

    我将查看数据表并赶上进度。

    此致、

    LIN

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

    尊敬的 Ming:

    以下是我的状态更新。 我们订购了 AD7389-4 评估板。 一旦它到达,我将做更多的测试,并得到你.

    此致、

    LIN

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

    尊敬的 Ming:

    我们收到了 EVAL-AD7380-4FMCZ 板、并等待 EVAL-SDP-CH1Z 板。 您是否熟悉这两块电路板? 我们能否直接为  EVAL-AD7380-4FMCZ 板上电并在没有 EVAL-SDP-CH1Z 板的情况下连接到 AM273x EVM?  

    如果我们能这样做,我将准备我的代码来测试它们。

    此致、

    LIN

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

    您好 Lin、

     EVAL-AD7380-4FMCZ 板和 EVAL-SDP-CH1Z 板都是 ADI 板。 我不了解这种器件的 EVM、 你应该寻求 ADI 的帮助!

    此致、

    Ming

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

    尊敬的 Ming:

    当然、理解。 我在做这个。

    此致、

    LIN

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

    尊敬的 Ming:

    仅供参考、 EVAL-AD7380-4FMCZ 已在独立模式下加电。 现在、它通过 SPI 与 AM273x EVM 连接、如下所示。

    但是,当我运行代码来配置 EVAL-AD7380-4FMCZ 板上的 AD7380-4 芯片组时。 结果似乎不正确。 我尝试将其断电、然后恢复到正常模式、设置为 1 线模式、然后读回以进行验证。 但无法获得预期的结果。 我在这里共享我的代码和 Saleae 捕获文件。 您能帮我检查一下我是否出了问题或遗漏了任何内容吗? 哦、SPI 设置与我为 LMX2595 所做的设置相同。 它有一条 4 引脚 MODE 线路连接到 J16。

    void sendAD738xWrite (uint8_t regAddr、uint16_t regData)

    uint8_t txBuf[2];
    uint8_t rxBuf[2]={0};
    MIBSPI_Transaction spiTransaction;
    int32_t transferOK;

    //格式:[1][ADDR(3 位)][DATA(12 位)]
    UINT16_t FRAME =(1 << 15)|((regAddr 和 0x07)<< 12)|(regData 和 0x0FFF);

    txBuf[0]=(frame >> 8)& 0xFF;
    txBuf[1]= frame & 0xFF;

    spiTransaction.count = 2;
    spiTransaction.txBuf =(void *) txBuf;
    spiTransaction.rxBuf =(void *) rxBuf;
    spiTransaction.peripheralIndex = 0U;
    spiTransaction.arg = NULL;

    transferOK = MIBSPI_TRANSFER (gMibspiHandle[MSS_SPIB_J16]、&spiTransaction);

    if ((transferOK!= SystemP_Success)||(spiTransaction.status!= MIBSPI_TRANSFER_COMPLETED))

    DebugP_LOG(“AD738x SPI 写入失败! reg 0x%02x\r\n“、regAddr);
    DebugP_ASSERT (FALSE);
    }
    }

    uint16_t sendAD738xRead (uint8_t regAddr)

    Uint8_t txBuf1[2]、txBuf2[2];
    uint8_t rxBuf1[2]={0}、rxBuf2[2]={0};
    MIBSPI_Transaction spiTransaction;
    int32_t transferOK;
    uint16_t 回读;

    //第一条 16 位命令:[0][ADDR(3 位)]【无关】
    Uint16_t cmd =((regAddr 和 0x07)<< 12);

    txBuF1[0]=(cmd >> 8)& 0xFF;
    txBuF1[1]= cmd 和 0xFF;

    spiTransaction.count = 2;
    spiTransaction.txBuf =(void *) txBuF1;
    spiTransaction.rxBuf =(void *) rxBuF1;
    spiTransaction.peripheralIndex = 0U;
    spiTransaction.arg = NULL;

    transferOK = MIBSPI_TRANSFER (gMibspiHandle[MSS_SPIB_J16]、&spiTransaction);

    if ((transferOK!= SystemP_Success)||(spiTransaction.status!= MIBSPI_TRANSFER_COMPLETED))

    DebugP_LOG(“AD738x SPI 读取失败! reg 0x%02x\r\n“、regAddr);
    DebugP_ASSERT (FALSE);
    }

    //进行第二次传输以接收回读数据
    txBuf2[0]= 0x00;//虚拟写入以接收回读数据
    txBuf2[1]= 0x00;

    spiTransaction.txBuf =(void *) txBuf2;
    spiTransaction.rxBuf =(void *) rxBuf2;

    transferOK = MIBSPI_TRANSFER (gMibspiHandle[MSS_SPIB_J16]、&spiTransaction);
    if ((transferOK!= SystemP_Success)||(spiTransaction.status!= MIBSPI_TRANSFER_COMPLETED))

    DebugP_LOG(“AD738x SPI 回读失败! reg 0x%02x\r\n“、regAddr);
    DebugP_ASSERT (FALSE);
    }

    回读=((uint16_t) rxBuf2[0]<< 8)| rxBuf2[1];
    返回读回和 0x0FFF;//只有 12 位有效
    }

    void mibspi_loopback_main (void * args)

    uint16_t readbackData;

    drivers_open();
    BOARD_DRIVERSOpen ();

    /// 1) 将 AD738x-4 断电
    waitForUser(“步骤 1:关闭 AD378x-4……“);
    sendAD738xWrite (0x01、0x0001);/// R1-D0
    ClockP_usleep (10000);//等待 10ms

    /// 2) 返回至正常模式
    waitForUser(“步骤 2:恢复正常...“);
    sendAD738xWrite (0x01、0x0000);/// R1-D0
    ClockP_usleep (10000);//等待 10ms

    /// 3) 软件硬复位
    waitForUser(“步骤 3:软件硬复位...“);
    sendAD738xWrite (0x02、0x00FF);// R2-D7--D0
    ClockP_usleep (10000);//等待 10ms

    /// 4) 检查诊断自检结果
    waitForUser(“步骤 4:检查自检结果...“);
    readbackData = sendAD738xRead (0x03);// R3-D8
    INT 重试次数= 1000;
    while ((readbackData & 0x0100)&& retries-)

    ClockP_usleep (100);//等待 100uS
    readbackData = sendAD738xRead (0x03);
    }
    if(重试<= 0)

    DebugP_log(“自检超时!\n“);
    返回;
    }


    /// 5) 设置 1 线模式、无过采样、无警报、无升压、无 CRC
    waitForUser(“步骤 5:设置 AD738x-4...“);
    sendAD738xWrite (0x02、0x0100);// R2-D9-D8 01->1 线
    ClockP_usleep (100);//等待 100uS
    sendAD738xWrite (0x01、0x0000);/// R1
    ClockP_usleep (100);//等待 100uS

    /// 6) 读回任何其他寄存器以确认上述设置、(1 线,无过采样)
    waitForUser(“步骤 6:读回状态...“);
    readbackData = sendAD738xRead (0x02);//R2-D9-D8
    if (((readbackData & 0x0300)>> 8)!= 0x01)

    DebugP_log(“AD738x 未处于 1 线模式\n“);
    返回;
    }
    readbackData = sendAD738xRead (0x01);// R1-D8-D6
    if (((readbackData & 0x01C0)>> 6)!= 0x0)

    DebugP_log(“AD738x 未处于无过采样模式\n“);
    返回;
    }

    DebugP_log(“AD738x 处于单线制且无过采样模式\n“);
    ClockP_usleep (100);//等待 100uS

    DebugP_LOG(“AD738x SPI 操作完成。\r\n“);

    Board_driversClose();
    drivers_close();

    返回;
    }

    这是我的 Saleae 捕获文件之一:

    e2e.ti.com/.../SessionAD7389_5F00_01.txt

    非常感谢您的帮助和支持。

    此致、

    LIN

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

    您好 Lin、

    从你的 Saleae 捕获和程序,我没有看到任何问题。 问题是 AD7380-4 EVM 的默认模式是什么。 是 1 线、2 线还是 4 线模式? 只要 Saleae 捕获与 AM273x MIBSPI 输出匹配、AM273x 就会做正确的事情。 我不会帮助您进一步调试非 TI 器件。

    如果 MIBSPI 输入不正确、则应寻求 ADI 的帮助。 您可以共享整个设置阶段的 Saleae 捕获。 他们应该能够告诉您问题所在。  

    此致、

    Ming

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

    尊敬的 Ming:

    感谢您的答复。 通过查看 AD7380-4 的数据表,默认模式为 2 线模式。 AD 的支持人员告诉我 SPI 模式应该是 2 而不是 0。 但是、当我更改为 SPI 模式 2 时、仍然无法正常工作。

    是的、完全理解、我正在与 AD 的支持团队合作。 您验证 AM273x 端 SPI 和代码是否有效对我们非常有帮助。

    我将继续与 AD 的支持团队合作、并在问题解决后更新您。

    此致、

    LIN

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

    尊敬的 Ming:

    我可以询问有关 Saleae Logic Pro 8 的问题。 由于我刚在几周前订购并收到该软件、并且我安装了 SW Saleae Logic 2 (2.4.29)、该版本的软件是否太新了?  我记得你说我的捕获有点奇怪。 我是否应该为 Saleae Logic Pro 8 安装早期版本的软件?  

    我们仍然存在 AM273x EVM 和 Saleae 捕获中 SPI 模式不匹配的问题。 我想同步您的设置并获得预期的结果。

    谢谢、此致、

    LIN

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

    您好 Lin、

    我使用的 是逻辑 2 (2.4.29)、关键是 Logic Pro 8 可以捕获 500MSPS 的信号、因为它具有 USB3 连接。 只要您可以将采样率设置为 500MSPS、就可以。

    此致、

    Ming

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

    谢谢 Ming、我也将尝试设置为 500MSPS。

    此致、

    LIN

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

    尊敬的 Ming:

    我是否可以通过任何方法确认 AM273x EVM 上的 SPI MISO 线路工作正常、因为到目前为止、从 LM2595 和 AD7380-4 回读都失败了?

    因此、我想 100%确保 AM273x 侧正常工作。

    此致、

    LIN

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

    您好 Lin、

    可以执行外部环回(使用蓝线将 MOSI 连接到 MISO)。 您应该收到您发送的信息!

    此致、

    Ming  

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

    H Ming、

    我做到了。 尽管 MOSI 和 SIMO 上的数据相同、但这两条线上都有一些脉冲、如下所示。 “那有什么问题吗? 或我的外部连接电缆过长?

    谢谢。此致、

    LIN

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

    尊敬的 Ming:

    有关更多信息、请单击此处。 我缩短了 MOSI 和 SIMO 的外部环回电缆。 连接设置如下所示(希望您能清楚地看到)

    在运行代码 2 SPI 写入和 1 SPI 读取后、在 Saleae 上、MOSI 和 MISO 的结果不同、如此处所示。

    这是可供您参考的 Saleae 捕获文件。

    e2e.ti.com/.../Session05_5F00_loopback.txt

    您能帮我看看原因吗?

    感谢您的帮助和支持。

    此致、

    LIN

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

    尊敬的 Ming:

    很抱歉、我错过了一件事。 MISO 上的数据是代码发出的正确命令。 MOSI 数据错误、但额外有太多的 1 位。

    谢谢。此致、

    LIN

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

    尊敬的 Ming:

    另一个结果。 如果我拿走环回电缆、MOSI 数据干净且正确(与 MISO 不同)。

    此致、

    LIN

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

    您好 Lin、

    外部环回结果看起来正常。 短尖峰 (8ns) 与时钟边沿良好同步。 我想它们是由信号干扰引起的。

    您可以尝试为 MISO 和 MOSI 捕获 50MPS 的模拟信号。

    此致、

    Ming

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

    尊敬的 Ming:

    我有很好的结果要分享。

    我通过更改 S2 并按照您在另一帖子中提供的 SPI 引脚轮廓操作、从 J16 切换到 J7。

    现在设置如下所示

    运行代码时、我得到了干净且匹配的 MOSI 和 SIMO 数据、如下所示:

    这里是 Saleae 捕获文件

    e2e.ti.com/.../Session08_5F00_J7loopback.txt

    因此 J7 的信号优于 J16。 我将重新进行 LMX2595 和 AD7380-4 SPI 写入和 SPI 读取的测试。

    您是否有任何提示或建议、为什么 J16 的 SPI 信号存在该问题? 我想为原型设计解决这个问题。

    此致、

    LIN

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

    您好 Lin、

    现在可以听到您的测试结果是正确的。

    我不熟悉电路板设计。 请针对电路板设计相关问题创建新主题。 硬件应用团队将就此为您提供帮助。

    请关闭此主题。

    此致、

    Ming

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

    尊敬的 Ming:

    再次感谢您对所有问题解决方案的持续支持和耐心解释。

    祝您好运、期待您在另一篇文章中获得支持。

    此致、

    LIN

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

    尊敬的 Ming:

    我们可以继续这一主题吗? 我遇到了 AD7389-4 数据读取/转换问题。

    如果没有、我将创建一个新线程。

    期待您的回复。

    此致、

    LIN

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

    您好 Lin、

    请为新的  AD7389-4 数据读取/转换问题创建新主题。

    此致、

    Ming