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.
工具与软件:
我一直在 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);
我只是猜测这里的背景,但它可能看起来像:
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
根据上述内容、我未使用毫微微 方式(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)来读取接收缓冲区 并转储数据???