0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32微控制器的物联网节点设计

h1654155282.3538 来源:陈翠 作者:电路城 2019-09-29 15:05 次阅读

随着物联网IoT网络日趋复杂,物联网端点边缘处理的复杂度亦水涨船高。因而可能需要使用新系统来升级现有的端点,这个系统的微控制器需要更快的时钟速度、更大的存储器,处理器内核要更强大。

此外,也许还需要高精度传感器模数转换器ADC),并且这些器件可能还需要定期校准。对于线性误差,使用公式即可轻松补偿。然而,非线性误差与传感器读数之间不存在任何固定偏差模式,因此不能简单地用数学方法进行补偿。通常,补偿固件非线性误差的最简单方法就是,使用数据查找表将所需的校正数据存储在存储器中。

本文将简要介绍传感器误差和ADC误差,并讨论使用数据查找表来校正此类误差的优势。此外,本文还将阐释在基于STMicroelectronics的STM32L496VG微控制器的系统中,如何使用ONSemiconductor的外部LE25S161PCTXG串行外设接口(SPI)闪存芯片,来实现实用的、高性价比数据闪存查找表。

传感器误差

对于能检测温度、压力和电压等模拟量的传感器,都可能存在非线性误差。在项目开发阶段,对照精确基准来测试传感器,并将传感器数字输出与基准值进行比较,这一点尤为重要。由此开发人员可以尽早确定是否存在任何传感器基准值偏离,以及就应用要求而言这些偏差可否接受。然后开发人员就能决定是否有必要补偿任何偏差,如有必要,则是否应该在硬件或固件中补偿偏差。

某些传感器误差或许是可预测的线性误差。这类误差补偿很简单,只需对传感器输出加上或减去某个常数即可。有时这类误差可能会随传感器量程而变化。例如,从零到三分之一量程,可能需要加上某个常数;从三分之一到二分之一量程,可能就需要不同的常数。

这些误差均可进行预测,显然也很容易校正,但是,精确读数的偏差可能会随时间推移而发生变化。此外,由于传感器暴露于极端温度、环境湿度大或传感器老化等原因,日后可能还会出现新的误差。是否需要校正这些误差则始终取决于应用。或许有必要在极端温度、压力和湿度条件下测试系统,以确定传感器性能。汽车、军事和某些工业系统等应用需要对这些环境进行检测。然而,如今许多新的物联网端点已然延伸至传感器应用范围之外,因此传感器测试可能成为一项新要求。

与模拟传感器一样,诸如ADC之类常用微控制器模拟外设可能也需要定期进行在系统校准。ADC误差并不总是可预测,即便可以使用算法校正初始误差,误差也可能随着时间推移而发生变化,并可能变得无法通过算法来轻松校正。这可能会导致系统无法再以所需精度继续运行,从而导致高昂的更换成本。

使用数据查找表进行模拟传感器误差校正的优势

数据查找表是一种实用、有效的方法,可以快速执行一些常见计算,诸如三角函数等复杂计算,或者字节的位反转或格雷码转换等简单计算。与在固件中执行位反转相比,使用256字节的查找表进行字节位反转速度明显更快。将此查找表存储在程序或数据闪存中很安全,因为它占用空间很小而且永远不需要更改。

此外,将数据查找表用于存储传感器数据校准,也是一种行之有效的方法。像内置ADC这样的微控制器模拟外设可能需要定期校准,方法与模拟传感器校准完全相同。大多数微控制器中的ADC精度均可达到±2或±3个最低有效位(LSB)。尽管对于大多数应用而言这已足够,但是对于要求高精度的系统,定期校准ADC意义重大。

用于校正24位数据的校准查找表片段可能如表1所示。

此例中,原始输入值是需要进行误差校正的源读数。然后,原始值将作为24位地址用于查找相应的32位校正值,其中最高有效字节始终为00h。如果查找表不是从地址零开始的,则可以为原始输入值添加偏移。

在决定查找表的存储位置之前,务必确定查找表的大小及是否需要重写。这两点都重要。若永远不需要重写,则可以将查找表存储于微控制器的可用片上闪存中。但是如果传感器需要定期重新校准,那么就要重写内部闪存,即要求擦除数据表所在的整个闪存扇区并重新编程

如果该闪存扇区与程序存储器共用空间,则可能需要重新编译代码。即使查找表位于独立专用扇区,日后存储器要求可能会更改或需要扩展,从而导致部分查找表扇区空间重新调整用于其他代码。这使现场传感器校准变得复杂,而且要求通过网络下载重新编译的代码,也会使物联网端点无法独立进行自校准。如果涉及多个传感器,那么问题将进一步复杂化。

对于片上闪存程序存储器而言,使用大型查找表(如含16,777,216个条目)进行24位数字数据校准是不现实的,甚至无法实现。如果隔一个条目存储一次,并将缺失条目插入现有的表数据,则可将查找表大小减半。这种方法带来的性能损失较小,精度损失可能为±1LSB。但是,即便是含8,388,608个条目的查找表也不可能存储在内部闪存中。

在基于微控制器的系统中,使用这种大型数据查找表的最佳解决方案是使用外部闪存。这为添加数兆字节的查找表提供了简便方法,而不会牺牲内部闪存程序存储器。同时,系统也能轻松重写查找表,而不会影响微控制器的内部闪存。

对于高性能系统,添加外部并行闪存来扩展程序和数据存储器是常用方法。但是,这要求微控制器具有外部数据总线。额外的地址和数据总线以及所需的控制信号需要占用微控制器36个或更多引脚。这项要求限制了应用可用的微控制器。此外,外部总线会占用更多印刷电路板空间,可能还会增加系统的电磁干扰(EMI)。

对于大多数系统,最佳解决方案是使用外部串行数据闪存。这类闪存使用串行外设接口(SPI)进行数据传输,只需占用四个微控制器引脚。

ONSemiconductor的LE25S161PCTXG就是这种闪存器件的典型实例。这款16Mbit串行闪存器件支持70MHz的SPI时钟。同时,还支持双通道SPI模式,数据传输速度最快可达140Mb/s。内部状态寄存器可用于配置器件的读、写和低功耗模式。

LE25S161PCTXG的SPI信号通常用于时钟、数据和片选(图1)。它还具有两个额外引脚。WP是低电平有效写保护信号,用于防止写入器件的状态寄存器。这可用于防止低优先级固件任务未经授权重写设备。HOLD可暂停正在进行的数据传输。如果微控制器在数据传输过程中必须执行中断,这一功能将十分有用。数据传输将暂停直至中断处理完毕,然后从中断处继续传输。

若要读取存储于此器件中的简单两列查找表,最简单的方法是获取传感器读数,添加存储器偏移,然后读取该地址位置对应的存储器内容。该地址对应的存储器内容表示传感器校正读数。

高性能物联网端点要求时钟速度更快、处理器性能更出色、SPI更灵活。针对这些应用,STMicroelectronics推出了STM32L4高性能微控制器系列。例如,STM32L496VG是STM32L4产品系列中的一款微控制器,工作频率为80MHz,具有带浮点单元(FPU)的Arm®Cortex®-M4内核。该器件具有8Mbit的闪存和320KB的SRAM,支持1.71至3.6V的工作电压,与ONSemiconductor的LE25S161PCTXG的1.65至1.95V工作电压重叠。

STM32L496VG带有全套适合高性能物联网端点的外设,包括带有日历功能的实时时钟(RTC)、三个采样率达每秒5MSPS的ADC、双通道数模转换器DAC)、两个控制器局域网(CAN)接口和四个I2C接口(图2)。此外,还有三个标准SPI接口和一个四通道SPI接口。

STM32L496G-DISCO开发板为STM32L496VG的开发提供了有力支持(图3)。这款物联网终端开发板功能全面,包括立体声微机电系统(MEMS)麦克风、8位摄像头连接器、八个LED、四向操纵杆和240x240像素彩色LCD。连接器引脚可用作ADC输入、四通道SPI引脚和大多数I/O。

STM32L496VG的四通道SPI支持40MHz最大SPI时钟,同时也支持标准和存储器映射SPI模式。四通道SPI支持双通道SPI模式,最大数据传输速率为80Mb/s。

STMicroelectronics的四通道SPI可与串行数据闪存器件快速连接。在标准SPI模式下,所有操作均使用SPI寄存器执行。数据通过读写SPI数据寄存器进行传输。收到数据后会产生中断。这与STM32L496VG的三种标准SPI工作模式相同。标准SPI模式支持单通道、双通道和四通道数据传输。ONSemiconductor的LE25S161支持单通道和双通道SPI模式,并且在双通道SPI模式下可与STM32L496VG轻松连接(图4)。

若选择ONSemiconductor和STMicroelectronics的元器件,实现数据查找表就变得非常简单。四通道SPI还具有FIFO,可用于批量数据传输。但是,如果查找表一次只需访问一个存储器位置,则建议禁用FIFO,原因是不需要这项功能,甚至可能会造成不必要的延迟。

具有存储器映射模式的四通道SPI

四通道SPI还支持存储器映射模式,可将外部串行闪存映射到微控制器的程序或数据存储空间,从而使微控制器固件能够访问外部SPI闪存,几乎与访问微控制器内部存储器无异,进而使四通道SPI操作对固件是透明的。

如果无需频繁访问查找表,则与标准SPI模式相比,使用存储器映射模式实现查找表的优势可能就完全无法凸显,只是简化了应用固件而已。但是,如需频繁中断应用,则可能会反复暂停SPI传输以处理中断。若一个四通道SPI查找操作中断另一个查找操作,那么情况可能会变得相当复杂。

与标准SPI模式相比,存储器映射模式能够更快速有效地应对频繁访问查找表和高中断率的应用。这种方法简化了固件,防止因不同优先级的四通道SPI同时访问而导致的问题,以及减少中断冲突。

然而,实现存储器映射查找表有一点不足,即可能会污染数据缓存。虽然STM32L496没有数据缓存,但某些针对高性能实时应用的微控制器却具有这种功能。然而,访问查找表很可能会导致缓存丢失。因为对于大多数应用而言,鲜少需要在同一个线程或子例程中两次访问查找表的同一位置,所以在最初设计中查找表数据并无需缓存,并且缓存数据可能会导致重要数据从数据缓存中移除。尽管只有性能要求极高的应用会出现该问题,但也正是这些高性能应用在一开始就需要数据缓存。

针对查找表数据缓存污染的解决方案很少。若硬件允许,可将查找表所在区域标记为不可缓存。另一种解决方案是在访问查找表之前禁用数据缓存,然后在访问之后重新启用。如果缓存切换(启用/禁用)造成的性能损失尚可接受,那么这种方法也就可以接受了。有些数据缓存支持特定架构的缓存控制指令,这种方式可以防止缓存污染。为特定应用寻求数据缓存配置的最佳方法时,务必对系统性能进行基准测试。

串行闪存应布置在印刷电路板上,印制线长度不应超过120mm。为避免干扰,SPI时钟信号路径应至少是印刷电路板印制线宽度的三倍,并且远离其他信号。两个双向数据信号线路间的距离应保持在10mm以内,以避免偏移。

总结

在物联网端点中,外部SPI闪存器件是实现大型数据查找表的有效解决方案。这种方法可轻松实现在系统重新编程和升级,并且最大限度地减少微控制器资源的使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7542

    浏览量

    151310
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355715
收藏 人收藏

    评论

    相关推荐

    请问如何使用微控制器优化电池供电的联网设备的功耗?

    如何使用微控制器优化电池供电的联网设备的功耗?
    发表于 07-23 07:09

    基于ARM Cortex-M7的STM32H7微控制器正式量产

    Arm平台安全架构(PSA)采用高性价比、领先技术全面提升联网市场的安全技术支持基于STM32H7系列开发的Arm® Cortex®-M7微控制器整合PSA概念和先进的安全功能服务中
    发表于 10-30 14:29

    基于微控制器的Web服务解决联网数据采集需求

    ,必须使用具备相应界面的特定微控制器(MCU)作为桥接转换- 可以使用以太网络处理有线连接,在无线方面,可以透过Wi- Fi、ZigBee或者蓝牙协定。随着联网应用越来越多样化,而且每种应用都有其特定的操作门槛。因此,
    发表于 07-19 06:45

    联网微控制器的需求趋势和应用技巧分享

    联网微控制器需求趋势+应用技巧
    发表于 01-27 07:00

    使用MCU微控制器实现对联网设备的控制

    **PacketTracer模拟器物联网教程2—MCU微控制器编程**一、目的使用MCU微控制器实现对联网设备的
    发表于 11-01 07:36

    STM32系列微控制器存储与外设

    STM32系列微控制器存储与外设
    发表于 09-29 14:50 7次下载
    <b class='flag-5'>STM32</b>系列<b class='flag-5'>微控制器</b>存储<b class='flag-5'>器</b>与外设

    兼容Arduino 内测版Wido WIFI联网节点控制器的相关介绍资料下载

    Wido WIFI联网节点控制器 兼容Arduino 内测版
    发表于 04-04 09:41 0次下载

    部署在英特尔联网网关和微控制器的Citrix Octoblu

    Citrix Octoblu *部署在英特尔®联网网关和微控制器
    的头像 发表于 11-07 06:24 3271次阅读

    你不知道的联网微控制器:小体积带来大影响

    微控制器联网:小体积带来大影响 处理都工作在几乎所有连接的设备的关键要素,并有望带动数以百万计的“终端节点”,为
    发表于 04-18 14:44 933次阅读

    如何使用STM32微控制器进行高性能联网节点设计

    随着联网 (IoT) 网络日趋复杂,联网端点边缘处理的复杂度亦水涨船高。因而可能需要使用新系统来升级现有的端点,这个系统的微控制器需要更
    的头像 发表于 06-22 10:21 3471次阅读
    如何使用<b class='flag-5'>STM32</b><b class='flag-5'>微控制器</b>进行高性能<b class='flag-5'>物</b><b class='flag-5'>联网</b><b class='flag-5'>节点</b>设计

    联网微控制器的功能介绍

    微控制器联网部署中最常用的组件之一,但如何为每个联网项目选择合适的微控制器,则需要一些正确
    发表于 01-01 09:24 2575次阅读

    联网微控制器需求趋势及应用技巧

    微控制器联网部署中最常用的组件之一,但如何为每个联网项目选择合适的微控制器,则需要一些正确
    的头像 发表于 01-20 16:25 612次阅读

    联网微控制器需求趋势+应用技巧

    微控制器联网部署中最常用的组件之一,但如何为每个联网项目选择合适的微控制器,则需要一些正确
    发表于 02-02 06:45 3次下载
    <b class='flag-5'>物</b><b class='flag-5'>联网</b>的<b class='flag-5'>微控制器</b>需求趋势+应用技巧

    联网微控制器

    有许多可用的处理选项,包括微处理以及 8 位、16 位和 32 位微控制器。但是,当涉及到满足联网的要求时,它们在性能、功耗和内存方面都大不相同。
    的头像 发表于 06-29 14:45 430次阅读

    联网微控制器功能有哪些?

    市场上微控制器很多,适用于联网的也有很多,所以了解其通用功能非常重要。首先,我们常见的一个问题是微控制器与微处理之间的区别是什么。
    的头像 发表于 07-10 09:48 861次阅读
    <b class='flag-5'>物</b><b class='flag-5'>联网</b>的<b class='flag-5'>微控制器</b>功能有哪些?