主题中讨论的其他器件:CC1312PSIP
在 CC1312PSIP 芯片组上运行 PG 应用程序并使用 SDK 7_10_00_63_eng 时、我们面临着以下问题。
在以下情况下、我没有获得 LASE_CMD_DONE 中断:
我们的内部闪存中有一个特殊扇区用于保存器件输出状态。
经过250次写入操作后、我必须擦除该扇区(10.3毫秒)并重写已保存的数据(又是20-300微秒)。
为了描述这个问题,我想显示自 CPU 系统调用 RF_postCmd ()以来的一个良好周期和不良周期。
良好循环
CPU 系统 CPU 无线电
| |
| RF_postCmd () |
| | 13.2毫秒后触发中断
|
| rf_hwiCpe0PowerFsm (uintptr_t a0)
在 RF_fsmSetupState 中
/*将设置链发送到射频内核*/
rf_dbellSubmitCmdAsync ((uint32_t) pRadioSetup);
|
|
200微秒后触发中断
| rf_hwiCpe0PowerFsm(uintptr_t a0)
处于 rf_fsmActiveState 中
/*分派下一个命令*/
rf_dispatchNextCmd (); |
|
57us 后触发中断
|
| rf_hwiCpe0Active (uintptr_t a)
/*无 CMD_DONE、无 LAST_CMD_DONE
|
|
671us 后触发中断
|
| rf_hwiCpe0Active (uintptr_t a)
/*中断只是一个没有终止的普通事件。 */
CMD_DONE
|
1毫秒后触发中断
|
|
| rf_hwiCpe0Active (uintptr_t a)
/*查找终止事件。 */
最后_ CMD_DONE
if (rfcpeifg &(RFC_DBELL_RFCPEIFG_LAST_FG_COMMAND_DONE_M | RFC_DBELL_RFCPEIFG_LAST_COMMAND_DONE_M))
/*我们将调用回调并取消分配命令。 */
nextEvent |= RF_FsmEventLastCommandDone;

红线–rf_postCmd
Brown 线路–中断(五次、包括 Last_CMD_DONE)
蓝线- rf_dispatchNextCmd
坏周期
CPU 系统 CPU 无线电
||
| RF_postCmd () |
||
| |
| |
| flashSectorElaze 后12.54毫秒 |
|
|
10.33毫秒后触发中断
| rf_hwiCpe0PowerFsm (uintptr_t a0)
在 RF_fsmSetupState 中
/*将设置链发送到射频内核*/
rf_dbellSubmitCmdAsync ((uint32_t) pRadioSetup);
|
|
| flashDataWrite
|
|
|
257 usec 后触发中断
| rf_hwiCpe0PowerFsm(uintptr_t a0)
处于 rf_fsmActiveState 中
/*分派下一个命令*/
rf_dispatchNextCmd ();
| flashDataWrite
|
59微秒后触发中断
|
| rf_hwiCpe0Active (uintptr_t a)
/*无 CMD_DONE、无 LAST_CMD_DONE
| flashDataWrite
|
162us 后触发中断
|
| rf_hwiCpe0Active (uintptr_t a)
/*中断只是一个没有终止的普通事件。 */
CMD_DONE
288ms 内无中断 Last_CMD_DONE、直到 CPU 系统执行整个射频栈重新启动。

红线–rf_postCmd
棕色线–中断(仅四个中断、不是 Last_CMD_DONE 中的最后一个)
蓝线- rf_dispatchNextCmd
紫色线- flashSectorElaze + flashDataWrite
