工具与软件:
MATHACL ATAN2的设置包括一个 NUMITER 值、用于说明需要多少次迭代。 但是、在参考手册的第5.4.2节中、它只说明了需要写入 CTL、OP1和 OP2、然后从 RES1读取结果。 这是 MathIQ 源文件中实现的过程。 在读取 RES1之前、是否无需等待迭代完成? 参考手册描述了 NUMITER 需要更长的时间才能计算出较高的值、但并未说明如何在示例中实现该值、并且指出没有状态位(大概包括 BUSY 位)。
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.
工具与软件:
MATHACL ATAN2的设置包括一个 NUMITER 值、用于说明需要多少次迭代。 但是、在参考手册的第5.4.2节中、它只说明了需要写入 CTL、OP1和 OP2、然后从 RES1读取结果。 这是 MathIQ 源文件中实现的过程。 在读取 RES1之前、是否无需等待迭代完成? 参考手册描述了 NUMITER 需要更长的时间才能计算出较高的值、但并未说明如何在示例中实现该值、并且指出没有状态位(大概包括 BUSY 位)。
您好、Alan:
我现在正在查看我们的文档、特别是 MSPM0 G 系列 TRM、位于第5.4.2节、我看到该函数的说明包括 CTL。 NUMITER 字段用于计算反正切的迭代次数。

在同一文档的表5-5中、我还看到了 CTL。 NUMITER 用于指示该操作的迭代次数。 我们在这里看到的是同一个文档、还是我遗漏了什么?

看看 SDK 中的 MATHACL 示例、可以 看到我们没有演示 ATAN2函数、但我们演示了其他 TRIG 函数、并包括一个等待状态的函数。 需清除的 BUSY 位。 ATAN2运算应以类似的方式执行。
迪伦
对不起,我解释自己很差。
TRM 5.4.2结尾的文本如下:

没有提到在步骤3和步骤4之间可能需要等待的情况。
当我提到一个例子时,我应该更清楚-我正在查看 mathIQ 库的源代码,特别是函数_IQNatan2 (),其中执行了以下行:

再次重申、我假设配置操作数和读取结果之间需要等待。
(现在我再次看看、我看到触发操作数在 TRM 中列为 OP2、但在上面第286行的注释中列为 OP1。 您能解释一下吗?)
鉴于 TRM 配置部分或 mathIQ 代码中没有提到等待、NUMITER 对时序有何影响、我如何确保等待足够长?
您好、Alan:
很抱歉这里的响应延迟了。 我在我们的内部文档中找到了更清晰的信息。
因此、MATHACL 外设的确切行为是、当您尝试在结果准备就绪之前读取结果寄存器时、数据总线将停止、直到准备就绪。 那么应该发生的情况是、在操作完成之前、您只能在函数中读取寄存器。 实际上、这会导致器件等待直到结果准备就绪、而代码未明确表示这样做。 这也意味着源代码正在等待正确的数据可用、即使源代码似乎没有这样做。
对我来说、这是一个文档问题、我将在 TRM 中提交一个 TT 来更好地解释这一点、因为我可以公开发现的任何地方都没有解释这种行为、当然、我们的许多客户也会想知道如何从数学加速器获得正确的结果。
如果您有更多未解决的问题、或者我是否可以帮助您解决任何其他问题、请告诉我。