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.

[参考译文] PGA900:尝试 SPI 连接时没有反应

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1225704/pga900-nothing-happens-when-trying-a-spi-connection

器件型号:PGA900
主题中讨论的其他器件: USB2ANYTS5A23159

您好!

我将此帖子链接到另一个帖子、因为我基本上处于相同的情况下、采用相同的设置。 我正在尝试使用 FTDI 提供的 C232HM-DDHSL-0电缆在 PGA900和我的 PC 之间与 SPI 进行通信。

我为 PGA 编写了一个代码、其中我在 main.c 文件刚开始时直接初始化 SPI 设置(为 SPI 设置 PIN_MUX、在 DIG_IF_CTRL 中启用 SPI、在 COM_RX_INT_ENABLE 寄存器中启用 COMBUF RX 中断)。 我还将 XDS 探针与 CCS 一同用于对 EVM 板上的 PGA 进行编程、并将 USB 转 SPI 电缆连接到 USB2ANY 端口引脚上的主器件。

我的问题是,每当我从主机发送消息,要求在 MCU 运行时写入或读取 COMBUF 寄存器时,我没有从 PGA 得到任何反应: 未触发中断、来自主机消息的数据未写入 COMBUF、主机从 PGA 接收的"应答"是一条只有1的消息。 我使用逻辑分析仪进行了检查、MISO 引脚始终处于高电平状态、因为此时连接到主电缆。

这一次我丢失了、我多次读取 SPI 上的数据表部分并检查了十几次硬件连接。 我确信主芯片的代码工作正常、所以 PGA 肯定有问题。 你是否知道这里可能会出什么问题?

祝您度过美好的一天!

本杰明。

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

    尊敬的 Benjamin:

    如果我理解正确、听起来好像没有触发 COMBUF 中断。 是这样吗?

    COMBUF 中断是我实际上可以帮助解决的最重要的问题。 PGA900在 COMBUF 中断触发后所执行的操作由您决定、属于固件问题类别、遗憾的是、我无能为力。

    成功写入 COM_DIF_TO_MCU 寄存器后、会生成 COMBUF 中断。 您是否已将 PGA900 (M0 MCU)置于复位状态(使用 MICRO_INTERFACT_CONTROL 寄存器)并验证了 SPI 事务是否正常运行? 如果确实如此、您应该能够更改此地址以写入 COM_DIF_TO_MCU 寄存器(B1和 B2)并从 COM_RX_STATUS 进行读取以验证是否触发了中断。 您需要确保在基本 FW 中启用了中断(这是您链接的相关问题和线程正在做的事情)。

    此致!

    -科尔

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

    大家好、Macias 先生、感谢您的回答。

    是的,这是我的问题的一部分:当我从主机发送消息时,中断不会被触发。 但我认为我的问题比这个大:当我将控制器置于重置模式(或运行模式、其行为相同)、并将主系统设置为对 COM_DIF_TO_MCU 或 micro_Interface_control 寄存器进行写入(应始终可以访问此寄存器以进行写入)时、什么也不会发生。 无中断、MISO 线路上无任何内容、最重要的是、寄存器的内容没有按应有的方式进行更改(我通过 XDS 调试探针查看其内容)。

    这就是为什么我不确定它是否是一个固件问题: 从技术上讲、我已经对代码中的所有内容进行了设置以使 SPI 正常工作(至少 PGA900数据表中提供的所有内容)、但我仍未完成任何设置、PGA 的行为方式与使用 SPI 的情况不同。 奇怪。

    不管怎样,我会继续尝试和测试事情,但我真的不知道我会错过什么。

    此致、

    本杰明。

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

    尊敬的 Benjamin:

    为了说明这一点、阅读"不在 MISO Pico 上提供任何内容"、对吗? 请更正我、如果我错了、但您尚未验证任何 SPI 命令实际上都有效。

    这是我的 SPI 写入波形看起来的样子。 与您的波形进行比较可能会很好。 请注意、MOSI = PICO 和 MISO = POCI。  

    我需要在同一时间再次检查实验中的某个东西。 希望在本周结束时继续跟进。

    此致!

    -科尔

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

    您好!

    很抱歉我花时间回答、我上周不能回答。

    我会尝试澄清;从 MOSI/PICO 线路上的主/控制器发送的数据是可见的,并正确发送,我是从我的计算机发送一些 SPI 命令,像你展示的命令。 但是、无论我发送什么消息、PGA 都没有任何反应、即使我已根据数据表和 E2E 上的其他博文正确初始化了寄存器(就像我之前所解释的那样、没有中断、MISO/POCI 线路上没有答案等)。 这就像 Cortex M0看不到我发送的数据、我无法找到它为什么如此。 现在没有任何可用的波形、我要尽快发送一个。

    此致、

    本杰明。

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

    尊敬的 Benjamin:

    没问题、我  也没有在实验中检查我需要的东西。

    无论如何、如果 MCU 成功处于"Reset"模式、您会发送一个读取命令、并且您没有至少在 POCI 行的第一个字节中获得0x05、那么:

    • 器件从不处于复位状态
    • 由于某种原因未启用 SPI
    • 或者 SPI 格式不正确(例如、某些时序规格不正确)

    看看您是否能得到一个波形。 这将帮助我们缩小范围。

    此致!

    -科尔

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

    您好!

    我确实使用逻辑分析仪采集了一些波形。 以下是我的测试条件:

    -我使用 CCS 和 XDS 探针,用我构建的代码对 PGA 进行编程,然后使用"恢复"按钮将其置于运行模式。

    -我设置逻辑分析仪的采样频率为24MHz(远高于 PGA 时钟频率,设置为1MHz)

    -然后,我用一个程序初始化我的主 USB 电缆进行以下操作:首先发送一个写命令写入0x03到 micro_interface_control 上(像你上面显示的那样), 然后在循环读取请求中重复发送以读取 CLK_CTRL_STATUS 的内容(仅用于测试、我想看看 PGA 在复位模式下是否确实使用寄存器的内容来回答我)。

    我得到以下的行为:在 SPI 线路上,主/控制器的第一条消息被正确发送,但 PGA 没有应答,也没有进入复位状态。 然后、当我发送读取请求时、它具有相同的行为:没有答案、就好像它根本没有对 SPI 消息做出反应。

    我包括了一些波形的屏幕截图;第一条和第二条是第一条要重置 PGA 的消息(一条我们看到 CS 线被下拉的时刻,另一条我放大消息的时刻)。 第3张和第4张图片显示了我以类似方式发送的第二条消息(放大图像并放大发送的消息)。 在这些图片中、D0是时钟、D1是 MISO/POCI 线路、D2是 MOSI/PICO 线路、D3是 CS 线路。

    请告诉我、它是否有助于您理解或看到我错过的东西。 目前、我认为 PGA 的行为就像 SPI 未初始化一样、这很奇怪、因为它应该带有我上传并运行的代码。

    此致!

    本杰明。

    图1:

    图2:

    图3:

    图4:

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

    尊敬的 Benjamin:

    谢谢您提供的数据。 从较高的角度来看、逻辑分析仪似乎没有问题。 示波器稍后会有所帮助、但现在我们要做一些其他检查。

    Pico 为高电平表示0xFFFF 等的任何原因。 在我的图片中它是低处。 你在这条线上有一个上拉电阻器吗? 也许您的 SPI 线路上另一个将其保持在高电平但 PGA 无法将该节点驱动为低电平的器件?

    您的固件中是否启用了 COM_RXRDY_INT_EN 位? 此外 、还要确保 DIG_IF_CTRL 也设置了 SPI_EN。 它应该被默认设置、但我不想看到情况不是这样。

    此致!

    -科尔

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

    大家好、Macias 先生、

    当您说"PICO 为高电平"时、我想您说的是逻辑分析仪上的 D1线路、那么它将是 POCI 线路、对吧? (或带有旧名称的 MISO)。 至于为什么它保持在一个高状态,我没有任何: 在我的设置中、我将 EVM 板上的 PGA、用作主器件(如果您更喜欢 SPI 的新名称、则为控制器)的 USB 电缆连接到右侧引脚上的 EVM、 然后我的逻辑分析仪已插接在线路的中间来监控它们。 任何地方都没有上拉电阻器或其他器件、这就是 PGA 不会将此引脚驱动为低电平进行通信的原因。

    至于寄存器、我可以确认在 PGA 上的代码中、寄存器已正确初始化: COM_RX_INT_ENABLE 将 COM_RXRDY_INT_EN 设置为1、DIG_IF_CTRL 将 SPI_EN 设置为1、而 PIN_MUX 将 UART_SEL 设置为0 (启动代码后、我使用 CCS 仔细检查了 PGA 上的寄存器、并且寄存器设置正确)、因此不会出现问题。

    您是否认为问题可能来自其他方面? 我没有想法、严重的是、不会收到可能会阻止 SPI 通信正常工作的东西。

    此致、

    本杰明。

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

    尊敬的 Benjamin:

    感谢确认 D1为 MISO POCI。 如果一切都这么简单、听起来就跟硬件无关。 不过、请使用 SPI 线路上的示波器来抽查一些命令(即 SCLK、但其他也是)、以确保波形没有显示正常。

    我们能否清除固件、然后发送一些 SPI 命令、以便我们可以排除固件? 之间的差异应该足够大。

    此致!

    -科尔  

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

    您好!

    我终于找到了导致此问题的原因。 查看示波器之后、我知道这里是 MISO/POCI (行1)与时钟(行2)。 显然、某种因素阻止 PGA 将线路拉低到一个低电平、这让我觉得 EVM 板上的某个部件可能阻止了连接。

    此问题源于 EVM 上与 OWI 配合使用的组件 TS5A23159。 在我的设置中、我将主电缆的引脚插入 USB2ANY 板的连接器中、因为与将引脚连接到 EVM 上的测试点相比、这样做更容易。 错误之处在于 USB2ANY 连接器上的 MISO 和 MOSI 引脚先经过 TS5A23159、然后再连接到 PGA 插座。 但如果没有 USB2ANY 板、TS5A23159就没有通电(它是由外部电源供电、而不是由 EVM 的稳压器供电、我在查看 EVM 的电气原理图时漏掉了该详细信息)。 当我将 VCC 引脚从主电缆连接到 USB2ANY 连接器的5V_EXT 引脚以为该组件供电时、SPI 通信最终会按预期运行。

    事实证明、这只是我由于设置而出现的硬件问题。 再次感谢您的耐心和帮助。

    此致!

    本杰明。