
CRC16:无线传输易受干扰,一般通信帧需要添加CRC16检测正确性,我们采用查表的方法减少CRC16的计算时间。计算空中传输时间:该时间对于组网算法十分重要,它包含较多的浮点运算。所幸的是,大部分数据帧长度是固定的,可以提前计算好;对于变化长度的数据帧,可以采用“命中算法”来提高效率,即保存本次长度与时间的值,如果下次长度相同直接返回该时间值。4. ConTIki操作系统下进程低功耗设计
终端支持TDMA算法,内嵌多种无线通信健壮性技术,智能解决:通信碰撞、微弱信号、外界干扰、断网继连等挑战。这样一来,必然带来软件复杂度。
使用成熟稳定的已有软件库是人们解决软件复杂度的有效方法,因此,我们引入高效强大的ConTIki物联网操作系统。
这样一来,终端系统低功耗设计需要兼顾:MCU运行模式、外设中断、ConTIkiOS和进程。

上图展示了系统低功耗设计的时序逻辑。我们看到一个基本的思想:当所有的进程“同意休眠”,空闲时ConTIkiOS执行HALT命令使MCU进入休眠状态;当RTC或EXT中断唤醒MCU时,对应的进程处理该逻辑,完成后“同意休眠”。
这种设计保证了系统只有一个HALT入口,同时复杂的逻辑交给不同的进程处理,降低了设计的复杂度。
为检测是否“所有进程同意休眠”,我们设计了如下图的数据结构:
数据AgrHalt的位宽与进程数目绑定,因此使用typedef定义该数据类型。
当AgrHalt==0时,说明“所有进程同意休眠”,一旦ContikiOS进入空闲状态,它将调用HALT()命令,使MCU进入Active-HALT状态;
当AgrHalt != 0时,说明“某进程还有活要干”,此时ContikiOS进入空闲状态后,它调用WFI()命令,使MCU进入WFI状态。

5. TDMA通信算法
纵然把单个终端的功耗降到极致,在实际组网运行中该终端的功耗未必是低的,这个叫组网动态运行功耗。组网动态运行功耗依赖于无线通信协议,试想,如果终端需要争抢信道和重传数据帧,那就意味着需要N倍的电能才能完成一次通信,节能将成为空中楼阁。
锐米LoRa终端一开始就把低功耗性能作为重要设计目标,因此我们抛弃了简单但是耗能的CSMA算法,而选用TDMA算法。根据大量的实测,我们坚信这是符合LoRa特性的。实际上,当网络负荷达到中载(带宽利用率超过50%)时,CSMA的效率大减且耗能增大,因为大量的终端通信冲突,不得不延时重传。
TDMA的原理如下图所示:N个终端将一段时间分成N个时隙(Slot),每个终端在自己分配的时隙与网关通信。没有争抢,没有碰撞,节能效果自然非凡。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-81991-2.html
北洋水师出击必须采取一字横阵向前冲