你(们)好。
我将具有 AD9834 DDS 的 msp432用于 FSK 调制器。 我需要的数据速率为564.48kbps、我在向上计数模式下使用48MHz 的 TimerA0来生成中断。 在 ISR 中、我将确定下一个需要发送的位是0还是1、然后告诉 AD9834它应该设置为哪两个频率。 MCLK 也是48MHz、因此我认为 ISR 有85个指令周期来执行相对简单的任务。 但是,我错了。
我发现在下一个中断到来之前、我只能运行非常有限的句子(大约3~5)。 我进行了以下测试:
当 MCLK 设置为48MHz、无中断、只需在 while 循环中按如下方式切换 P1.0、"P1OUT |= BIT0"等一个 c 语句需要360ns、我看到已拆分、它包含四个汇编语句。 那么、msp432实际上以大约10MHz 的频率(1/90ns)运行?
在我进一步了解之后、我发现我已将闪存等待状态配置为2、但是当 MSP432以48MHz 运行时、我只能将闪存等待状态重新配置为1。 经过此修改后 、"P1OUT |= BIT0"需要大约290ns、仍然无法达到最大48MHz、但速度肯定更快。
是否有其他建议可以从 msp432获取最快速度?
谢谢你。
P1OUT |= BIT0;
P1OUT &=~BIT0;
P1OUT |= BIT0;
P1OUT &=~BIT0;