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.

[参考译文] PGA970EVM:为 Hercules 微控制器提供错误值的 SPI 接口

Guru**** 2553260 points
Other Parts Discussed in Thread: PGA970, USB2ANY

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/608316/pga970evm-spi-interface-giving-erroneous-values-to-hercules-microcontroller

器件型号:PGA970EVM
主题中讨论的其他器件:PGA970USB2ANY

我正在尝试使用 Hercules 微控制器读取 PGA970的 Micro_Interface_Control 寄存器。 我复制了 USB2ANY 板的波形、我的示波器的两个波形都在下面。 USB2ANY 板似乎正确显示了寄存器的值(应由 Hercules 设置为0x03)、但 Hercules 获得不同的响应。 不仅是开头和结尾的不同位、还包括不同的数据值。

有人能解释为什么会有差异吗? 尤其是、如果有人可以解释为什么在完成 SPI 消息的地址部分之前、Hercules 微控制器会被发送一位?

SPI 差异:

  • Hercules 的通信频率为 USB2ANY 的~10倍
  • Hercules 自动代码发生器不能在脉冲之间增加延迟。 或者至少我不知道如何使它生成一个。
  • USB2ANY 在第一个相同的读取命令之后生成第二个读取命令。 但是、对这两种情况的响应并不总是相同的、第二种情况总是有正确的响应、而第一种情况有时有正确的响应。

CH1 (黄色)是 SPI 时钟

CH2 (青色)是命令、或 MOSI

CH3 (品红色)是响应、即 SIMO

通道4 (绿色)是芯片选择

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使调用加倍可使 Hercules 正确获得正确的值:
    mibspiSetData (mibspiREG3、0、READ_DIGITAL_INTERF_REGISTER);//读取 Micro_interface_control 寄存器
    mibspiTransfer (mibspiREG3、0);//通过 SPI 总线发送数据
    mibspiGetData (mibspiREG3、0、TG_RX_DATA_0);//接收到 SPI 缓冲区中的副本到该变量。
    ->此数据在第一次调用时无效
    MibspiSetData (mibspiREG3、0、READ_DIGITAL_INTERFIT_REGTER);//出于某种原因重新调用 SPI?
    mibspiTransfer (mibspiREG3、0);
    mibspiGetData (mibspiREG3、0、TG_RX_DATA_0);//此数据现在将准确,以前的数据不准确。

    SPI 调用似乎是一次过时还是某种情况? 这有道理吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在传输数据之前进行两次呼叫的要求是正确的。