随着物联网]此外,也许还需要高精度的传感器和模数转换器 (ADC),并且这些器件可能还需要定期校准。对于线性误差,使用公式即可轻松补偿。然而,非线性误差与传感器读数之间不存在任何固定偏差模式,因此不能简单地用数学方法进行补偿。通常,补偿固件非线性误差的最简单方法就是,使用数据查找表将所需的校正数据存储在存储器中。 本文将简要介绍传感器误差和]对于能检测温度、压力和电压等模拟量的传感器,都可能存在非线性误差。在项目开发阶段,对照精确基准来测试传感器,并将传感器数字输出与基准值进行比较,这一点尤为重要。由此开发人员可以尽早确定是否存在任何传感器基准值偏离,以及就应用要求而言这些偏差可否接受。然后开发人员就能决定是否有必要补偿任何偏差,如有必要,则是否应该在硬件或固件中补偿偏差。 某些传感器误差或许是可预测的线性误差。这类误差补偿很简单,只需对传感器输出加上或减去某个常数即可。有时这类误差可能会随传感器量程而变化。例如,从零到三分之一量程,可能需要加上某个常数;从三分之一到二分之一量程,可能就需要不同的常数。 这些误差均可进行预测,显然也很容易校正,但是,精确读数的偏差可能会随时间推移而发生变化。此外,由于传感器暴露于极端温度、环境湿度大或传感器老化等原因,日后可能还会出现新的误差。是否需要校正这些误差则始终取决于应用。或许有必要在极端温度、压力和湿度条件下测试系统,以确定传感器性能。汽车、军事和某些工业系统等应用需要对这些环境进行检测。然而,如今许多新的物联网端点已然延伸至传感器应用范围之外,因此传感器测试可能成为一项新要求。 与模拟传感器一样,诸如]数据查找表是一种实用、有效的方法,可以快速执行一些常见计算,诸如三角函数等复杂计算,或者字节的位反转或格雷码转换等简单计算。与在固件中执行位反转相比,使用 256 字节的查找表进行字节位反转速度明显更快。将此查找表存储在程序或数据闪存中很安全,因为它占用空间很小而且永远不需要更改。 此外,将数据查找表用于存储传感器数据校准,也是一种行之有效的方法。像内置]用于校正 24 位数据的校准查找表片段可能如表 1 所示。 | 传感器读数 | | 传感器校正值 | : | | : | 01 AB 24h | | 00 01 AB 21h | 01 AB 25h | | 00 01 AB 22h | 01 AB 26h | | 00 01 AB 24h | : | | : |
表]此例中,原始输入值是需要进行误差校正的源读数。然后,原始值将作为 24 位地址用于查找相应的 32 位校正值,其中最高有效字节始终为 00h。如果查找表不是从地址零开始的,则可以为原始输入值添加偏移。 在决定查找表的存储位置之前,务必确定查找表的大小及是否需要重写。这两点都重要。若永远不需要重写,则可以将查找表存储于微控制器的可用片上闪存中。但是如果传感器需要定期重新校准,那么就要重写内部闪存,即要求擦除数据表所在的整个闪存扇区并重新编程。 如果该闪存扇区与程序存储器共用空间,则可能需要重新编译代码。即使查找表位于独立专用扇区,日后存储器要求可能会更改或需要扩展,从而导致部分查找表扇区空间重新调整用于其他代码。这使现场传感器校准变得复杂,而且要求通过网络下载重新编译的代码,也会使物联网端点无法独立进行自校准。如果涉及多个传感器,那么问题将进一步复杂化。 对于片上闪存程序存储器而言,使用大型查找表(如含]在基于微控制器的系统中,使用这种大型数据查找表的最佳解决方案是使用外部闪存。这为添加数兆字节的查找表提供了简便方法,而不会牺牲内部闪存程序存储器。同时,系统也能轻松重写查找表,而不会影响微控制器的内部闪存。 对于高性能系统,添加外部并行闪存来扩展程序和数据存储器是常用方法。但是,这要求微控制器具有外部数据总线。额外的地址和数据总线以及所需的控制信号需要占用微控制器]对于大多数系统,最佳解决方案是使用外部串行数据闪存。这类闪存使用串行外设接口 (SPI) 进行数据传输,只需占用四个微控制器引脚。 ON]LE25S161PCTXG 的 SPI 信号通常用于时钟、数据和片选(图1)。它还具有两个额外引脚。WP 是低电平有效写保护信号,用于防止写入器件的状态寄存器。这可用于防止低优先级固件任务未经授权重写设备。HOLD 可暂停正在进行的数据传输。如果微控制器在数据传输过程中必须执行中断,这一功能将十分有用。数据传输将暂停直至中断处理完毕,然后从中断处继续传输。 图 1:ON Semiconductor 的 LE25S161PCTXG 串行闪存采用 8 引脚 UDFN 封装,具有 3 x 4 mm 的超小尺寸,提供用于时钟、数据和片选的通常 SPI 信号。(图片来源:ON Semiconductor) 若要读取存储于此器件中的简单两列查找表,最简单的方法是获取传感器读数,添加存储器偏移,然后读取该地址位置对应的存储器内容。该地址对应的存储器内容表示传感器校正读数。 高性能物联网端点要求时钟速度更快、处理器性能更出色、SPI 更灵活。针对这些应用,STMicroelectronics 推出了 STM32L4 高性能微控制器系列。例如,STM32L496VG 是 STM32L4 产品系列中的一款微控制器,工作频率为 80 MHz,具有带浮点单元 (FPU) 的 Arm® Cortex®-M4 内核。该器件具有 8 Mbit 的闪存和 320 KB 的 SRAM,支持 1.71 至 3.6 V 的工作电压,与 ON Semiconductor 的 LE25S161PCTXG 的 1.65 至 1.95 V 工作电压重叠。 STM32L496VG] 图]STM32L496G-DISCO 开发板为 STM32L496VG 的开发提供了有力支持(图3)。这款物联网终端开发板功能全面,包括立体声微机电系统 (MEMS) 麦克风、8 位摄像头连接器、八个 LED、四向操纵杆和 240 x 240 像素彩色 LCD。连接器引脚可用作 ADC 输入、四通道 SPI 引脚和大多数 I/O。 图 3:STM32L496G-DISCO 开发板可为 ST32L496VG 硬件和固件开发提供完善的评估环境。(图片来源:STMicroelectronics) STM32L496VG]STMicroelectronics 的四通道 SPI 可与串行数据闪存器件快速连接。在标准 SPI 模式下,所有操作均使用 SPI 寄存器执行。数据通过读写 SPI 数据寄存器进行传输。收到数据后会产生中断。这与 STM32L496VG 的三种标准 SPI 工作模式相同。标准 SPI 模式支持单通道、双通道和四通道数据传输。ON Semiconductor 的 LE25S161 支持单通道和双通道 SPI 模式,并且在双通道 SPI 模式下可与 STM32L496VG 轻松连接(图 4)。 图 4:双通道 SPI 模式下,STMicroelectronics 的 STM32L496VG 四通道 SPI 串口可与 ON Semiconductor 的 LE25S161 连接,SIO0 和 SIO1 可实现双向数据传输,SCLK 可达 40 MHz,速率为 80 Mb/s。(图片来源:Digi-Key Electronics) 若选择]四通道 SPI 还支持存储器映射模式,可将外部串行闪存映射到微控制器的程序或数据存储空间,从而使微控制器固件能够访问外部 SPI 闪存,几乎与访问微控制器内部存储器无异,进而使四通道 SPI 操作对固件是透明的。 如果无需频繁访问查找表,则与标准]与标准 SPI 模式相比,存储器映射模式能够更快速有效地应对频繁访问查找表和高中断率的应用。这种方法简化了固件,防止因不同优先级的四通道 SPI 同时访问而导致的问题,以及减少中断冲突。 然而,实现存储器映射查找表有一点不足,即可能会污染数据缓存。虽然]针对查找表数据缓存污染的解决方案很少。若硬件允许,可将查找表所在区域标记为不可缓存。另一种解决方案是在访问查找表之前禁用数据缓存,然后在访问之后重新启用。如果缓存切换(启用/禁用)造成的性能损失尚可接受,那么这种方法也就可以接受了。有些数据缓存支持特定架构的缓存控制指令,这种方式可以防止缓存污染。为特定应用寻求数据缓存配置的最佳方法时,务必对系统性能进行基准测试。 串行闪存应布置在印刷电路板上,印制线长度不应超过]在物联网端点中,外部 SPI 闪存器件是实现大型数据查找表的有效解决方案。这种方法可轻松实现在系统重新编程和升级,并且最大限度地减少微控制器资源的使用。
|