STM32

STM32是STMicroelectronics(意法半导体)推出的一系列基于ARM Cortex-M内核的32位微控制器(MCU)产品。这些微控制器提供了广泛的产品系列,覆盖了多种不同的性能和功能需求,适用于各种应用领域,包括工业控制、汽车电子、消费类电子、医疗设备等。

STM32系列微控制器以其高性能、低功耗、丰富的外设接口和灵活的开发工具而闻名。它们通常具有丰富的存储器、多种通信接口(如UART、SPI、I2C、CAN等)、模拟数字转换器(ADC)、定时器、PWM输出等功能,以满足不同应用场景下的需求。

STM32微控制器通常使用标准的ARM Cortex-M内核,包括Cortex-M0、M0+、M3、M4和M7等,这些内核具有不同的性能和功耗特性,可根据具体应用的需求进行选择。此外,STM32系列还提供了多种封装和引脚配置,以满足不同尺寸和集成度的要求。

STMicroelectronics为STM32系列提供了丰富的开发工具和支持资源,包括基于ARM开发环境的集成开发环境(IDE)、调试器、评估板和参考设计等。这些工具和资源有助于开发人员快速开发和部署他们的应用,并提供了全面的技术支持和文档资料,帮助用户充分发挥STM32微控制器的性能和功能优势。

四轴飞行器是一种利用四个旋翼作为飞行引擎来进行空中飞行的飞行器。进入20世纪以来,电子技术飞速发展四轴飞行器开始走向小型化,并融入了人工智能,使其发展趋于无人机,智能机器人。

四轴飞行器不但实现了直升机的垂直升降的飞行性能,同时也在一定程度上降低了飞行器机械结构的设计难度。四轴飞行器的平衡控制系统由各类惯性传感器组成。在制作过程中,对整体机身的中心、对称性以及电机性能要求较低,这也正是制作四轴飞行器的优势所在,而且相较于固定翼飞机,四轴也有着可垂直起降,机动性好,易维护等优点。

系统方案

本设计采用STM32F4作为核心处理器,该处理器内核架构 ARM Cortex-M4,具有高性能、低成本、低功耗等特点。


设计总体框图

主控板包括传感器MPU6050电路模块、无线蓝牙模块、电机启动模块,电源管理模块等;遥控使用商品遥控及接收机。控制芯片捕获接收机的PPM命令信号,传感器与控制芯片之间采用IIC总线连接,MCU与电调之间用PWM传递控制信号。 


MPU-6050电路原理图

电源管理模块

四轴飞行器要求整体设计质量较轻,体积较小,因此在电池的选取方面,采用体积小、质量轻、容量大的锂电池供电最合适。系统的核心芯片为STM32F103,常用工作电压为3.3V,同时惯性测量传感器,蓝牙通信模块的常规供电电压也为3.3V,锂电池的电压为11.4V,要使系统正常工作,需要将11.4V的锂电池电压稳压到3.3V。常用的78系列稳压芯片已不再适用,必须选择性能更好的稳压芯片。

经综合考虑,本电路采用LM1117-3.3和LM2940-5电源部分的核心芯片。电池电源经过LM2940-5降到5V后在输入LM1117-3.3稳压为3.3V。由于电机部分电流较大,故在飞控电路部分加入了过流保护,使用500mA的保险丝。

编者结语

本设计是基于STM32F4的四轴航拍平台。以STM32F407为控制核心,四轴飞行器为载体,辅以云台的航拍系统。硬件上由飞控电路,电源管理等系统组成。其具有灵活轻盈,延展性,适应性强好等特点。在实际应用方面,四轴飞行器可以在复杂、危险的环境下可以完成特定的飞行任务,也可以用于监控交通,环境等。

来源:电子产品世界

围观 472

前言

在客户使用基于Cortex-M7内核的STM32F7xx实际测试中,发现同等主频下基于Cortex-M4内核的STM32F4xx芯片执行同样一段简单程序在时间上还要快于STM32F7xx。这个会影响到客户切换到STM32F7xx的信心,也对ST以及ARM宣传上Cortex-M7内核执行时间远快于Cortex-M4内核的说法提出质疑,本文将针对具体案例分析这一情况的产生以及解决办法。

问题描述

客户测试复杂程序运行时间,比如同样180MHz主频下,STM32F7xx执行Coremark测试程序时间远小于STM32F4xx的执行时间;也就是STM32F7xx的性能更佳,运算执行效率更好。但当客户顺序执行程序,尤其是简单程序时发现STM32F7xx执行时间大于STM32F4xx的执行时间,比如运行下面的同样的测试代码,就有明显差距:

volatile uint16_t i;
static volatile uint16_t j = 0;
i = 0;
while(i<300)
{
i++;
}
if(j < 100)
{
j ++;
}
else
{
j = 0;
}

为方便量化时间,使用Timer2计数方式对这段时间进行计数,Timer2运行在90MHz,向上计数,Test_Counter数据用于输出计数数值,增加后代码如下:

volatile uint16_t i;
static volatile uint16_t j = 0;
TIM2->CNT = 0;
__HAL_TIM_ENABLE(&htim2);
i = 0;
while(i<300)
{
i++;
}
if(j < 100)
{
j ++;
}
else
{
j = 0;
}
__HAL_TIM_DISABLE(&htim2);
Test_Counter = __HAL_TIM_GET_COUNTER(&htim2);

通过上面的修改后测试下来,Test_Counter数据分别为:

STM32F446 数据为 1543
STM32F746 数据为 1836
如果使用Keil自带的States cycles计算方法得到如下数据,后面会按照这个来计算执行时间数据。
STM32F446 数据为 3009
STM32F746 数据为 3635

RMW对 STM32F7xx内核运行速度影响的分析

原因分析:

上面的测试都是在使用了Cache以及ART加速方法测得,如果针对STM32F7xx的性能优化可以参考AN4667 "STM32F7 Series systemarchitecture and performance"这篇应用文档的描述,本例已经对文档描述部分做过优化,但问题依然是STM32F7xx速度慢于STM32F4xx。两颗芯片运行同样代码,比较两颗芯片汇编代码也是相同的:
LDRH r2,[sp,#0x00]
ADDS r2,r2,#1
STRH r2,[sp,#0x00]
LDRH r2,[sp,#0x00]
CMP r2,r3
BCC 0x00000128

通过查看ARM Cortex-M7内核文档发现下面描述:

RMW对 STM32F7xx内核运行速度影响的分析

反映到本例中发现定义的i数据为16-bit数据,同样也在汇编代码上发现了STRB这个汇编代码;这样在RMW(read-modify-write)机制下,当定义为byte以及half-word数据时将有一个先读取数据,修改后再写入数据的过程,这个读取-修改-写入的过程正是能够影响到内核执行效率的问题点,如果定义为32-bit就避免了这个问题的发生。

问题解决:

按照文档说明,我们将16-bit定义数据,改为32-bit的定义数据,即:
volatile uint32_t i;
static volatile uint16_t j = 0;
生成的汇编代码如下:
LDR r0,[sp,#0x00]
ADDS r0,r0,#1
STR r0,[sp,#0x00]
CMP r0,r1
BCC 0x08001F28

测试下来结果如下:

STM32F446 数据为 2102
STM32F746 数据为 1807
可以看到不管是STM32F4xx还是STM32F7xx,当数据定义为32-bit时都有显著的速度提升,当然STM32F7xx的提升更加明显,同样测试条件下STM32F7xx执行时间小于STM32F4xx的执行时间。

因为32-bit数据定义会增加内存,并且有时候定义为byte或halfword更方便,还需要提升速度的话我们看到同样是内核文件给出的说明,可以将RMW机制屏蔽掉:

RMW对 STM32F7xx内核运行速度影响的分析

实际上就是对CM7_DTCMCR寄存器的第1位写0,即可以在程序中有下面的操作:
__IO uint32_t * DTCM_CR =(uint32_t*)(0xE000EF94);
* DTCM_CR &= 0xFFFFFFFD; /* Disable read-modify-write */
禁止RMW后测试下来数据如下:
16-bit定义数据STM32F746 测试cycles数据为 3022
32-bit定义数据STM32F746 测试cycles数据为 1808
可以对比上面的测试数据也可以看到当禁止RMW后STM32F7xx性能也是优于STM32F4xx的。具体测试数据如下:

RMW对 STM32F7xx内核运行速度影响的分析

结论:

需要提升STM32F7xx执行时间,发挥出最大效能时,请参考AN4667,同时需要注意RMW对内核性能发挥的影响。

来源:STM32单片机微信公众号

围观 320

跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)新推出的两款立即可用的原型板大幅削减LoRaWAN™ 、Sigfox、WM-Bus、6LoWPAN等低功耗广域物联网(LPWAN)技术的评估成本。
新电路板搭载当前市面上销售的尺寸最小且功耗最低的LoRaWAN模块。
电路板尺寸不大于13x12mm,待机功耗在1.2µA以内。

我们的两款LoRa板子都通过LoRaWAN认证,并完全符合美国、欧洲、俄罗斯、印度等使用860-930MHz频段的国家的无线通信法规。除工业标准的通信协议外,板子还支持LPWAN物联网硬件远距离通信专有协议,例如智能表计、警报系统、跟踪设备、定位设备、环境传感器和身体活动传感器远距离连接通信。

B-L072Z-LRWAN1 STM32 LoRa® 探索套件基于Murata®开发的集成STM32L072CZ微控制器(MCU)和Semtech Sx1276收发器的一体化开放式模块,该模块的LoRa® 调制解调器具有超长距离展频通信功能和优异的抗干扰性,同时最大限度降低工作电流。

因为模块是开放的,所以开发人员能够访问STM32L072微控制器及其外设,例如ADC、16位定时器、LP-UART、I2C、SPI和USB 2.0 FS(支持BCD和LPM),在设计应用过程中可以使用STM32L0 HAL和LL嵌入式软件库,从STM32 Nucleo生态系统或种类繁多的Arduino™扩展板中选择扩展板,以进一步扩大电路板的功能。

B-L072Z-LRWAN1 套件包括
板载调试器
64引脚STM32 Nucleo morpho连接器
Arduino兼容连接器和电池插座

准许用户访问完全免费的开发生态系统,包括
MDK-ARM集成开发环境(IDE)
STM32CubeMX配置器和软件工具
以及意法半导体的LoRaWAN协议栈(I-CUBE-LRWAN)
2017年第一季度末,这块板子还将提供支持Sigfox的协议栈。

I-NUCLEO-LRWAN1准许用户访问完全免费的开发生态系统,包括 (25.00美元)是一块支持STM32 Nucleo或Arduino开发板的扩展板,只要插到主板上,即可立即着手开发全功能的LoRa和/或FSK/OOK(频移键控/二进制开关键控)连接应用。这块电路板集成USI®的LoRaWAN模块以及STM32L052T8微控制器和Semtech Sx1272收发器。

USI模块预装有助于简化设计同时节省编程时间的AT指令栈。
I-CUBE-LRWAN协议栈
免费使用。
另外一个产品优势是,为协助物联网(IoT)应用开发,
I-NUCLEO-LRWAN1评估板还配
有意法半导体的LIS2DS12 3轴加速度计
LPS22HB MEMS压力传感器
HTS221温湿传感器

B-L072Z-LRWAN1探索套件和I-NUCLEO-LRWAN1扩展板即日起接受经销商订货,并于本月底前在意法半导体官网st.com上架销售。

❀❀❀关于LoRa套件的详情和相关信息下载链接,请点击“阅读全文”或至中文官网(www.stmcu.com.cn)的“关于STM32”的“新闻中心”版块。

围观 1101

页面

订阅 RSS - STM32