STM32WB-硬件介绍

2023-05-16

1 系统和存储

1.1 系统总览

STM32使用双核架构,一个cortex-m4核负责app程序开发,一个cortex-m0核负责射频协议栈,还有一个radio子系统负责RF部分。
在这里插入图片描述

1.2 STM32WB总线架构

如下图所示,基本的外设都被CPU1域,也就是cortex-m4内核访问,CPU1和CPU2通过SRAM2通讯。
在这里插入图片描述

1.3 总线矩阵

1.4 存储分布

在这里插入图片描述

1.5 STM32WB闪存特点

  • 共享
    • 闪存的一部分是为RF射频子系统CPU2保护的,为了安全区域,主机CPU1无法访问。
  • 使用ART加速
    • 同时执行代码CM4和CM0+对MIPS的影响约为0%,在单独的AHB总线上,它有自己的时钟分频器。
  • 3级保护
    • 级别0(无保护)至级别2(最大保护)
  • 限制
    • 在射频活跃期间,flash擦除或存储不应该被启动。因为射频活跃期间cpu1会频繁读写flash。

2 RF射频简介

2.1 RF参数简介

  • 模拟前端
    • 最大输出功率
      • 集成巴伦,6dbm发射功率,具有1dbm步进调节
      • 专用引脚驱动外部PA,可以获得最大20dbm的输出功率
    • 接收灵敏度
      • BLE:1Mbps @-96dbm, 2Mbps @-94dbm(250kbps和125kbps不支持)
      • 802.15.4:250kbps @ -100dbm
    • 功耗@3.3V
      • TX:@0dbm:5.2mA
      • RX:4.5mA
      • stop2 with radio in standy (accurate clock LS12):1.8uA
  • 调制解调器
    • 通过硬件格式化BLE包(对软件完全开放射频)支持1和2Mbps速率
    • IEEE 802.15.4 :硬件模式支持250Kbps通信速率

2.2 STM32WB典型外围电路

在这里插入图片描述

2.3 STM32WB RF输入/输出匹配网络

在这里插入图片描述
一个Π型滤波网络加50Ω阻抗匹配。

3 电源管理

3.1 供电方案框图

如下图所示,各个电源阈单独供电,在供电选择上有很大的灵活性。
在这里插入图片描述

3.2 内部SMPS

  • SMPS用于降低VDD电源
  • SMPS为数字核心和射频LDO供电
  • 当VDD电源高于BOR[1…4]阈值时,使用SMPS模式
    • 低于此阈值使用旁路模式,支持及时切换
    • 通过HW机制执行关闭,通过SW重新开启
  • SMPS降遵循社保操作模式
    • 在Run和stop0模式下为On
    • 在stop1 2 待机standby和关机shutdown模式下,SMPS自动处于开放模式,唤醒时自动恢复进入前使用模式

3.3 电源配置

  • 高性能使用SMPS
    • 通过添加外部电容和线圈,SMPS用于降低功耗
      在这里插入图片描述
  • 低成本今适用于LDO
    • 通过短接SMPS输入。LDO直接由VDD提供节省电容和电感成本,但是功耗会增加。
      在这里插入图片描述

3.4 SMPS原理图

在这里插入图片描述

4 核间通信和安全管理

4.1 HSEM

STM32WB集成硬件信号量模块,该模块用于同步进程和管理共享资源访问权限。具体如下。

  • 管理和访问权限和同步
    • 运行于同一个cpu上的不同进程
    • 不同的cpu
  • 32个硬件信号量
  • 两种锁定机制
    • 2-step write, read back lock
    • 1-step read lock
  • 信号量释放产生中断
  • 应用优势
    • 防止共享资源访问冲突
    • 确保进程之间的同步
    • 无阻塞信号量处理

4.1.1 HSEM框图

HSEM模块位于AHB总线上,由AHB接口和中断管理构成,每个CPU都有一个专用中断,并且都有自己的使能、状态、掩码和清除寄存器。每个信号量由两个寄存器组成,一个读写寄存器,用于在两步锁过程中对信号量进行写操作并读取信号量状态,它也可以释放信号量;另一个是读寄存器,它用于一步锁过程中的读取锁。
框图

HSEM框图

在这里插入图片描述

2步 写-回读锁机制

在这里插入图片描述

1步 锁机制

4.1.2 信号量使用 - 共享资源

两个CPU可以同时访问的所有外设都受硬件信号量保护,在访问此类外设之前,应首先获取相关的信号量并在使用完之后释放。

SemaphorePurpose
sem0RNG-All registers
sem1PKA-all registers
sem2Flash - All registers
sem3RCC_CR RCC_CRRCR RCC_EXTCFGR RCC_CFGR

4.1.3 信号量 - 闪存写入和擦除

  • 要在闪存种写入,应用程序应该

    • 获取Sem2
    • 写入闪存
    • 释放sem2
  • 擦除扇区,应用程序应该

    • 获取Sem2
    • 发送SHCI_C2_FLASH_Erase_Actiity(erase_activity_ON)命令给CPU2
    • 擦除一个或多个扇区
    • 释放Sem2
    • 发送SHCI_C2_FLASH_Erase_Activity( erase_activity_OFF ) 命令给 CPU2

4.2 IPCC

IPCC是核间通讯控制模块,它可以提供中断信令,允许微控制器以非阻塞的方式交换信息。

  • 为通信信道管理提供非阻塞信令

    • 消息可用性中断
    • 流量开启中断通知
  • 通讯方式

    • 单工:每个方向的专用通道
    • 半双工:单个共享双向通道
  • 最多6个双向通道

    • 通道数据存储在共享ram中
  • 应用优势

    • 非阻塞信息交换
    • 通道流量控制
    • 支持CPU sleep和stop模式

    在这里插入图片描述

4.3 安全管理

  • BLE外设可以安全使用以下外设
    • AES1(仅限IP加密密钥)用于应用程序的加密引擎
    • AES2(Full IP)用于IEEE802.15.4的加密引擎
    • PKA(Full IP)用于加密密钥的生成
    • True RNG(Full IP)用于加密密钥的生成
  • 对安全IP的访问由HSEM管理
    • HSEM x,y,z用于管理共享安全外围设备访问
  • BLE堆栈提供以下加密密钥功能
    • 密钥存储
    • 密钥更新
    • 密钥删除
    • 密钥加载(在AES1中)

4.4 Cortex-M0+安全性

  • 闪存的上半部分只能由cortex-m0+访问
    • 由安全选项字SFD和SFSA定义
  • 全局安全使能
    • 允许通过安全选项字SBRD和SBRSA来添加SRAM2a上的部分安全性
    • 允许通过安全选项字SNBRD和SNBRSA来添加SRAM2b闪的部分安全性
    • 运行通过SYSCFG使能外设的安全性

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32WB-硬件介绍 的相关文章

随机推荐

  • 对云台、IMU、鲁棒性和硬件时间同步的理解

    作者 xff1a 朱金灿 来源 xff1a clever101的专栏 为什么大多数人学不会人工智能编程 xff1f gt gt gt slam是一门集硬件和软件的多科学技术 xff0c 涉及到很多技术术语 概念以及数学公式等等 下面我将结合
  • QT无人机地面站设计与制作随笔总结

    自己不是专职地面站设计 xff0c 这里简单将经验叙述下 xff08 另外把自己一直空缺着的QT分类补一篇文章 xff09 无论是处于地面站学习的过程还是做项目进行重新整体设计 xff0c 对于这种写代码的过程最好先在MindMaster中
  • 矩阵该左乘还是右乘

    首先说明一点 xff0c 矩阵具有几何意义 xff0c 对于这几何意义的具体理解可看B站的 线性代数的本质 的视频讲解 开始展开议题 为理解记忆这个问题 xff0c 可以从方向余弦矩阵开始着手 xff0c 方向余弦矩阵是由三次旋转矩阵顺序乘
  • 《绿皮书》影评

    以一种看经典的心态看这部电影 xff0c 确实这部电影没有让我失望 很经典 xff0c 很深刻 xff0c 可能每个人都有各自的认知 xff0c 各自的感受 而我感受到了主人公如同城市孤独人的孤独感 或许 xff0c 遭受肉体上的折磨和伤害
  • Cannot find module 'body-parser'

    bug Cannot find module 39 body parser 39 原因很明显 xff0c 这个模块是没有的 xff0c 查看node modules目录下 xff0c 确实没有 解决办法 xff1a 重新安装这个模块 xff
  • gitlab安装和使用--让我们的版本管理可视化

    一 安装环境 xff1a centos6 7实验2G xff0c 生产4G安装包下载 xff08 需要翻墙 xff0c 不然下载很慢 xff09 xff1a https packages gitlab com gitlab gitlab c
  • STM32CubeMX基本使用

    视频 https www bilibili com video BV11t41147wc from 61 search amp seid 61 9347368692610984203 前言 在配置好CubeMX之后 xff0c 就是新建工程
  • make 命令

    https www ibm com support knowledgecenter zh ssw aix 71 com ibm aix cmds3 make htm 用途 维护 更新和重新生成程序组 语法 make DVariable d
  • Opencv求轮廓的中心点坐标

    Opencv求轮廓的中心点坐标 思路 xff1a 1 通过findContours找出图片中的轮廓 xff1b 2 minAreaRect找到最小外接矩形 xff1b 3 得到最小外接矩形的中心点坐标作为轮廓的中心坐标 xff1b cv s
  • 路由器二次开发一步一步把工业路由器变成一个高端的可指定出网、节点和链路的路由器,包含详细过程及快捷脚本(四)

    路由器二次开发一步一步把工业路由器变成一个高端的可指定出网 节点和链路的路由器 包含详细过程及快捷脚本 四 如果没有 路由器 可以采用 废旧的电脑 详细环境部署参考第 一 篇文章 这里采用800米的工业路由器j1900进行二次定制开发 可以
  • 路由器二次开发一步一步把工业路由器变成一个高端的可指定出网、节点和链路的路由器,包含详细过程及快捷脚本(五)

    路由器二次开发一步一步把工业路由器变成一个高端的可指定出网 节点和链路的路由器 包含详细过程及快捷脚本 五 如果没有 路由器 可以采用 废旧的电脑 详细环境部署参考第 一 篇文章 这里采用800米的工业路由器j1900进行二次定制开发 可以
  • 应用windows批处理嵌套复制文件夹

    作者 xff1a 朱金灿 来源 xff1a clever101的专栏 为什么大多数人学不会人工智能编程 xff1f gt gt gt 应用windows批处理文件将一个文件夹下的多个子文件夹复制到另一个文件夹下 xff0c 代码如下 xff
  • FreeRTOS代码剖析之4:内存管理Heap_4.c

    FreeRTOS8 0 1内存管理的最后一个堆模型Heap 4 xff0c 貌似是在这一个版本才有的 所以找到的说明几乎没有 代码的开头注释也只是简单地说了一下实现了pvPortMalloc 和vPortFree 两个函数 xff0c 并且
  • 如何在 Ubuntu 上安装 Python 3.8

    Python是一种解释型 面向对象 动态数据类型的高级程序设计语言 Python是世界上使用最广泛的编程语言之一 xff0c 由于其简单易学的语法 xff0c Python是初学者和有经验的开发者的热门选择 xff0c Python是一种相
  • (三)OpenCV中的图像处理之轮廓

    注释 xff1a 本文翻译自OpenCV3 0 0 document gt OpenCV Python Tutorials xff0c 包括对原文档种错误代码的纠正 该章节分为以下四个小节 xff1a 一 Contours xff1a Ge
  • Arduino UNO+ESP8266 WIFI+USB转TTL连接线使用EDP协议控制LED灯

    Arduino是许多智能硬件爱好者的首选 xff0c 使用简单快捷 xff0c 而ESP8266模块也是当前最为热门的WIFI模块 本项目完成了Arduino使用EDP协议通过ESP8266 WIFI模块接入OneNET服务器 xff0c
  • 智工运维定位器之ublox

    一 xff0c 概述 GNSS芯片选用了ublox的 UBX M8030 系列 xff0c 有3个型号 xff1a 可以到官网去下载相关资料 xff0c 文档还挺齐的 xff1a https www u blox com zh produc
  • Arduino修改Serial接收缓冲区大小

    Arduino串口默认只接收64字节到缓冲区 xff0c 之后接收到的数据直接丢弃 xff0c 那么在发送 接收不同步的情况下 xff0c 传输数据过大就会丢数据了 xff01 并且当数据超过64字节后 xff0c 是丢弃后面的数据 xff
  • C语言字符串查找基础----strchr()、strrchr()、strpbrk()、strstr()

    1 查找一个字符 在一个字符串查找一个特定字符最容易的方法是使用strchr和strrchr函数 xff0c 原型如下所示 xff1a char strchr char const str int ch char strrchr char
  • STM32WB-硬件介绍

    1 系统和存储 1 1 系统总览 STM32使用双核架构 xff0c 一个cortex m4核负责app程序开发 xff0c 一个cortex m0核负责射频协议栈 xff0c 还有一个radio子系统负责RF部分 1 2 STM32WB总