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.

[参考译文] TMS570LS1224:读取 SPI5-冲突

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1075075/tms570ls1224-reading-spi5--conflicts

部件号:TMS570LS1224

您好,

我有一个来自 Allergo 的位置传感器芯片。 我想从芯片读取两个参数。 参数1为绝对角度。 参数2是错误寄存器。 我们需要每66us (中断)获取一个值。

读取参数1:

"代码1.

#define SPIDATA1 (*(volatile UINT32 *) 0xFFF7F43CU)
#define SPIFLAG (*(volatile UINT32 *) 0xFFF7F410U)
#define SPIBUF (*(volatile UINT32 *) 0xFFF7F440U)

SPIDATA1=0x070E2000;
While (((SPIFLAG 和0x00000100U)!= 0x00000100U)

}
AbsoluteAnglVal= SPIBUF & 0xFFFU;  如果仅在66us (interrupt)执行此操作,则所有操作都正常。 执行时间为2.6 us。

"

读取参数2:

"代码2.

#define SPIDATA1 (*(volatile UINT32 *) 0xFFF7F43CU)
#define SPIFLAG (*(volatile UINT32 *) 0xFFF7F410U)
#define SPIBUF (*(volatile UINT32 *) 0xFFF7F440U)

SPIDATA1=0x070E2400;
While (((SPIFLAG 和0x00000100U)!= 0x00000100U)

}
Err寄存 器= SPIBUF 和0xFFFU; 如果仅在66us (interrupt)执行此操作,则所有操作都正常。 执行时间为2.6 us。

当我合并这两个代码并尝试逐个读取这两个参数时,我无法在缓冲区中获得正确的值。  在写入下一个 TxDATA 之前,我是否需要清除另一个寄存器?

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

    你好,萨钦,

    1.传感器可能需要更多时间来准备数据。 是否可以增加 WDELAY 和 C2TDELAY,然后重试?

    2.在将数据写入 SPIDAT1之前,请确保 SPIFLG 寄存器中没有设置错误标志。

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

    QJ 您好,

    我观察到代码1的输出是代码2的预期输出,反之亦然。  

    您是否意味着增加代码1和代码2的延迟。代码1首先执行,代码2在代码1后执行。  

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

    你好,萨钦,

    是否可以尝试 HAL 代码中的 API: spiReceiveData()?

    spiDAT1_t 数据通信 fig1_t;

    数据通信图1_t.CS_HOLD =假;
    数据通信图1_t.WDEL =真;
    数据通信图1_t.DFSEL = SPI_FMT_0;
    数据通信图1_t.CSNR = 0xFE;

    蜘蛛();

    /*通过轮询模式启动 SPI1传输和接收*/
    蜘蛛型传输接收数据(spireG1,&dataconfig1_t,16,TX_Data_Master,RX_Data_Master);