主题中讨论的其他器件:CC1312R
工具与软件:
您好!
在我们公司中、我将6TiSCH 协议栈移植到 CC1312R (863 -870MHz 频带)。 TSCH 方案引入了严格的时序要求、因此收发器由计时器进行管理。
器件配置概述(simplelink_cc13xx_cc26xx_sdk_7_41_00_17、nortos):
- GPTIMER 在系统中运行任务(在 GPTIMER ISR 上下文中启动 MAC 层操作)
- UART 到边界路由器的通信
- RF 自定义配置
- AESECB、TRNG 等
我的问题1:
优先级设置:
Timer1.timerInstance.interruptPriority ="6";
RF.interruptPriority ="1";
rf.softwareInterruptPriority ="1";
问题是当从 GPTIMER ISR 上下文调用 funcion 时 rf_runCmd 无限挂起。
我的问题2:
rf.softwareInterruptPriority ="1";-应用程序启动
rf.softwareInterruptPriority ="2";-应用程序启动
rf.softwareInterruptPriority ="3";-应用程序启动
rf.softwareInterruptPriority ="4";-硬故障异常(调用堆栈表示 SemaphoreP_Params_init 函数)
rf.softwareInterruptPriority ="5";-硬故障异常(调用堆栈表示 SemaphoreP_Params_init 函数)
....
为什么它以这种方式工作?
问题1.
射频驱动器是如何工作的?
无线电硬件会引发中断、在 ISR 环境中由驱动程序在内部进行处理、然后会引发软件中断、从该中断调用无线电回调?
问题2.
syscfg 中的什么是软件中断优先级? 这是否是引发软件中断(也称为 SWI)时 TI 驱动程序组件执行的优先级?
问题3.
SWI 的优先级是多少?为什么在 SYSCFG 中无法配置该中断优先级? 例如、如果在 GPTIMER ISR 中我需要完整执行无线电命令、则涉及射频 ISR 和射频软件 ISR。 因此、射频 ISR 必须优先于 GPTIMER ISR、射频软件 ISR 必须优先于射频 ISR。 我不知道射频软件 ISR 可以取代什么、也不能取代什么。