SNC的主要特性如下(图3):
- 传感器节点指令集(SeNIS),包含10条微码生成指令,适用于:
o 轻松创建指向内存缓冲区的指针
o 轮询串行接口状态位
o 比较阈值
- 系统RAM用于微码存储和数据
- DMA功能,用于将数据直接从通信接口传输到系统RAM
- 直接访问所有外设和寄存器
- 通过PMU在中断触发和域上电(例如定时器、GPIO)后立即执行
- SNC到主处理器通知,以及反向通知
SNC与所有通信接口(SPI、I2C和UART)位于相同的电源域,SNC还可以控制其他电源域。它执行驻留在系统RAM中的微码,其中SNC具有直接内存连接;以系统时钟速度运行;并且可以生成中断以通知PMU所有操作都已完成,从而可以关闭整个系统的电源。

图3. 传感器节点控制器框图
使用此类专用硬件执行传感器和外设数据操作的架构的主要优点是:
- 主CPU睡眠时间更长,从而可以节省功耗
- 节省MIPS,因为CPU不必访问慢速外设或执行简单的数据操作
不过它有一些缺点。SNC编程模型的非常简单的指令集仅允许基本操作。另外,编程SNC需要使用汇编语言。最后,由于SNC是一个非常简单的模块,调试会变得复杂。
节省功耗和MIPS
我们已经进行了一系列测量,证明了使用SNC可以实现的功耗和MIPS节省。这些测量是在Dialog的基于ARM Cortex-M33的DA1469x SoC上进行的,并比较了只使用主CPU和在SNC支持下执行的相同任务。第一组测量集中在访问通常用于传感器读数的慢速外设(如I2C和SPI)时节省的功耗/MIPS。第二组测量着眼于使用DA1469x中包含的蓝牙低功耗(BLE)通信模块的实际应用案例。
表1描述了传输小型SPI或I2C数据事务(如写/读16/128字节)时的能耗。

表1:传输小型数据事务时的能耗(数字为1.8 V,8-bit传输)
与CPU(CM33)相比,SNC执行事务所需的时间要短很多,如表2所示。由于CPU可能需要执行忙等待,因此节省了时间相当于节省了MIPS。

表2:SNC写/读8 bit数据所需的时间以及CPU相应所需的时间
对现实生活中的使用案例,我们比较了每隔1500毫秒(表3)和500毫秒(表4)进行广播时所消耗的功率,同时使用SPI每100毫秒读取加速计传感器一次。

表3:每1500毫秒进行广播时的能耗,使用SPI每100毫秒进行一次传感器读取

表4:每500毫秒进行广播时的能耗,使用SPI每100毫秒进行一次传感器读取
在复杂的应用中,如果需要访问多个传感器,考虑到缓存未命中和任务切换等问题,对MCU的占用会更大。