STMicroelectronics-logotipo

Introducción a la serie STMicroelectronics STM32WBA

STMicroelectronics-STM32WBA-Series-Getting-Started-fig-1

Información del producto

Presupuesto:

  • Nombre del producto: Paquete MCU STM32CubeWBA
  • Fabricante: STMicroelectrónica
  • Compatibilidad: Microcontroladores de la serie STM32WBA
  • Licencia: Licencia BSD de código abierto

Instrucciones de uso del producto

Características principales del paquete MCU STM32CubeWBA:
El paquete MCU STM32CubeWBA proporciona todos los componentes de software integrados necesarios para desarrollar aplicaciones en microcontroladores de la serie STM32WBA. Es altamente portátil dentro de la serie STM32 y viene con API HAL y LL, examparchivos y componentes de middleware.

Arquitectura terminadaview:
La arquitectura del paquete MCU STM32CubeWBA consta de tres niveles: aplicaciones, biblioteca y componentes basados ​​en protocolos, capa de abstracción de hardware, controladores BSP, controladores centrales y API de capa baja.

Preguntas frecuentes

  • ¿Qué se incluye en el paquete MCU STM32CubeWBA?
    El paquete incluye API de capa baja (LL) y de capa de abstracción de hardware (HAL), por ejemplo.amparchivos, aplicaciones, componentes de middleware como FileX/LevelX, NetX Duo, bibliotecas mbed-crypto y más.
  • ¿El paquete MCU STM32CubeWBA es compatible con el generador de códigos STM32CubeMX?
    Sí, el paquete es totalmente compatible con el generador de código STM32CubeMX para generar código de inicialización.

Introducción

  • STM32Cube es una iniciativa original de STMicroelectronics para mejorar significativamente la productividad del diseñador al reducir el esfuerzo, el tiempo y el costo de desarrollo. STM32Cube cubre toda la cartera STM32.
    STM32Cube incluye:
    • Un conjunto de herramientas de desarrollo de software fáciles de usar para cubrir el desarrollo del proyecto desde la concepción hasta la realización, entre las que se encuentran:
      • STM32CubeMX, una herramienta de configuración de software gráfico que permite la generación automática de código de inicialización C utilizando asistentes gráficos
      • STM32CubeIDE, una herramienta de desarrollo todo en uno con configuración de periféricos, generación de código, compilación de código y funciones de depuración
      • STM32CubeCLT, un conjunto de herramientas de desarrollo de línea de comandos todo en uno con funciones de compilación de código, programación de placas y depuración
      • STM32CubeProgrammer (STM32CubeProg), una herramienta de programación disponible en versiones gráficas y de línea de comandos
      • STM32CubeMonitor (STM32CubeMonitor, STM32CubeMonPwr, STM32CubeMonRF, STM32CubeMonUCPD), poderosas herramientas de monitoreo para ajustar el comportamiento y el rendimiento de las aplicaciones STM32 en tiempo real
    • Paquetes STM32Cube MCU y MPU, plataformas integrales de software integrado específicas para cada serie de microcontroladores y microprocesadores (como STM32CubeWBA para la serie STM32WBA), que incluyen:
      • Capa de abstracción de hardware STM32Cube (HAL), que garantiza la máxima portabilidad en toda la cartera de STM32
      • API de capa baja STM32Cube, que garantizan el mejor rendimiento y espacio con un alto grado de control del usuario sobre el hardware
      • Un conjunto consistente de componentes de middleware como ThreadX, FileX / LevelX, NetX Duo, USBX, biblioteca táctil, mbed-crypto, TFM, MCUboot, OpenBL y STM32_WPAN (incluido Bluetooth® Low Energy profiles y servicios, Mesh, Zigbee®, OpenThread, Matter y capa MAC 802.15.4)
      • Todas las utilidades de software integradas con conjuntos completos de periféricos y aplicativos exampLos
    • Paquetes de expansión STM32Cube, que contienen componentes de software integrados que complementan las funcionalidades de los paquetes STM32Cube MCU y MPU con:
      • Extensiones de middleware y capas aplicativas
      • Examparchivos que se ejecutan en algunas placas de desarrollo STMicroelectronics específicas
  • Este manual de usuario describe cómo comenzar con el paquete MCU STM32CubeWBA.
    • La Sección 2 Características principales de STM32CubeWBA describe las características principales del paquete MCU STM32CubeWBA.
    • Sección 3 Arquitectura STM32CubeWBA terminadaview proporciona un sobreview de la arquitectura STM32CubeWBA y la estructura del paquete MCU.

información general

El paquete MCU STM32CubeWBA se ejecuta en microcontroladores STM32 de 32 bits basados ​​en el procesador Arm® Cortex®-M33 con Arm® TrustZone® y FPU.
Nota: Arm y TrustZone son marcas comerciales registradas de Arm Limited (o sus subsidiarias) en los EE. UU. Y / o en otros lugares.

Características principales de STM32CubeWBA

  • El paquete MCU STM32CubeWBA se ejecuta en microcontroladores STM32 de 32 bits basados ​​en el procesador Arm® Cortex®-M33 con TrustZone® y FPU.
  • El STM32CubeWBA reúne, en un solo paquete, todos los componentes de software integrados genéricos necesarios para desarrollar una aplicación para los microcontroladores de la serie STM32WBA. En línea con la iniciativa STM32Cube, este conjunto de componentes es altamente portátil, no solo dentro de los microcontroladores de la serie STM32WBA sino también para otras series STM32.
  • El STM32CubeWBA es totalmente compatible con el generador de código STM32CubeMX para generar código de inicialización. El paquete incluye API de capa baja (LL) y de capa de abstracción de hardware (HAL) que cubren el hardware del microcontrolador, junto con un amplio conjunto de examparchivos que se ejecutan en placas STMicroelectronics. Las API HAL y LL están disponibles en una licencia BSD de código abierto para comodidad del usuario.
  • El paquete MCU STM32CubeWBA también contiene un componente de middleware integral construido alrededor del middleware RTOS de Microsoft® Azure® y otras pilas internas y de código abierto, con el correspondiente ex.ampLes.
  • Vienen con términos de licencia gratuitos y fáciles de usar:
    • Azure® RTOS integrado y con todas las funciones: Azure® RTOS ThreadX
    • Implementación CMSIS-RTOS con Azure® RTOS ThreadX
    • Pilas de dispositivos y hosts USB que vienen con muchas clases: Azure® RTOS USBX
    • Avanzado file sistema y capa de traducción flash: FileX / NivelX
    • Pila de redes de nivel industrial: optimizada para el rendimiento que viene con muchos protocolos de IoT: NetX Duo
    • Abrir cargador de arranque
    • Solución de integración Arm® Trusted Firmware-M (TF-M)
    • bibliotecas mbed-crypto
    • Biblioteca de la red ST
    • Solución de biblioteca de detección táctil STMTouch
  • En el paquete MCU STM32CubeWBA también se proporcionan varias aplicaciones y demostraciones que implementan todos estos componentes de middleware.
  • El diseño de los componentes del paquete STM32CubeWBA MCU se ilustra en la Figura 1. Componentes del paquete STM32CubeWBA MCU.

    STMicroelectronics-STM32WBA-Series-Getting-Started-fig-2

Arquitectura STM32CubeWBA terminadaview

La solución del paquete STM32CubeWBA MCU se basa en tres niveles independientes que interactúan fácilmente como se describe en la Figura 2. Arquitectura del paquete STM32CubeWBA MCU.

STMicroelectronics-STM32WBA-Series-Getting-Started-fig-3

Nivel 0

Este nivel se divide en tres subcapas:

  • Paquete de soporte a la junta directiva (BSP).
  • Capa de abstracción de hardware (HAL):
    • Controladores de periféricos HAL
    • Controladores de capa baja
  • Uso básico de periféricos exampLes.

Paquete de apoyo a la junta directiva (BSP)
Esta capa ofrece un conjunto de API relativas a los componentes de hardware en las placas de hardware (como controladores LCD, Audio,\ microSD™ y MEMS). Se compone de dos partes:

  • Controlador de componentes:
    Este controlador está relacionado con el dispositivo externo en la placa y no con el dispositivo STM32. El controlador de componentes proporciona API específicas para los componentes externos del controlador BSP y podría ser portátil en cualquier otra placa.
  • Controlador BSP:
    El controlador BSP permite vincular los controladores de componentes a una placa específica y proporciona un conjunto de funciones fáciles de usar.
    API. La regla de nomenclatura de la API es BSP_FUNCT_Action().
    Examparchivo: BSP_LED_Init(), BSP_LED_On()
    BSP se basa en una arquitectura modular que permite una fácil migración a cualquier hardware simplemente implementando rutinas de bajo nivel.

Capa de abstracción de hardware (HAL) y capa baja (LL)
Los STM32CubeWBA HAL y LL son complementarios y cubren una amplia gama de requisitos de aplicación:

  • Los controladores HAL ofrecen API altamente portátiles orientadas a funciones de alto nivel. Ocultan la MCU y la complejidad periférica al usuario final.
    Los controladores HAL proporcionan API genéricas orientadas a funciones de instancias múltiples, que simplifican la implementación de aplicaciones de usuario al proporcionar procesos listos para usar. por ejemploampPor ejemplo, para los periféricos de comunicación (I2S, UART y otros), proporciona API que permiten inicializar y configurar el periférico, gestionar la transferencia de datos basada en sondeo, interrupción o proceso DMA, y manejar los errores de comunicación que puedan surgir durante la comunicación. Las API del controlador HAL se dividen en dos categorías:
    1. API genéricas, que proporcionan funciones comunes y genéricas para todos los microcontroladores de la serie STM32.
    2. API de extensión, que proporcionan funciones específicas y personalizadas para una familia específica o un número de pieza específico.
  • Las API de capa baja proporcionan API de bajo nivel a nivel de registro, con mejor optimización pero menos portabilidad.
    • Requieren un conocimiento profundo de MCU y especificaciones de periféricos.
    • Los controladores LL están diseñados para ofrecer una capa rápida, liviana y orientada a expertos que está más cerca del hardware que HAL. A diferencia de HAL, las API LL no se proporcionan para periféricos donde el acceso optimizado no es una característica clave, o para aquellos que requieren una configuración de software pesada o una pila compleja de nivel superior.
    • Los controladores LL cuentan con:
      • Un conjunto de funciones para inicializar las características principales de los periféricos de acuerdo con los parámetros especificados en las estructuras de datos.
      • Un conjunto de funciones para llenar las estructuras de datos de inicialización con los valores de reinicio correspondientes a cada campo.
      • Función para desinicialización de periféricos (registros de periféricos restaurados a sus valores predeterminados).
      • Un conjunto de funciones en línea para acceso directo y a registros atómicos.
      • Total independencia de HAL y capacidad de uso en modo independiente (sin controladores HAL).
      • Cobertura completa de las funciones periféricas compatibles.

Uso básico de periféricos exampLos
Esta capa encierra el examparchivos creados sobre los periféricos STM32 utilizando solo los recursos HAL y BSP.

Nivel 1

Este nivel se divide en dos subcapas:

  • Componentes de software intermedio
  • Examparchivos basados ​​en los componentes del middleware

Componentes de software intermedio

  • El middleware es un conjunto de bibliotecas que cubren Bluetooth® Low Energy (Linklayer, HCI, Stack), Thread®, Zigbee®,
  • Matter, OpenBootloader, Microsoft® Azure® RTOS, TF‑M, MCUboot y mbed-crypto.
  • La interacción horizontal entre los componentes de esta capa se realiza llamando a las API destacadas.
  • La interacción vertical con los controladores de capa baja se realiza a través de devoluciones de llamada específicas y macros estáticas implementadas en la interfaz de llamada del sistema de biblioteca.
  • Las características principales de cada componente de middleware son las siguientes:
    • Microsoft® Azure® RTOS
      • Azure® RTOS ThreadX: un sistema operativo en tiempo real (RTOS), diseñado para sistemas integrados con dos modos funcionales.
        • Modo común: funcionalidades comunes de RTOS, como administración y sincronización de subprocesos, administración de grupos de memoria, mensajería y manejo de eventos.
        • Modo de módulo: un modo de usuario avanzado que permite cargar y descargar módulos ThreadX previnculados sobre la marcha a través de un administrador de módulos.
      • Dúo NetX
      • FileX
      • USBX
    • Bluetooth® Low Energy (BLE): Implementa el protocolo Bluetooth® Low Energy para las capas Link y Stack.
    • MCUboot (software de código abierto)
    • Protocolos Zigbee® para la pila y clusters relacionados.
    • Pila de protocolos Thread® y capa de enlace.
    • Firmware confiable de Arm®-M, TF‑M (software de código abierto): Implementación de referencia de la arquitectura de seguridad de la plataforma Arm® (PSA) para TrustZone® con los servicios seguros asociados.
    • mbed-crypto (software de código abierto): el middleware mbed-crypto proporciona una implementación API de criptografía PSA.
    • Biblioteca de detección táctil STM32: solución robusta de detección táctil capacitiva STMTouch, compatible con sensores táctiles de proximidad, teclas táctiles, lineales y giratorios. Se basa en un principio probado de adquisición de transferencia de carga superficial.

Examparchivos basados ​​en los componentes del middleware
Cada componente de middleware viene con uno o más examparchivos (también llamados aplicaciones) que muestran cómo usarlo. integración exampTambién se proporcionan archivos que utilizan varios componentes de middleware.

Paquete de firmware STM32CubeWBA terminadoview

Dispositivos y hardware de la serie STM32WBA compatibles

  • STM32Cube ofrece una capa de abstracción de hardware (HAL) altamente portátil construida alrededor de una arquitectura genérica. Permite el principio de capas de construcción, como usar la capa de middleware para implementar sus funciones sin saber en profundidad qué MCU se utiliza. Esto mejora la reutilización del código de la biblioteca y garantiza una fácil portabilidad a otros dispositivos.
  • Además, gracias a su arquitectura en capas, STM32CubeWBA ofrece soporte total para todas las series STM32WBA.
  • El usuario sólo tiene que definir la macro correcta en stm32wbaxx.h.
  • La Tabla 1 muestra la macro a definir según el dispositivo de la serie STM32WBA utilizado. Esta macro también debe definirse en el preprocesador del compilador.
    Tabla 1. Macros para la serie STM32WBA
    Macro definida en stm32wbaxx.h Dispositivos de la serie STM32WBA
    stm32wba52xx STM32WBA52CGU6, STM32WBA52KGU6, STM32WBA52CEU6, STM32WBA52KEU6
    stm32wba55xx STM32WBA55CGU6, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CEU6, STM32WBA55CEU7

     

  • STM32CubeWBA presenta un rico conjunto de examparchivos y aplicaciones en todos los niveles, lo que facilita la comprensión y el uso de cualquier controlador HAL o componente de middleware. estos exampLos archivos se ejecutan en las placas STMicroelectronics enumeradas en la Tabla 2.
    Tabla 2. Placas para la serie STM32WBA
    Junta Placa de dispositivos compatibles con STM32WBA
    NUCLEO-WBA52CG STM32WBA52CGU6
    NUCLEO-WBA55CG STM32WBA55CGU6
    STM32WBA55-DK1 STM32WBA55CGU7
  • El paquete MCU STM32CubeWBA puede ejecutarse en cualquier hardware compatible. El usuario simplemente actualiza los controladores BSP para portar el ex proporcionado.amparchivos en la placa, si esta última tiene las mismas características de hardware (como LED, pantalla LCD y botones).
Paquete de firmware terminadoview
  • La solución del paquete STM32CubeWBA se proporciona en un único paquete zip que tiene la estructura que se muestra en la Figura 3. Estructura del paquete de firmware STM32CubeWBA.

    STMicroelectronics-STM32WBA-Series-Getting-Started-fig-4

  • Para cada tablero, un conjunto de examples se proporciona con proyectos preconfigurados para las cadenas de herramientas EWARM, MDK-ARM y STM32CubeIDE.
  • Figura 4. STM32CubeWBA exampse acabóview muestra la estructura del proyecto para las placas NUCLEO‑WBA52CG, NUCLEO-WBA55CG y STM32WBA55G-DK1.

    STMicroelectronics-STM32WBA-Series-Getting-Started-fig-5

  • El exampLos archivos se clasifican según el nivel de STM32Cube al que se aplican y se denominan de la siguiente manera:
    • Nivel 0 exampLos archivos se llaman Ex.amples, examples_LL y Examples_MIX. Utilizan respectivamente controladores HAL, controladores LL y una combinación de controladores HAL y LL sin ningún componente de middleware.
    • Nivel 1 exampLos archivos se llaman Aplicaciones. Proporcionan casos de uso típicos de cada componente de middleware. Cualquier aplicación de firmware para una placa determinada se puede crear rápidamente gracias a los proyectos de plantilla disponibles en los directorios Templ ates y Templates_LL.

Proyectos habilitados para TrustZone®

  • Ex habilitado para TrustZone®ampLos nombres de archivos contienen el prefijo _TrustZone. La regla se aplica también para las Aplicaciones (excepto para TFM y SBSFU, que son nativas para TrustZone®).
  • Ex habilitado para TrustZone®ampLos archivos y aplicaciones cuentan con una estructura multiproyecto compuesta de subproyectos seguros y no seguros, como se presenta en la Figura 5. Estructura de proyecto multiproyecto seguro y no seguro.
  • Los proyectos habilitados para TrustZone® se desarrollan de acuerdo con la plantilla de dispositivo CMSIS-5, ampliada para incluir el encabezado de partición del sistema. file dividir_ .h, quien es el principal responsable de la configuración de la unidad de atributos seguros (SAU), la FPU y la asignación de interrupciones seguras/no seguras en el estado de ejecución segura.
  • Esta configuración se realiza en la función CMSIS SystemInit() segura, que se llama al inicio antes de ingresar a la función main() de la aplicación segura. Consulte la documentación de Arm® TrustZone®-M sobre las pautas del software.

    STMicroelectronics-STM32WBA-Series-Getting-Started-fig-6

  • El paquete de firmware STM32CubeWBA proporciona partición de memoria predeterminada en la partición _ .h fileestá disponible en: \Drivers\CMSIS\Device\ST\STM32WBAxx\Include\T emplates
  • En estas particiones files, el SAU está desactivado de forma predeterminada. En consecuencia, el mapeo de memoria IDAU se utiliza para la atribución de seguridad. Consulte la figura Partición segura/no segura utilizando la tecnología TrustZone® en el manual de referencia RM0495.
  • Si el usuario habilita el SAU, se predefinirá una configuración de regiones SAU predeterminada en la partición files como sigue:
    • Región SAU 0: 0x08080000 – 0x081FFFFF (mitad segura no segura de la memoria flash (512 Kbytes))
    • Región SAU 1: 0x0BF88000 – 0x0BF97FFF (memoria del sistema no segura)
    • Región 2 de SAU: 0x0C07E000 – 0x0C07FFFF (seguro, invocable no seguro)
    • Región 3 de SAU: 0x20010000 – 0x2001FFFF (SRAM2 no segura (64 Kbytes))
    • Región 4 de SAU: 0x40000000 – 0x4FFFFFFF (memoria asignada periférica no segura)
  • Para coincidir con la partición predeterminada, los dispositivos de la serie STM32WBAxx deben tener configurados los siguientes bytes de opciones de usuario:
    • TZEN = 1 (dispositivo habilitado para TrustZone®)
    • SECWM1_PSTRT = 0x0 SECWM1_PEND = 0x3F (64 de 128 páginas de memoria flash interna configuradas como seguras) Nota: La memoria flash interna es completamente segura de forma predeterminada en TZEN = 1. Los bytes de opción de usuario SECWM1_PSTRT/ SECWM1_PEND deben configurarse según la aplicación configuración de memoria (regiones SAU, si SAU está habilitado). Vinculador de proyectos de aplicaciones seguras/no seguras files también deben estar alineados.
  • todos los exampLos archivos tienen la misma estructura:
    • Carpeta \Inc que contiene todos los encabezados files.
    • Carpeta src que contiene el código fuente.
    • Carpetas \EWARM, \MDK-ARM y \STM32CubeIDE que contienen el proyecto preconfigurado para cada cadena de herramientas.
    • readme.md y readme.html que describen el exampel comportamiento y el entorno necesario para que funcione.
    • COI file que permite a los usuarios abrir la mayor parte del firmware examparchivos dentro de STM32CubeMX.

Comenzando con STM32CubeWBA

Ejecutando un primer HAL example

Esta sección explica lo sencillo que es ejecutar el primer examparchivo dentro de STM32CubeWBA. Utiliza como ilustración la generación de un interruptor de LED simple que se ejecuta en la placa NUCLEO-WBA52CG:

  1. Descargue el paquete MCU STM32CubeWBA.
  2. Descomprímalo en un directorio de su elección.
  3. Asegúrese de no modificar la estructura del paquete que se muestra en la Figura 1. También se recomienda copiar el paquete en una ubicación cercana a su volumen raíz (es decir, C:\ST o G:\Tests), ya que algunos IDE encuentran problemas cuando la ruta La longitud es demasiado larga.

Ejecutar un primer ex habilitado para TrustZone®ample

  • Antes de cargar y ejecutar un ex habilitado para TrustZone®ample, es obligatorio leer el exampleeme file para cualquier configuración específica, lo que garantiza que la seguridad esté habilitada como se describe en la Sección 4.2.1 Proyectos habilitados para TrustZone® (TZEN=1 (byte de opción de usuario)).
    1. Vaya a \Proyectos\NUCLEO-WBA52CG\ExampLes.
    2. Abra las carpetas \GPIO y luego \GPIO_IOToggle_TrustZone.
    3. Abra el proyecto con su cadena de herramientas preferida. Un cambio rápidoview sobre cómo abrir, construir y ejecutar un exampEl archivo con las cadenas de herramientas compatibles se proporciona a continuación.
    4. Reconstruir en secuencia todos los proyectos seguros y no seguros files y cargar las imágenes seguras y no seguras en la memoria de destino.
    5. Ejecutar el examparchivo: regularmente, la aplicación segura alterna LD2 cada segundo y la aplicación no segura alterna LD3 dos veces más rápido. Para obtener más detalles, consulte el archivo Léame. file de la exampel.
  • Para abrir, construir y ejecutar un examparchivo con las cadenas de herramientas compatibles, siga los pasos a continuación:
    • CALIENTE:
      1. bajo el exampcarpeta del archivo, abra la subcarpeta \EWARM.
      2. Inicie el espacio de trabajo Project.eww
      3. Reconstruir el proyecto seguro xxxxx_S files: [Proyecto]>[Reconstruir todo].
      4. Configure el proyecto no seguro xxxxx_NS como aplicación activa (haga clic derecho en el proyecto xxxxx_NS [Establecer como activo])
      5. Reconstruir el proyecto no seguro xxxxx_NS files: [Proyecto]>[Reconstruir todo].
      6. Actualice el binario no seguro con [Proyecto]>[Descargar]>[Descargar aplicación activa] .
      7. Configure xxxxx_S como aplicación activa (haga clic con el botón derecho en el proyecto xxxxx_S [Establecer como activo].
      8. Actualice el binario seguro con [Descargar y depurar] (Ctrl+D).
      9. Ejecute el programa: [Depurar]>[Ir(F5)]
    • MDK-BRAZO:
      1. Abra la cadena de herramientas \MDK-ARM.
      2. Abra el espacio de trabajo Multiproyectos file Proyecto.uvmpw.
      3. Seleccione el proyecto xxxxx_s como aplicación activa ([Establecer como proyecto activo]).
      4. Construya el proyecto xxxxx_s.
      5. Seleccione el proyecto xxxxx_ns como proyecto activo ([Establecer como proyecto activo]).
      6. Construya el proyecto xxxxx_ns.
      7. Cargue el binario no seguro ([F8]). Esto descarga \MDK-ARM\xxxxx_ns\Exe\xxxxx_ns.axf a la memoria flash)
      8. Seleccione el proyecto Project_s como proyecto activo ([Establecer como proyecto activo]).
      9. Cargue el binario seguro ([F8]). Esto descarga \MDK-ARM\xxxxx_s\Exe\xxxxx_s.axf a la memoria flash).
      10. Ejecutar el exampel.
    • STM32CubeIDE:
      1. Abra la cadena de herramientas STM32CubeIDE.
      2. Abra el espacio de trabajo Multiproyectos file .proyecto.
      3. Reconstruya el proyecto xxxxx_Secure.
      4. Reconstruya el proyecto xxxxx_NonSecure.
      5. Inicie la aplicación [Depurar como STM32 Cortex-M C/C++] para el proyecto seguro.
      6. En la ventana [Editar configuración], seleccione el panel [Inicio] y agregue, cargue la imagen y los símbolos del proyecto no seguro.
        Importante: El proyecto no seguro debe cargarse antes que el proyecto seguro.
      7. Haga clic en Aceptar].
      8. Ejecutar el examparchivo en la perspectiva de depuración.

Ejecutar un primer ex discapacitado TrustZone®ample

  • Antes de cargar y ejecutar un TrustZone® ex discapacitadoample, es obligatorio leer el exampleeme file para cualquier configuración específica. Si no hay menciones específicas, asegúrese de que el dispositivo de la placa tenga la seguridad deshabilitada (TZEN=0 (byte de opción de usuario)). Consulte las preguntas frecuentes para realizar la regresión opcional a TZEN = 0
    1. Vaya a \Proyectos\NUCLEO-WBA52CG\ExampLes.
    2. Abra las carpetas \GPIO y luego \GPIO_EXTI.
    3. Abra el proyecto con su cadena de herramientas preferida. Un cambio rápidoview sobre cómo abrir, construir y ejecutar un exampEl archivo con las cadenas de herramientas compatibles se proporciona a continuación.
    4. Reconstruir todo files y cargue su imagen en la memoria de destino.
    5. Ejecutar el exampArchivo: Cada vez que se presiona el botón [USUARIO], el LED LD1 alterna. Para obtener más detalles, consulte el archivo Léame. file de la exampel.
  • Para abrir, construir y ejecutar un examparchivo con las cadenas de herramientas compatibles, siga los pasos a continuación:
    • CALIENTE:
      1. bajo el exampcarpeta del archivo, abra la subcarpeta \EWARM.
      2. Inicie el espacio de trabajo Project.eww (el nombre del espacio de trabajo puede cambiar de un example a otro).
      3. Reconstruir todo files: [Proyecto]>[Reconstruir todo].
      4. Cargue la imagen del proyecto: [Proyecto]>[Depurar].
      5. Ejecute el programa: [Depurar]>[Ir (F5)].
    • MDK-BRAZO:
      1. bajo el exampcarpeta del archivo, abra la subcarpeta \MDK-ARM.
      2. Inicie el espacio de trabajo Project.uvproj (el nombre del espacio de trabajo puede cambiar de un example a otro).
      3. Reconstruir todo files:[Proyecto]>[Reconstruir todos los objetivos files].
      4. Cargue la imagen del proyecto: [Depurar]>[Iniciar/Detener sesión de depuración].
      5. Ejecutar programa: [Depurar]>[Ejecutar (F5)].
    • STM32CubeIDE:
      1. Abra la cadena de herramientas STM32CubeIDE.
      2. Haga clic en [File]>[Cambiar espacio de trabajo]>[Otro] y busque el directorio del espacio de trabajo STM32CubeIDE.
      3. Haga clic en [File]>[Importar], seleccione [General]>[Proyectos existentes en el espacio de trabajo] y luego haga clic en [Siguiente].
      4. Busque el directorio del espacio de trabajo STM32CubeIDE y seleccione el proyecto.
      5. Reconstruir todo el proyecto files: Seleccione el proyecto en la ventana [Explorador de proyectos] y luego haga clic en el menú [Proyecto]>[Crear proyecto].
      6. Ejecute el programa: [Ejecutar]>[Depurar (F11)]
Desarrollar una aplicación personalizada

Nota: El software debe habilitar el caché de instrucciones (ICACHE) para obtener un estado de espera de ejecución 0 desde la memoria flash y alcanzar el máximo rendimiento y un mejor consumo de energía.

Usando STM32CubeMX para desarrollar o actualizar una aplicación

  • En el paquete MCU STM32CubeWBA, casi todos los proyectos exampLos archivos se generan con la herramienta STM32CubeMX para inicializar el sistema, los periféricos y el middleware.
  • El uso directo de un proyecto existente exampEl archivo de la herramienta STM32CubeMX requiere STM32CubeMX 6.10.0 o superior:
    • Después de la instalación de STM32CubeMX, abra y, si es necesario, actualice un proyecto propuesto. La forma más sencilla de abrir un proyecto existente es hacer doble clic en *.ioc file para que STM32CubeMX abra automáticamente el proyecto y su fuente files.
    • STM32CubeMX genera el código fuente de inicialización de dichos proyectos. El código fuente principal de la aplicación está contenido en los comentarios “INICIO DEL CÓDIGO DE USUARIO” y “FIN DEL CÓDIGO DE USUARIO”. En caso de que se modifiquen la selección y configuración de IP, STM32CubeMX actualiza la parte de inicialización del código pero conserva el código fuente de la aplicación principal.
  • Para desarrollar un proyecto personalizado en STM32CubeMX, siga el proceso paso a paso:
    1. Seleccione el microcontrolador STM32 que coincida con el conjunto de periféricos requerido.
    2. Configure todo el software integrado necesario utilizando un solucionador de conflictos de asignación de pines, un asistente de configuración del árbol de reloj, una calculadora de consumo de energía y la utilidad que realiza la configuración de periféricos de MCU (como GPIO o USART) y pilas de middleware (como USB).
    3. Genere el código C de inicialización según la configuración seleccionada. Este código está listo para usarse en varios entornos de desarrollo. El código de usuario se conserva en la siguiente generación de código.
  • Para obtener más información sobre STM32CubeMX, consulte el manual de usuario STM32CubeMX para la configuración de STM32 y la generación de código C de inicialización (UM1718).
  • Para obtener una lista de los proyectos disponibles examparchivos para STM32CubeWBA, consulte la nota de aplicación firmware STM32Cube examparchivos para la serie STM32WBA (AN5929).

Aplicaciones de controlador

Aplicación HAL
Esta sección describe los pasos necesarios para crear una aplicación HAL personalizada utilizando STM32CubeWBA:

  1. Crear un proyecto
    • Para crear un nuevo proyecto, comience desde el proyecto de plantilla proporcionado para cada tablero en \Proyectos\ \Plantillas o desde cualquier proyecto disponible en \Proyectos\ \Ejemplos o \Proyectos\ \Aplicaciones (donde se refiere al nombre de la placa, como STM32CubeWBA).
    • El proyecto Plantilla proporciona una función de bucle principal vacía. Sin embargo, es un buen punto de partida para comprender la configuración del proyecto STM32CubeWBA. La plantilla tiene las siguientes características:
      • Contiene el código fuente HAL, CMSIS y controladores BSP, que son el conjunto mínimo de componentes necesarios para desarrollar un código en una placa determinada.
      • Contiene las rutas incluidas para todos los componentes del firmware.
      • Define los dispositivos de la serie STM32WBA compatibles, lo que permite configurar correctamente los controladores CMSIS y HAL.
      • Proporciona usuario listo para usar fileEstá preconfigurado como se muestra a continuación:
        HAL se inicializó con la base de tiempo predeterminada con Arm® core SysTick. SysTick ISR implementado para el propósito de HAL_Delay().
        Nota: Al copiar un proyecto existente a otra ubicación, asegúrese de que todas las rutas incluidas estén actualizadas.
  2. Agregue el middleware necesario al proyecto del usuario (opcional)
    Para identificar la fuente files para agregar al proyecto file lista, consulte la documentación proporcionada para cada middleware. Consulte las aplicaciones en \Projects\STM32xxx_yyy\Applications\ (dónde se refiere a la pila de middleware, como ThreadX) para saber qué fuente fileSe deben agregar s e incluir rutas.
  3. Configurar los componentes del firmware
    Los componentes HAL y middleware ofrecen un conjunto de opciones de configuración en tiempo de compilación mediante macros #define declaradas en un encabezado file. Una configuración de plantilla file se proporciona dentro de cada componente, que debe copiarse en la carpeta del proyecto (normalmente la carpeta de configuración). file se llama xxx_conf_template.h, la palabra _template debe eliminarse al copiarla a la carpeta del proyecto). La configuración file proporciona suficiente información para comprender el impacto de cada opción de configuración. Hay información más detallada disponible en la documentación proporcionada para cada componente.
  4. Inicie la biblioteca HAL
    Después de saltar al programa principal, el código de la aplicación debe llamar a la API HAL_Init() para inicializar la biblioteca HAL, que realiza las siguientes tareas:
    • Configuración de la captación previa de la memoria flash y la prioridad de interrupción SysTick (a través de macros definidas en st m32wbaxx_hal_conf.h).
    • Configuración de SysTick para generar una interrupción cada milisegundo en la prioridad de interrupción de SysTick TICK_INT_PRIO definida en stm32wbaxx_hal_conf.h.
    • Configuración de la prioridad del grupo NVIC en 0.
    • Llamada de la función de devolución de llamada HAL_MspInit() definida en el usuario stm32wbaxx_hal_msp.c file para realizar inicializaciones globales de hardware de bajo nivel.
  5. Configurar el reloj del sistema
    La configuración del reloj del sistema se realiza llamando a las dos API que se describen a continuación:
    • HAL_RCC_OscConfig(): esta API configura los osciladores internos y externos. El usuario elige configurar uno o todos los osciladores.
    • HAL_RCC_ClockConfig(): esta API configura la fuente del reloj del sistema, la latencia de la memoria flash y los preescaladores AHB y APB.
  6. Inicializar el periférico
    • Primero escriba la función periférica HAL_PPP_MspInit. Proceder de la siguiente:
      • Habilite el reloj periférico.
      • Configure los GPIO periféricos.
      • Configure el canal DMA y habilite la interrupción DMA (si es necesario).
      • Habilite la interrupción periférica (si es necesario).
    • Edite stm32xxx_it.c para llamar a los controladores de interrupciones necesarios (periféricos y DMA), si es necesario.
    • Escriba las funciones de devolución de llamada completas del proceso, si se planea utilizar una interrupción periférica o DMA.
    • En el usuario principal.c file, inicialice la estructura del controlador del periférico y luego llame a la función HAL_PPP_Init() para inicializar el periférico.
  7. Desarrollar una aplicación
    • En este stage, el sistema está listo y puede comenzar el desarrollo del código de la aplicación del usuario.
    • HAL proporciona API intuitivas y listas para usar para configurar el periférico. Admite sondeos, interrupciones y un modelo de programación DMA para adaptarse a los requisitos de cualquier aplicación. Para obtener más detalles sobre cómo utilizar cada periférico, consulte el rico ex.ampconjunto de archivos proporcionado en el paquete MCU STM32CubeWBA.
      Precaución: En la implementación HAL predeterminada, el temporizador SysTick se utiliza como base de tiempo: genera interrupciones a intervalos de tiempo regulares. Si se llama a HAL_Delay() desde el proceso ISR periférico, asegúrese de que la interrupción SysTick tenga una prioridad más alta (numéricamente menor) que la interrupción periférica. De lo contrario, el proceso ISR de la persona que llama se bloquea. Las funciones que afectan las configuraciones de la base de tiempo se declaran como __débiles para hacer posible la anulación en caso de otras implementaciones en el usuario. file (utilizando un temporizador de uso general, por ej.amparchivo u otra fuente de tiempo). Para obtener más detalles, consulte HAL_TimeBase ex.ampel.

solicitud de maestría en Derecho
Esta sección describe los pasos necesarios para crear una aplicación LL personalizada utilizando STM32CubeWBA.

  1. Crear un proyecto
    • Para crear un nuevo proyecto, comience desde el proyecto Templates_LL proporcionado para cada tablero en \Proyectos\ \Templates_LL, o desde cualquier proyecto disponible en \Projects\ \Examples_LL ( se refiere al nombre de la placa, como NUCLEO-WBA32CG).
    • El proyecto de plantilla proporciona una función de bucle principal vacía, que es un buen punto de partida para comprender la configuración del proyecto para STM32CubeWBA. Las principales características de la plantilla son las siguientes:
      • Contiene los códigos fuente de los controladores LL y CMSIS, que son el conjunto mínimo de componentes necesarios para desarrollar código en una placa determinada.
      • Contiene las rutas incluidas para todos los componentes de firmware necesarios.
      • Selecciona el dispositivo de la serie STM32WBA compatible y permite la configuración correcta de los controladores CMSIS y LL.
      • Proporciona usuario listo para usar. files que están preconfigurados de la siguiente manera:
        ◦ main.h: capa de abstracción de definición de LED y USER_BUTTON.
        ◦ main.c: Configuración del reloj del sistema para la frecuencia máxima.
  2. Portar un proyecto existente a otra placa
    Para admitir un proyecto existente en otro tablero de destino, comience desde el proyecto Templates_LL proporcionado para cada tablero y disponible en \Proyectos\ \Plantillas_LL.
    • Seleccione un LL example: Para encontrar el tablero en el que LL examparchivos están implementados, consulte la lista de LL examparchivos STM32CubeProjectsList.html.
  3. Portar el LL exampen:
    • Copie/pegue la carpeta Templates_LL (para conservar la fuente inicial) o actualice directamente el proyecto Temp lates_LL existente.
    • Entonces la portabilidad consiste principalmente en reemplazar Templates_LL files por el exampproyecto objetivo les_LL.
    • Conserve todas las piezas específicas de la placa. Por motivos de claridad, las piezas específicas de la placa están marcadas con etiquetas específicas. tags:

      STMicroelectronics-STM32WBA-Series-Getting-Started-fig-7

    • Así, los principales pasos de portabilidad son los siguientes:
      • Reemplace stm32wbaxx_it.h file
      • Reemplace stm32wbaxx_it.c file
      • Reemplace el main.h file y actualícelo: Mantenga la definición del LED y del botón de usuario de la plantilla LL en CONFIGURACIÓN ESPECÍFICA DE LA TARJETA tags.
      • Reemplace el main.c file y actualizarlo:
    • Mantenga la configuración del reloj de la función de plantilla LL SystemClock_Config() en CONFIGURACIÓN ESPECÍFICA DE LA TARJETA tags.
    • Dependiendo de la definición del LED, reemplace cada aparición de LDx con otra LDy disponible en main.h file.
    • Con estas modificaciones, el exampAhora se ejecuta en el tablero objetivo.

Aplicaciones de seguridad
Este paquete se entrega con aplicaciones de seguridad.

Aplicaciones SBSFU

  • SBSFU proporciona una solución Root of Trust, que incluye funcionalidades de arranque seguro y actualización de firmware segura (basadas en MCUboot).
  • La solución se utiliza antes de ejecutar la aplicación.
  • La solución proporciona un examparchivo de un servicio seguro (alternancia GPIO), que está aislado de la aplicación no segura. La aplicación no segura en tiempo de ejecución aún puede utilizar esta solución.

Aplicaciones TFM
El TFM proporciona una solución Root of Trust que incluye funcionalidades de arranque seguro y actualización de firmware segura.
(basado en MCUboot). La solución se utiliza antes de ejecutar la aplicación. La solución proporciona servicios seguros de TFM que están aislados de la aplicación no segura. La aplicación no segura en tiempo de ejecución aún puede utilizar esta solución.

Aplicaciones de RF
La aplicación de RF se describe en esta nota de aplicación: Creación de aplicaciones inalámbricas con microcontroladores de la serie STM32WBA (AN5928).

Obteniendo actualizaciones de la versión STM32CubeWBA
Las últimas versiones y parches del paquete STM32CubeWBA MCU están disponibles en la serie STM32WBA. Se pueden recuperar desde el botón VERIFICAR ACTUALIZACIÓN en STM32CubeMX. Para obtener más detalles, consulte la Sección 3 del manual de usuario STM32CubeMX para la configuración de STM32 y la generación de código C de inicialización (UM1718).

Preguntas frecuentes

  • ¿Cuándo debo utilizar controladores HAL en lugar de LL?
    • Los controladores HAL ofrecen API de alto nivel y orientadas a funciones, con un alto nivel de portabilidad. La complejidad del producto o periférico está oculta para los usuarios finales.
    • Los controladores LL ofrecen API de nivel de registro de capa baja, con mejor optimización pero menos portátiles. Requieren un conocimiento profundo del producto o de las especificaciones de propiedad intelectual.
  • ¿Puedo utilizar los controladores HAL y LL juntos? Si puedo, ¿cuáles son las limitaciones?
    • Es posible utilizar controladores HAL y LL. Utilice HAL para la fase de inicialización de IP y luego administre las operaciones de E/S con controladores LL.
    • La principal diferencia entre HAL y LL es que los controladores HAL requieren crear y utilizar identificadores para la gestión de operaciones, mientras que los controladores LL operan directamente en registros periféricos. La examples_MIX exampLe ilustra cómo mezclar HAL y LL.
  • ¿Cómo se habilitan las API de inicialización de LL?
    • La definición de las API de inicialización de LL y los recursos asociados (estructuras, literales y prototipos) está condicionada por el modificador de compilación USE_FULL_LL_DRIVER.
    • Para poder utilizar las API de inicialización de LL, agregue este modificador en el preprocesador del compilador de la cadena de herramientas.
  • ¿Cómo puede STM32CubeMX generar código basado en software integrado?
    STM32CubeMX tiene conocimiento incorporado de los microcontroladores STM32, incluidos sus periféricos y software que permite proporcionar una representación gráfica al usuario y generar *.h o *.c. files basado en la configuración del usuario.

AVISO IMPORTANTE – LEER ATENTAMENTE

  • STMicroelectronics NV y sus subsidiarias (“ST”) se reservan el derecho de realizar cambios, correcciones, mejoras, modificaciones y mejoras a los productos de ST y/o a este documento en cualquier momento y sin previo aviso. Los compradores deben obtener la información relevante más reciente sobre los productos de ST antes de realizar pedidos. Los productos de ST se venden de conformidad con los términos y condiciones de venta de ST vigentes al momento de la confirmación del pedido.
  • Los compradores son los únicos responsables de la elección, selección y uso de los productos de ST y ST no asume ninguna responsabilidad por la asistencia en la aplicación o el diseño de los productos de los compradores.
  • ST no concede aquí ninguna licencia, expresa o implícita, sobre ningún derecho de propiedad intelectual.
  • La reventa de productos ST con disposiciones diferentes a la información aquí establecida anulará cualquier garantía otorgada por ST para dicho producto.
  • ST y el logotipo de ST son marcas comerciales de ST. Para obtener información adicional sobre las marcas comerciales de ST, consulte www.st.com/trademarks. Todos los demás nombres de productos o servicios son propiedad de sus respectivos dueños.
  • La información contenida en este documento reemplaza la información proporcionada previamente en cualquier versión anterior de este documento.
  • © 2023 STMicroelectronics – Todos los derechos reservados

Documentos / Recursos

Introducción a la serie STMicroelectronics STM32WBA [pdf] Manual del usuario
Serie STM32WBA Introducción, Introducción, Introducción

Referencias

Deja un comentario

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *