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

时间: 2024-04-06 16:48:58 |   作者: 招兵买马

工作地点:首页 > 人力资源 > 招兵买马

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

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

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

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

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

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

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

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

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

  此例中,原始输入值是有必要进行误差校正的源读数。然后,原始值将作为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可暂停正在进行的数据传输。如果微控制器在数据传输过程中一定得执行中断,这一功能将十分有用。数据传输将暂停直至中断处理完毕,然后从中断处继续传输。

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

  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同时访问而导致的问题,以及减少中断冲突。

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

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

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

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

  XTI Mode时,只要别漏下面这两行基本是没问题了. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); /* 复用时钟使能 */ GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource1); /* 选择GPIO管脚用作外部中断线路 */ #include #include #define EXTI_Trigger_Mode #define KEY_RCC RCC_APB2Periph_GPIOB #define KEY_GPIO GPIOB #define KEY_PIN (GPIO_Pi

  MCS-51单片机有多个中断源,以8051为例,有5个中断源,两个外中断、两个定时中断和一个串行中断,这一节我们讨论外中断软件编程。 外中断是由外部原因引发的中断,有两个中断源。即外中断0(INT0)和外中断1(INT1),中断请求信号由引脚P3.2(INT0)和P3.3(INT1)输入。 外中断请求信号有两种方式,一是电平方式,二是脉冲方式。可通过有关控制位的定义进行规定。 电平方式为低电平有效,只需在单片机的(INT0)和(INT1)中断请求输入端采样到有效的低电平时,就会激活外部中断。 脉冲方式则在脉冲的后负跳沿有效,即在相邻两个机器周期对中断请求引入端进行采样中,如前一次为高,后一次为低即为有效中断请

  终端介绍及外中断软件编程 /

  第一部分 一、单片机介绍: 1、基础知识 单片机,英文Micro Controller Unit,简称MCU; 内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能 单片机的任务:信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制 单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。 在性能上,与计算机相差甚远,但单片机成本低、体积小、结构相对比较简单,在生活和工业控制领域大有所用; 同时,学习使用单片机是了解计算机原理与结构的最佳选择 2、单片机的应用领域 单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、

  学习日志[Day1、2022.1.09] /

  一、STM32的GPIO介绍 GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。 STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM3

  ]GPIO工作原理詳解 /

  编辑器:Keil MDK 下载器:ST-LINK 详细问题 stm32程序下载后不运行,需要按下复位键程序才能运行的问题。 Keil上将写好的代码编译通过后(0 Errors,0 Warings),点击快捷工具栏中Download快捷键,通过 ST-LINK下载器下载至STM32单片机中,本来是想LED能够Blink的,发现开发板上面什么反应都没有。 (这类问题对于大佬小菜一碟,而对于我这种菜鸡小白来说,就能让我困惑一阵子了 ^ _ ^) 可能原因 原因一:程序问题。(PS:我把程序检查了很多遍,并没问题。) 原因二:没有复位。(PS:也是误打误撞,我随便按了板子上复位按键,发现程序跑起来了) 原因三:持续更

  】ST-LINK下载器下载后需复位,程序才运行的问题 /

  KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,本站特地制作了一个相对简单的教程。他能能嵌入汇编语言保留了汇编代码高效,快速的特点。KEIL C51编译器的功能慢慢地加强,使你能更加贴近CPU本身,及其它的衍生产品,其效率已达到了相当搞的程度。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。 Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序

  C语言软件开发系统Keil C51的使用教程 /

  1、万事开头难、要勇敢迈出第一步。 开始的时候,不要老是给自己找借口,说KEIL不会建项目啦、没有实验板啦之类的。遇到困难要一件件攻克,不会建项目,就先学它,这方面网上教程很多,随便找找看一下,做几次就懂了。然后可以借鉴别的人程序,抄过来也无所谓,写一个最简单的,让它运行起来,先培养一下自己的感觉,知道写程序是怎么一回事,无论写大程序还是小程序,要做的工序不会差多少,总得建个项目,再配置一下项目,然后建个程序,加入项目中,再写代码、编译、生成HEX,刷进单片机中、运行。必须熟悉这一套工序。个人觉得,一块学习板还是必要的,写好程序在上面运行一下看结果,学习效果会好很多,仿真器就看个人需要了。 单片机 是注重理论和实践的,光看书不动

  一、常用的定时功能 (1)基本、通用、高级定时器都有最基本的定时功能,定时功能用到的函数如下: HAL_ TI M_Base_Init 初始化定时,包括分频、 预装值等。 HAL_TIM_ConfigClockSource 选择定时器的 时钟 源 HAL_TIM_Base_Start_IT 开始定时器 HAL_TIM_PeriodElapsedCallb ac k 超时后的回调函数 (2)Cubemx的配置,不管什么定时器,都是这个配置,注意开启中断,计算好最终的定时器时钟 (3)代码片段 1 void MX_TIM12_Init(void) 2 { 3 TIM_ClockConfigTypeDef sClo

  定时器的几种用法 /

  创新实践应用.

  项目化应用教程(C语言)

  使用STM32 Nucleo撬开针对物联网的ARM mbed IDE之门

  直播回放: 借助Sitara™ AM263x MCU 创造电气化的未来

  【电路】利用Arm安全架构提升防护性能的STM32H7 MCU,你知道吗?

  【电路】PC串口和MC68HC70-5K1微控制器之间的RS232传输电路

  【下载】LAT1396 STM32CubeIDE实用技巧之STM32H7双核调试的配置

  【下载】LAT1343 STM32H5 USBD Classic驱动 CDC移植

  【下载】LAT1392 LTDC RGB接口 LCD的TouchGFX工程的移植步骤

  【直播】4月11日,STM32Trust如何帮助新产品设计提升信息安全保护能力

  【线日,基于Buildroot制作STM32MP13启动镜像-深圳/厦门/西安/郑州/苏州

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】 STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  12 1 概述实时时钟RealTimeClock(简称RTC),实时时钟芯片是日常生活中应用最为广泛的消费类电子科技类产品之一。它为人们提供精确的实时时间, ...

  16 3 5 自身地址寄存器1:I2Cx_OAR76543210ADDMODE-ADD[9:8]ADD[7:1]ADD0Bit 15:寻址模式(从模式)0:7位从地址(不响 ...

  一、前言在早期的MCU中是没有看门狗这种东西的,所以产品就很容易出现死机,跑飞的情况。为了尽最大可能避免这种情况的出现,后期的MCU都集成了看门狗 ...

  01前言在学习51单片机的时候,经常会使用keil+protues的方式来做一些实验,这样的模拟仿真为我们节省了很多硬件和时间成本,可以更直观的看 ...

  第一步:具体配置如下图:第二步:能够准确的通过自身需要在NVIC 中断控制器中配置中断响应优先级。这里的配置办法能够参考前面几章!第三步:代 ...

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

下一条:关注信息科技实验教学 《物联网基础原理演示》实验教学设计