您好!
背景:我目前正在进行一个有关无线网络的课程项目。 我打算构建一个网络、其中中央节点将从分布在特定环境中的多个节点收集数据(例如电路板温度、RSSI)。 您可以将此网络的物理拓扑想象成星型。 目前、我处于研究如何通过裸机编程正确发送数据包的初步阶段、即我很少使用驱动程序和 API、而是使用无线电门铃模块直接与无线电通信。 我正在使用 prop 无线电执行任务、我正在使用的命令序列如下所示(用乡村伪代码编写此代码)
HWREG (CMDR)= CMD_START_TIMER
HWREG (CMDR)= CMD_PROP_RADIO_DIV_SETUP
while (CMD_PROP_RADIO_DIV_SETUP.STATUS!=完成)
HWREG (CMDR)= CMD_FS
while (CMD_FS.status!=完成)
while (1){ //永久发送
HWREG (CMDR)= CMD_PROP_TX
while (CMD_PROP_TX.status!=完成)
}
在此之前、我已经初始化了所有必要的外设、例如振荡器(选择了 HF xtal)、射频内核电源、时钟门控等 在这些行中、我观察到 CMD_PROP_TX 在 经过固定的 while 循环迭代后卡在活动模式(顺便说一下 、我打算传输的数据包大小仅为50字节)。 在这里、我观察到 RFHWIFG 寄存器的 SYNTH_NO_LOCK 域已被提升。 我发现我应该延迟下一 个 CMD_PROP_TX 命令的传输以避免发出此标志(我正在使用 CPUDELAY()来引入此延迟,而我只是在使用 参数的值)。 我认为这样做可以解决这个问题、但是、不可以、我发送的最后一条命令仍然处于活动模式。
我观察到的一点是、RFESOFT1和 RATCCH1也被提升(就技术手册所说的那样、由于通道5、6和7是唯一可供用户使用的通道、所以我无法控制该寄存器)。 这是否与命令卡在激活模式中有关? 比如、比如说、它进入了一个我不知道的中断处理程序? (首先、我没有启用任何与无线电相关的中断)。 我试图清除这些标志、看看这是否能解决问题、但显然、这不能解决?
可以帮帮我吗? 我只想连续传输数据包。 展望未来、我确信我将在接收端再次遇到此问题。