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.

[参考译文] TMS320F28027:在4个周期内获取 GPADAT

Guru**** 2589245 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/661708/tms320f28027-fetch-gpadat-in-4-cycles

器件型号:TMS320F28027

您好!

我使用适用于28027的 Piccolo EVM 板、需要读取 GPIO 的低16位并写入 Int16_t 阵列。 结果是、读取 GPADAT 和写入存储器的每个周期应恰好花费4个周期、因为 GPADAT 每4个周期发生一次变化、并循环 N 次。 我尝试过很多 MOV 方法、但我能做的最好的方法是将 GPADAT 置于 AL (ACC)上、然后将 AL 置于 GPADAT 上、这需要更像16 个周期(根据 CCS v7时钟计数器)那样的时间 循环使用 BANZ 打破了这一管道、因此我远远没有达到我的目标。

读取数据:
  MOV AL、*+ XAR3[0]
  MOV * XAR4++、AL
  Banz ReadData,AR0-

我接受、在这种依赖关系下、我可能需要再次调用相同的行、但至少我需要确保它需要4个周期。  

感谢此论坛的帮助!

谢谢、

帕维尔  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Pavel、
    是的、由于流水线刷新、您不会使用 BANZ 到达那里。 请记住、GPADAT 寄存器位于外设帧1中、该外设帧在读取访问时具有2个等待状态。 我无法说明您在 CCS 中看到的16个时钟周期-在我的机器上、标签在6个周期内返回后的第一条指令上有一个 BP。
    'N'是固定的并且已知? 如果是这样、您显然可以通过简单地写出指令对来完成此操作。 例如:
    NOP
    MOVAL、*+ XAR3[0]
    MOV* XAR4++、AL
    MOVAL、*+ XAR3[0]
    MOV* XAR4++、AL
    MOVAL、*+ XAR3[0]
    MOV* XAR4++、AL
    MOVAL、*+ XAR3[0]
    MOV* XAR4++、AL
    MOVAL、*+ XAR3[0]
    MOV* XAR4++、AL
    NOP
    在我的机器上、这在 NOP 之间以21个周期运行、我认为这是正确的、允许等待状态。 这是否可行?
    此致、
    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Richard、

    谢谢您、我将尝试您的建议。 XAR4指向 RAM 中的数组、因此后续写入之间的2个周期就足够了?

    谢谢、
    帕维尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pavel、
    正确。 RAM 具有零读/写等待状态、因此不会出现这种情况。
    数据表的第52页显示了等待状态:
    www.ti.com/.../tms320f28027.pdf
    此致、
    Richard