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:来自 Halcogen spiTransmitData、spiTransmitAndReceiveData 的 API、以10MHz 波特率执行4字节

Guru**** 2540720 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1040109/tms570ls1224-apis-from-halcogen-spitransmitdata-spitransmitandreceivedata-taking-10us-to-execute-at-10mhz-baud-rate-for-4-bytes

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGENTMS570LC4357

SPI5是主器件。 请参阅随附的 SPI5时钟配置图像

我们尝试了两种方法

  1. 进行 CRC 计算
  2. 而不进行 CRC 计算

 

Halcogen spiTransmitData、spiTransmitAndReceiveData 使用两个 API。 由于运行缓慢、我们尝试使用另一个包装程序、只调用 spiTransmitAndReceiveData、这也花费了9.6us 来提供输出。

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

    您好!

     如何获得9.6us? 您是否使用了示波器或 PMU?  

    您的测量中9.6us 间隔的起始点和结束点是什么时候?  

    您可以使用 PMU 来测量 API 所用的 CPU 周期数:

    /*开始周期计数器*/
    _pmuStartCounter_(pmuCYCLE _计数器);

    /* SPI API */

    spiTransmitData (...);

    SpiTransmitAndReceiveData(...)

    /*停止周期计数器*/
    _pmuStopCounter_(pmuCYCLE _计数器);

    /*读取 CNNT 周期*/
    周期=_pmuGetCycleCount_();

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

    在调用此 API 之前和之后、我尝试切换 PIN。 我将使用 PMU 尝试此操作。

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

    切换 GIO 引脚足以测量 SP API 消耗的时间。

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

    您能想到执行花费10us 的任何原因吗?

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

    请告诉我您的代码中的哪个部分需要10us 才能执行?

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

    具有 Out CRC 的代码的其他部分。

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

    我将进行检查  

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

    你好 Sachin、

    我只需检查 SPI API 所采用的 CPU 周期:  

    1. spiTransmitAndReceiveData (spiREG1、&dataconfig1_t、1、TX_Data_Master、RX_Data_Master);

      这需要313个 CPU 周期来发送和接收1个字。  

    spiTransmitData (spiREG1、&dataconfig1_t、1、TX_Data_Slave);

      这需要相同数量的 CPU 周期。

    以下是测量代码:

    CPU 频率为160MHz,因此在“其它”部分中使用的两个 API 需要626个 CPU 周期:626*1000/160=3.9us。

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

    你好 Sachin、

    根据今天的 conf 调用、这是 MibSPI+DMA 的示例。 此示例在 TMS570LC4357 Launchpad 上实现。  

    e2e.ti.com/.../TMS570LC4357_5F00_MibSPI1_2600_3_5F00_DMA.zip