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.

[参考译文] MSPM0C1104:SPI 接收问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1475247/mspm0c1104-spi-recieve-problem

器件型号:MSPM0C1104

工具与软件:

我一直在 SPI 0上使用 SPI RTC ,我在 RTC 的一个寄存器上传输数据,然后读取该寄存器,我在 POCI 引脚上得到正确的数据波形,但当读取 RX_DATA 缓冲区时,我在使用 XDS110调试时得到变量中的0xFF 数据

 我一直在使用   SPI_RX_DATA = DL_SPI_receiveData8 (SPI_0_INST);   

请帮助

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

    您传输了什么来获取 RX 数据? SPI 只能在发送的过程中进行接收。 您的器件可能有一个虚拟 NOP 字节、用于外设发送数据。

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

     SPI_RX_DATA = DL_SPI_receiveData8 (SPI_0_INST);  

    我怀疑您没有等待更换(Rx)完成。 请尝试改用类似以下内容:

     SPI_RX_DATA = DL_SPI_receiveDataBlocking8 ((SPI_0_INST);  

    我只是猜测这里的背景,但它可能看起来像:

    Fullscreen
    1
    2
    3
    4
    DL_SPI_transmitDataBlocking8(SPI_0_INST, register_read); // Request
    DL_SPI_transmitDataBlocking8(SPI_0_INST, 0xFF); // Dummy byte to receive value
    (void)DL_SPI_receiveDataBlocking8(SPI_0_INST); // Read and throw away Request Rx
    SPI_RX_data = DL_SPI_receiveDataBlocking8(SPI_0_INST); // Capture register value
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    根据上述内容、我未使用毫微微   方式(void) DL_SPI_receiveDataBlocking8 (SPI_0_INST);//读取并丢弃请求 Rx

    在我的代码中,现在我能够从 SPI 读取数据,但现在之后读取序列数据被转移。

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

    我观察到、当我写入 SPI 配置一次后、第一次尝试读取 SPI 外设时、读取不正确、然后连续读取、然后正确读取。 写入数据完成后、需要在代码中写入的任何内容。

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

    数据是按位还是按字节移位?  

    对于逐位:

    1) 1)确保 SCK 极性和相位(CPOL/CPHA)与 RTC 匹配。 这会在 RTC 数据表中。

    2)长导线可能会引入传播延迟。 我已经看到6MHz 的12cm 导线发生了位移/位涂片。 尝试降低 SPI 速度。

    对于字节寻址:

    1)对于 SPI、每个 Tx 字节都会生成一个 Rx 字节(如上所示)。 您需要考虑每一个来维持通信。

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

    它按字节移位。   我是否必须使用  SPI_RX_DATA = DL_SPI_receiveDataBlocking8 (SPI_0_INST)来读取接收缓冲区 并转储数据???

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

    触发信号

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

    通常、可以。