Expansión de software STMicroelectronics UM3469 X-CUBE-ISO1

Introducción
El paquete de software de expansión X-CUBE-ISO1 para STM32Cube funciona en el STM32 e incluye firmware para el X-NUCLEO-ISO1A1. Este software proporciona una solución fácil de usar para el desarrollo de un dispositivo PLC básico proporcionado por el X-NUCLEO. La expansión se basa en la tecnología de software de STM32Cube para facilitar su portabilidad entre diferentes microcontroladores STM32.
El software incluye una implementación que se ejecuta en la placa de expansión X-NUCLEO-ISO1A1 conectada a una placa de desarrollo NUCLEO-G071RB (o bien una NUCLEO-G0B1RE o una NUCLEO-G070RB). De ahora en adelante, en el documento solo se mencionará la NUCLEO-G071RB para simplificar.
La placa X-NUCLEO-ISO1A1 está diseñada para admitir el apilamiento de dos placas con configuraciones de puentes adecuadas para ampliar las capacidades de entrada y salida.
Siglas y abreviaturas
Tabla 1. Lista de siglas
| Acrónimo | Descripción |
| SOCIEDAD ANÓNIMA | Controlador lógico programable |
| API | Interfaz de programación de aplicaciones |
| Modulación por ancho de pulso (PWM) | Modulación por ancho de pulso |
| Entrada y salida de GP | Entrada/salida de uso general. |
| HAL | Capa de abstracción de hardware |
| PC | Ordenador personal |
| FW | Firmware |
¿Qué es STM32Cube?
STM32Cube™ representa la iniciativa de STMicroelectronics para simplificar la vida de los desarrolladores al reducir el esfuerzo, el tiempo y los costes de desarrollo. STM32Cube abarca el portafolio de STM32.
La versión 32.x de STM1Cube incluye:
- STM32CubeMX, una herramienta gráfica de configuración de software que permite la generación de código de inicialización C mediante asistentes gráficos.
- Una plataforma de software integrado integral específica para cada serie (como STM32CubeG0 para la serie STM32G0), que incluye:
- El software de capa de abstracción integrado STM32Cube HAL, que garantiza la máxima portabilidad en toda la cartera de STM32
- un conjunto consistente de componentes de middleware como RTOS, USB, TCP/IP y gráficos
- Todas las utilidades de software integradas con un conjunto completo de exampLes.
Arquitectura de STM32Cube
La solución de firmware STM32Cube se basa en tres niveles independientes que pueden interactuar fácilmente entre sí, como se describe en el diagrama a continuación.

Expansión de software X-CUBE-ISO1 para STM32Cube
Encimaview
El firmware para la placa de expansión industrial de entrada/salida aislada X-NUCLEO-ISO1A1, desarrollada en torno a entornos y bibliotecas STM32, aprovecha el MCU de alto rendimiento de las placas Nucleo STM32 para gestionar entradas y salidas digitales con diagnóstico integrado, límite de corriente dinámico y generación de señales PWM. Ofrece un completo sistema de configuración y control de la placa, incluyendo marcos para condiciones predeterminadas y alternativas, macros para configurar valores de preescalador y definiciones de puertos y pines GPIO.
Admite varios sampLos casos de uso de la aplicación, como la duplicación de entrada a salida digital, la comunicación UART a través de la placa Nucleo, la detección de fallas, los casos de prueba y la generación de PWM, se pueden usar directamente y se pueden personalizar y ampliar fácilmente.
La API proporciona un conjunto robusto de funciones para el control de entradas/salidas digitales, la detección de fallos y la actualización del estado de la placa, con opciones de configuración para ejecutar dos placas simultáneamente en diferentes modos. Dispone de funciones API específicas para inicializar, iniciar, detener y configurar señales PWM para canales de salida digital.
El paquete de soporte de la placa incluye funciones para controlar y monitorear los pines GPIO interconectados con IPS1025H-32 y leer el estado de los pines GPIO interconectados con CLT03-2Q3 a través de un aislador digital.
La configuración y la inicialización se basan en STM32CubeMX, mientras que el desarrollo y la depuración están respaldados por STM32CubeIDE, IAR Systems y herramientas Keil®.
Arquitectura
El firmware del X-NUCLEO-ISO1A1 se puede dividir en varios bloques funcionales distintos, cada uno responsable de varios aspectos de las operaciones del sistema:

- Configuración y control de la placa:
- El archivo board_config.h file Contiene macros para configurar la placa para que funcione en condiciones predeterminadas, alternativas o ambas. También incluye definiciones de valores de preescalador y puertos y pines GPIO.
- Este bloque garantiza que la placa esté configurada correctamente para las condiciones operativas deseadas y que todas las configuraciones de hardware necesarias estén en su lugar.
- Casos de uso de la aplicación:
- st_iso_app.h y st_iso_app.c files contiene casos de uso de aplicaciones diseñados para probar varias funcionalidades de la placa.
- Estos casos de uso incluyen duplicación de entrada a salida digital, pruebas de detección de fallas y generación de señales PWM.
- ExampSe proporcionan configuraciones para ejecutar dos placas simultáneamente en diferentes modos, lo que demuestra la versatilidad y flexibilidad del firmware.
- Funciones API:
- Los iso1a1.h y iso1a1.c fileProporcionamos un conjunto completo de API para admitir diversas funcionalidades.
- Estas API incluyen funciones para el control de entrada/salida digital, detección de fallas y actualizaciones del estado de la placa.
- Las API están diseñadas para ser simples e intuitivas, lo que facilita que los usuarios interactúen con el tablero y realicen las operaciones necesarias.
- Control de señal PWM:
- Los pwm_api.h y pwm_api.c files contiene funciones API específicas relacionadas con la generación de señales PWM.
- Estas funciones permiten inicializar, configurar, iniciar y detener señales PWM para canales de salida digitales.
- La funcionalidad PWM no es la opción predeterminada. Se ha modificado la configuración de la placa para habilitarla. Consulte la Sección 3.5: API para obtener más detalles.
- Paquete de soporte de la placa:
- El paquete de soporte de la placa incluye files para controlar y monitorear los pines GPIO interconectados con IPS1025H-32 y leer el estado de los pines GPIO interconectados con CLT03-2Q3.
- Los ips1025h_32.h y ips1025h_32.c files proporciona funciones para configurar, borrar y detectar fallas en los pines GPIO interconectados con IPS1025H-32.
- Los clt03_2q3.h y clt03_2q3.c files proporciona funciones para leer el estado de los pines GPIO interconectados con CLT03-2Q3.
El firmware de demostración implementa varios casos de uso sencillos para mostrar las capacidades del sistema. Estos casos de uso y las API de usuario se ejecutan de forma coordinada para garantizar un funcionamiento fluido y resultados precisos. La arquitectura está diseñada para ser fácilmente expandible, lo que permite a los usuarios añadir nuevas funcionalidades y casos de uso según sea necesario. Se proporciona la configuración predeterminada para ejecutar una placa con E/S industriales digitales. La configuración de los puentes también debe estar en modo predeterminado, como se describe en la Tabla 2. La entrada digital y la duplicación de salida digital (DIDO) son los casos de uso predeterminados de la aplicación del firmware.
Estructura de la carpeta

Las siguientes carpetas están incluidas en el paquete de software:
- La documentación contiene un HTML compilado. file generado a partir del código fuente, detallando los componentes del software y las API.
- Los controladores contienen:
- una carpeta HAL de STM32Cube, ubicada en las subcarpetas STM32G0xx_HAL_Driver. Estas fileLos s no se describen aquí porque no son específicos del software X-CUBE-ISO1 sino que provienen directamente del marco STM32Cube.
- una carpeta CMSIS que contiene el estándar de interfaz de software del microcontrolador Cortex® files del brazo. Estos fileLas capas de abstracción de hardware son independientes del proveedor para la serie de procesadores Cortex®-M. Esta carpeta también se mantiene sin cambios con respecto al framework STM32Cube.
- una carpeta BSP que contiene los códigos para los componentes IPS1025H-32 y CLT03-2Q3 y las API relacionadas con X-NUCLEO-ISO1A1.
- La aplicación contiene la carpeta de usuario que contiene el archivo main.c file, el caso de uso de la aplicación file, st_iso_app.c y board_config.h file, proporcionado para la plataforma NUCLEO-G071RB.
Carpeta BSP
El software X-CUBE-ISO1 utiliza dos componentes diferentes files, que están dentro de BSP/Componentes:
IPS1025
Los ips1025h_32.h y ips1025h_32.c files proporciona una implementación completa del controlador para los pines GPIO conectados con IPS1025H-32, que incluye funcionalidad completa para controlar todos los pines y detectar fallas. Estos... fileImplementa funciones para inicializar el dispositivo, configurar y borrar el estado del canal, detectar fallos y gestionar la funcionalidad PWM. El controlador admite múltiples dispositivos y canales, con funcionalidades completas tanto para canales individuales como para grupos.
CLT03
Los clt03_2q3.h y clt03_2q3.c fileImplementamos un controlador completo para los pines GPIO conectados al CLT03-2Q3, con capacidad para leer todos los estados de los pines. El controlador proporciona funciones para inicializar el dispositivo, leer el estado de cada canal y obtener información de estado de todos los canales simultáneamente. Admite múltiples configuraciones de dispositivo y mantiene el estado interno para una gestión eficaz de los canales.
Las API del software X-CUBE-ISO1 se dividen en dos fuentes principales files, que están dentro de la subcarpeta ISO1A1:
ISO1A1
La ISO1A1 fileLos s abarcan un conjunto completo de funciones API diseñadas para la configuración de la placa, la interacción con los componentes y la gestión de fallos. Estas funciones facilitan las operaciones de lectura y escritura, la detección de fallos y las actualizaciones, e incluyen diversas utilidades auxiliares para complementar las funciones principales de la API. Además, fileProporcionan funcionalidad para el control de LED, inicialización de GPIO, manejo de interrupciones y comunicación UART.
API de PWM
La API PWM proporciona funciones para inicializar, configurar, iniciar y detener señales PWM. Permite configurar la frecuencia PWM y el ciclo de trabajo para pines específicos del temporizador, lo que garantiza un control preciso de las operaciones PWM.
Carpeta de la aplicación
La carpeta Aplicación contiene el archivo principal files necesario para el firmware, incluidos los encabezados y la fuente files. A continuación se muestra una descripción detallada de la files en esta carpeta:
- board_config.h: Macros de configuración para la placa.
- main.c: Programa principal (código del ejemplo)ample que se basa en la biblioteca para ISO1A1).
- st_iso_app.c: Funciones de aplicación para pruebas y configuración de la placa.
- stm32g0xx_hal_msp.c: rutinas de inicialización de HAL.
- stm32g0xx_it.c: Manejador de interrupciones.
- syscalls.c: Implementaciones de llamadas al sistema.
- sysmem.c: Gestión de memoria del sistema.
- system_stm32g0xx.c: Inicialización del sistema.
Recursos necesarios de software
El dispositivo Nucleo controla y se comunica con la placa X-NUCLEO-ISO1A1 mediante GPIO. Esto requiere el uso de varios GPIO para la entrada, salida y detección de fallos de los dispositivos de E/S industriales incluidos en la placa X-NUCLEO-ISO1A1. Consulte el manual de usuario del hardware UM3483 para obtener más detalles y la configuración de los puentes.
Configuración de la placa (board_config.h)
El archivo board_config.h file Define los recursos utilizados y las macros de configuración para configurar el software según la configuración de la placa. Admite hasta dos placas (como el apilamiento de dos placas).
La configuración predeterminada del software se corresponde con la placa de expansión X-NUCLEO-ISO1A1, con sus puentes en las posiciones predeterminadas. Para configurar el software para X-NUCLEO-ISO1A1 con su configuración predeterminada, descomente la macro BOARD_ID_DEFAULT en board_config.h. file.
La configuración ALTERNATIVA del software se establece descomentando la macro BOARD_ID_ALTERNATE en board_config.h file y cambiar las posiciones de los puentes en el tablero.
Para usar dos placas simultáneamente en una configuración de apilamiento, descomente las macros BOARD_ID_DEFAULT y BOARD_ID_ALTERNATE y asegúrese de que los puentes de una placa estén en la posición predeterminada y la otra en la alternativa. Tenga en cuenta que no se recomienda tener ambas placas en la misma configuración (ya sea ambas en la configuración predeterminada o ambas en la alternativa), ya que podría producir un comportamiento no deseado.
Al ejecutar solo una placa, asegúrese de que el software esté configurado para solo una configuración y que la macro correspondiente a la otra configuración esté comentada.

Preescaladores
Podemos configurar los valores del preescalador en board_config.h para lograr diferentes rangos de frecuencia para la salida PWM mediante la configuración de las macros adecuadas. Para usar un valor preescalar, descomente la macro correspondiente y comente las demás. Por defecto, se usa DEFAULT_PRESCALAR.
- PREESCALADOR_1
- PREESCALADOR_2
- PREESCALADOR_PREDETERMINADO
Los valores del preescalador solo se utilizan cuando se usan temporizadores y no son necesarios para ninguna operación básica de E/S. Los valores de las macros preescalares y sus rangos de frecuencia correspondientes se pueden consultar en la documentación del código o en el propio código.
LED de latido
Podemos configurar el LED verde de usuario, D7, para que parpadee con un latido como prueba de conexión correcta a la placa NUCLEO-G071RB. La macro HEARTBEAT_LED, al descomentar, hace parpadear el LED verde de X-NUCLEO-ISO1A1 al conectarlo a NUCLEO. Permanece encendido durante 1 segundo y apagado durante 2 segundos; la temporización se controla mediante temporizadores. Cuando no se utiliza o se ejecuta alguna función que involucre LED, la macro debe descomentarse.
Configuración de GPIO de entrada y salida
Cada placa X-NUCLEO-ISO1A1 cuenta con dos puertos de entrada y dos de salida. Las capacidades de la placa se pueden ampliar apilando dos placas X-NUCLEO-ISO1A1, lo que permite el uso de cuatro puertos de entrada y cuatro de salida digitales. El software incluido incluye API completas que facilitan la lectura, configuración y borrado de los puertos. Además, las API permiten la configuración, lectura y borrado simultáneos de todos los puertos. Encontrará información detallada sobre las funciones de la API en la documentación del código, así como en la sección sobre API de este documento.

Aquí, el prefijo DI indica puerto de entrada digital y DO indica puerto de salida digital. Para una configuración alternativa, el software utiliza las mismas convenciones de nomenclatura con el sufijo _alt.
La siguiente tabla detalla las macros GPIO definidas en el software correspondientes a varios puertos IO:
Tabla 2. GPIO asignados para configuraciones de software predeterminadas y alternativas
| Nombre | Función | Configuración predeterminada | Configuración alternativa |
| PIN DE ENTRADA | Pin de entrada 1 | GPIOC, IA0_IN_1_PIN | GPIOD, IA0_IN_1_PIN |
| Pin de entrada 2 | GPIOD, IA1_IN_2_PIN | GPIOC, IA1_IN_1_PIN | |
| PIN DE SALIDA | Pin de salida 1 | GPIOC, QA0_CNTRL_1_PIN | GPIOD, QA0_CNTRL_1_PIN |
| Pin de salida 2 | GPIOC, QA1_CNTRL_2_PIN | GPIOC, QA1_CNTRL_2_PIN | |
| PIN DE FALLA | Pin 1 de falla | GPIOC, FLT1_QA0_2_OT_PIN | GPIOD, FLT1_QA0_1_OT_PIN |
| Pin 2 de falla | GPIOC, FLT2_QA0_2_OL_PIN | GPIOD, FLT2_QA0_1_OL_PIN | |
| Pin 3 de falla | GPIOC, FLT1_QA1_2_OT_PIN | GPIOC, FLT1_QA1_1_OT_PIN | |
| Pin 4 de falla | GPIOC, FLT2_QA1_1_OL_PIN | GPIOD, FLT2_QA1_2_OL_PIN | |
| MACRO DE CONFIGURACIÓN | ID DE TABLERO PREDETERMINADO | ID DE TABLERO ALTERNATIVO |
Temporizadores y PWM
Los temporizadores se pueden usar en el firmware X-CUBE-ISO1 para generar señales PWM para pines específicos. Por defecto, los temporizadores no se inicializan, excepto TIM3. Los temporizadores correspondientes deben inicializarse antes de generar las señales PWM, y los puertos de salida correspondientes deben inicializarse en modo PWM.
Para las operaciones normales de entrada/salida GPIO, no es necesario configurar ningún temporizador ni puerto de salida, ya que se gestiona por defecto. Sin embargo, si una vez configurados los pines de salida en modo PWM, es necesario reconfigurarlos en modo GPIO para que se utilicen como pines GPIO.
Nota: Cuando los pines de salida se utilizan para la generación de PWM, la salida GPIO se desactiva y ambas funciones no se pueden implementar simultáneamente. Para reactivar GPIO después de usar PWM, se puede llamar a la función API ST_ISO_BoardConfigureDefault() o ST_ISO_InitGPIO() para configurar todos los puertos como GPIO a la vez, o bien a ST_ISO_Init_GPIO() con un puerto y pin GPIO específicos.
Como se mencionó anteriormente, el software también utiliza un temporizador predeterminado, TIM3, que se utiliza para la temporización de LED de usuario, reloj y temporización UART. Está configurado por defecto para un periodo de 1 segundo.
La siguiente tabla detalla los temporizadores disponibles para cada pin en nuestro código:
Tabla 3. Temporizadores disponibles para cada pin
| Nombre del pin | Representación de software | Minutero | Canal del temporizador | Función alternativa |
| QA0_CNTRL_1_PIN | Control de calidad_0 | TIM2 | TIM_CANAL_4 | GPIO_AF2_TIM2 |
| QA1_CNTRL_2_PIN | Control de calidad_1 | TIM1 | TIM_CANAL_3 | GPIO_AF2_TIM1 |
| QA0_CNTRL_2_PIN | Control de calidad_0_ALT | TIM1 | TIM_CANAL_4 | GPIO_AF2_TIM1 |
| QA1_CNTRL_1_PIN | Control de calidad_1_ALT | TIM17 | TIM_CANAL_1 | GPIO_AF2_TIM17 |
Utilidades adicionales del firmware
El firmware incluye utilidades adicionales para mejorar la funcionalidad de la placa de evaluación X-NUCLEO-ISO1A1. Algunas de ellas se describen a continuación.
Unidad de control unidireccional (UART)
La función de comunicación UART permite la monitorización y depuración en tiempo real del estado de la placa mediante utilidades de PC como TeraTerm, PuTTY y otras aplicaciones similares. El software permite la transmisión de datos UART a través del UART presente en la placa NUCLEO-G071RB. La función `ST_ISO_UART` envía información detallada del estado de la placa a través del UART, incluyendo el tiempo de actividad del sistema, la configuración del firmware y el estado de fallos. Estos datos pueden... viewSe puede ejecutar con cualquier aplicación de puerto serie, como TeraTerm. La función `ST_ISO_APP_DIDOandUART` combina operaciones de entrada/salida digital con comunicación UART, transmitiendo el estado de todos los canales de entrada y salida a intervalos específicos. A continuación se muestran los ajustes de configuración y...ampLe de cómo aparecen los datos en TeraTerm. El nombre del puerto puede variar según el sistema y el puerto serie utilizado.


Configuración del modo pin IO
La utilidad de configuración del modo de pin de E/S permite configurar los puertos de entrada y salida de la placa mediante la función ST_ISO_BoardConfigure(). Esta función permite configurar dos puertos de salida (QA0, QA1) y dos puertos de entrada (IA0, IA1) en modo de entrada/salida, modo de salida PWM o modo de entrada de interrupción. Ajustando los parámetros y llamando a esta función, los usuarios pueden personalizar fácilmente la configuración de E/S de la placa para satisfacer sus necesidades específicas.
En el modo de Entrada/Salida, la utilidad inicializa los pines GPIO para operaciones digitales de propósito general. En el modo de salida PWM, configura los temporizadores para un control preciso de la señal PWM. En el modo de entrada de interrupción, la utilidad configura los pines para gestionar interrupciones, lo que permite una programación ágil basada en eventos.
Manejo de interrupciones
Para gestionar las señales de FALLO, el software habilita las líneas de interrupción asociadas, lo que permite una programación ágil basada en eventos. Se puede asociar un controlador personalizado a estas interrupciones mediante...
Función HAL_GPIO_EXTI_Rising_Callback definida en la API. El software incluye funciones para inicializar los pines GPIO en modo de interrupción mediante la función ST_ISO_BoardConfigure y configurar acciones específicas en los controladores IRQ de EXTI. Esto permite a los usuarios personalizar la respuesta de la placa a eventos externos, garantizando así una gestión eficaz de diversas condiciones de fallo y activadores.
API
La API del software X-CUBE-ISO1 proporciona un conjunto completo de funciones para controlar y supervisar la placa X-NUCLEO-ISO1A1, incluyendo la generación de señales PWM y las operaciones GPIO. La API está diseñada para ser fácil de usar e integrar en diversas aplicaciones, lo que proporciona flexibilidad y control sobre la funcionalidad de la placa.
La API del software X-CUBE-ISO1 se define en la carpeta BSP/ISO1A1. Sus funciones tienen el prefijo ST_ISO. La API es visible para las aplicaciones a través de iso1a1.c y pwm_api.c. files es una combinación de constantes, estructuras de datos y funciones.
SampLas aplicaciones de firmware utilizan estas API para mostrar algunos de los posibles usos de estas funciones.
El paquete de software X-CUBE-ISO1 proporciona dos conjuntos de API:
- API ISO1A1
- API de PWM
API ISO1A1
La API ISO1A1 se define en iso1a1.h e iso1a1.c files. Proporciona funciones para configurar y controlar la placa ISO1A1, incluidas operaciones de entrada/salida GPIO y detección de fallas.
Funciones clave
- ST_ISO_BoardConfigureDefault: configura los puertos IO de la placa con la configuración GPIO predeterminada.
- ST_ISO_BoardConfigure: configura el modo de los puertos de entrada y salida de la placa.
- ST_ISO_BoardInit: Inicializa el hardware de la placa.
- ST_ISO_BoardMapInit: inicializa la funcionalidad de la placa en función de la configuración de los controladores del canal.
- ST_ISO_GetFWVersion: Devuelve la versión actual del firmware.
- ST_ISO_GetChannelHandle: recupera el identificador de canal para un nombre de canal especificado.
- ST_ISO_InitGPIO: inicializa el pin GPIO especificado con el ID del módulo dado.
- ST_ISO_InitInterrupt: inicializa el pin GPIO especificado como una interrupción con el ID del módulo dado.
- ST_ISO_EnableFaultInterrupt: inicializa los pines GPIO de falla en modo de interrupción.
- ST_ISO_SetChannelStatus: establece el estado de un canal especificado.
- ST_ISO_SetOne_DO: Establece un único canal de salida digital.
- ST_ISO_ClearOne_DO: borra un solo canal de salida digital.
- ST_ISO_WriteAllChannels: escribe datos en todos los canales de salida digital.
- ST_ISO_GetOne_DI: Obtiene el estado de un solo canal de entrada digital.
- ST_ISO_ReadAllChannel: lee el estado de todos los canales de entrada.
- ST_ISO_ReadAllOutputChannel: lee el estado de todos los canales de salida.
- ST_ISO_ReadFaultStatus: lee el estado de falla de todos los puertos de detección de fallas.
- ST_ISO_ReadFaultStatusPolling: prueba la detección de fallas de las placas en modo de sondeo.
- ST_ISO_DisableOutputChannel: deshabilita la salida para ese canal.
- ST_ISO_UpdateBoardStatusInfo: actualiza la información del estado de la placa.
- ST_ISO_UpdateFaultStatus: actualiza el estado de falla de un canal específico.
- ST_ISO_BlinkLed: hace parpadear el LED especificado con un retraso y un número de repeticiones determinados.
- ST_ISO_UART: envía la información del estado de la placa a través de UART.
- ST_ISO_SwitchInit: inicializa los componentes del conmutador.
- ST_ISO_SwitchDeInit: desinicializa la instancia del conmutador.
- ST_ISO_DigitalInputInit: Inicializa los componentes de entrada digital.
- ST_ISO_DigitalInputDeInit: desinicializa la instancia de entrada digital.
API de PWM
La API PWM se define en pwm_api.h y pwm_api.c files. Proporciona las siguientes funciones para inicializar y controlar señales PWM para pines específicos.
- ST_ISO_Init_PWM_Signal: Inicializa los temporizadores y el pin específico para la señal PWM.
- ST_ISO_Set_PWM_Frequency: establece la frecuencia PWM para el pin específico.
- ST_ISO_Set_PWM_Duty_Cycle: establece el ciclo de trabajo PWM para el pin específico.
- ST_ISO_Start_PWM_Signal: inicia la señal PWM en el pin específico.
- ST_ISO_Stop_PWM_Signal: detiene la señal PWM en el pin específico.
Para iniciar una señal PWM en un canal respectivo, primero llame a la función ST_ISO_Init_PWM_Signal, luego configure la frecuencia y el ciclo de trabajo deseados llamando a ST_ISO_Set_PWM_Frequency y
Las funciones ST_ISO_Set_PWM_Duty_Cycle respectivamente y luego puede iniciar la señal PWM llamando a la función ST_ISO_Start_PWM_Signal y detenerla llamando a ST_ISO_Stop_PWM_Signal.
La función debe llamarse con el nombre del pin correspondiente y los temporizadores disponibles, cuyos detalles se proporcionan en la tabla 3. Se pueden configurar diferentes canales de salida con diferentes frecuencias y ciclos de trabajo; cambiar la frecuencia o el ciclo de trabajo no afecta al otro, permanece igual.
La información técnica detallada sobre las API disponibles para el usuario se puede encontrar en un HTML compilado. file ubicado dentro de la carpeta “Documentación” del paquete de software donde se describen completamente todas las funciones y parámetros.
Descripción de la aplicación
La aplicación de demostración implementa varios casos de uso sencillos. st_iso_app y board_config fileLos s desempeñan un papel crucial en la configuración y el uso de la placa y sus funciones de aplicación. Antes de usar estas funciones, asegúrese de que la configuración de la placa y del software estén sincronizadas.
Funciones de aplicación (st_iso_app.h y st_iso_app.c)
Las funciones de la aplicación tienen el prefijo ST_ISO_APP; son las funciones de nivel superior visibles para el usuario que invocan las funciones de la API para su implementación. Se pueden invocar en el archivo main.c. file para su funcionamiento.
- Selección de caso de uso: el usuario puede descomentar la macro de caso de uso deseada en st_iso_app.c fileLa función ST_ISO_APP_SelectUseCaseMacro(), llamada en main.c, inicializa dicho caso de uso, y la función ST_ISO_APP_SelectedFunction() lo implementa en main.c. Este enfoque facilita la configuración del modo operativo simplemente modificando las definiciones de las macros, lo que garantiza que se ejecute la funcionalidad adecuada según el caso de uso seleccionado. Por defecto, se selecciona el caso de uso DIDO, y el usuario no necesita modificar el código para implementarlo.
- Duplicación de entrada digital a salida digital (ST_ISO_APP_UsecaseDIDO): Esta función lee el estado de todos los canales de entrada y lo escribe en todos los canales de salida. Resulta útil para replicar entradas digitales a salidas digitales.
- Duplicación de entrada digital a salida digital con UART (ST_ISO_APP_DIDOandUART): Esta función duplica las entradas digitales a las salidas digitales, de forma similar a la función ST_ISO_APP_UsecaseDIDO. Además, transmite el estado de la placa a través de la interfaz UART del dispositivo Nucleo, lo que permite... viewed en un puerto serie utilizando aplicaciones como Tera Term.
- Función de caso de prueba (ST_ISO_APP_TestCase): Esta función realiza una serie de pruebas y acciones según la configuración de la placa. Comprueba el estado de fallo, lee el estado de dos canales de entrada digital y realiza acciones según sus valores. Esta función permite evaluar rápidamente el rendimiento y la funcionalidad de la placa, además de obtener información visual mediante diferentes patrones de LED. Asegúrese de que la macro HEARTBEAT_LED esté activada en board_config.h. file Se comenta que se deben observar patrones de LED adecuados.
- Generación de PWM (ST_ISO_APP_PWM_OFFSET): Esta función inicia la señal PWM en ambos canales de salida con una frecuencia de 1 Hz y un ciclo de trabajo del 50 %. Inicializa la señal PWM, establece la frecuencia y el ciclo de trabajo, e inicia la señal PWM para el ID de placa especificado. La señal PWM se genera con un desfase entre ambos canales, por lo que no están en fase.
- Prueba de Detección de Fallos (ST_ISO_APP_FaultTest): Esta función evalúa la detección de fallos activando los pines de diagnóstico integrados del módulo de salida inteligente IPS1025, ya sea en modo de sondeo o de interrupción. Configura el modo de detección de fallos, lo inicializa y actualiza la estructura de estado de fallo según el modo seleccionado. Esta función es crucial para garantizar la fiabilidad y la seguridad de la placa, detectando y gestionando los fallos eficazmente. En modo de sondeo, el estado de fallo se actualiza cada segundo mediante un temporizador y se refleja en la estructura defaultBoardFaultStatus o alternateBoardFaultStatus. En modo de interrupción, el estado de fallo se actualiza solo cuando se produce un fallo y activa el software para borrar el puerto de salida correspondiente.
- Prueba de variación de PWM (ST_ISO_APP_PwmVariationTest): Esta función está diseñada para probar la variación de las señales PWM (Modulación por Ancho de Pulso) en diferentes canales de salida según la configuración de la placa. Inicializa las señales PWM, tanto para la configuración predeterminada como para la alternativa, estableciendo su frecuencia en 100 Hz y el ciclo de trabajo inicial en 0 %. A continuación, la función varía el ciclo de trabajo del 0 % al 100 % en incrementos del 5 %, y viceversa, en decrementos del 100 %, con un retardo de 0 segundos entre cada paso. Esta variación controlada permite observar y evaluar el comportamiento de la señal PWM en los canales QA_5 y QA_2 para la placa predeterminada, y QA_0_ALT y QA_1_ALT para la alternativa.
Siguiendo estas configuraciones y utilizando las funciones de aplicación proporcionadas, puede configurar y utilizar de manera efectiva la placa X-NUCLEO-ISO1A1 para diversos casos de uso de demostración.
Guía de configuración del sistema
Descripción del hardware
Plataforma STM32 Nucleo
Las placas de desarrollo STM32 Nucleo proporcionan una forma asequible y flexible para que los usuarios prueben soluciones y construyan prototipos con cualquier línea de microcontroladores STM32.
El soporte de conectividad Arduino® y los conectores ST morpho facilitan la expansión de la funcionalidad de la plataforma de desarrollo abierta STM32 Nucleo con una amplia gama de placas de expansión especializadas para elegir.
La placa STM32 Nucleo no requiere sondas separadas ya que integra el depurador/programador ST-LINK/V2-1.
La placa STM32 Nucleo viene con la completa biblioteca HAL del software STM32 junto con varios paquetes de software exampLes.

La información sobre la placa STM32 Nucleo está disponible en www.st.com/stm32nucleo
Placa de expansión X-NUCLEO-ISO1A1
La X-NUCLEO-ISO1A1 es una placa de evaluación con entrada/salida industrial aislada, diseñada para ampliar la placa STM32 Nucleo y proporcionar funcionalidad de microPLC. Dos de las placas X-NUCLEO-ISO1A1 se pueden apilar sobre una placa STM32 Nucleo con la selección adecuada de puentes en la placa de expansión para evitar conflictos en las interfaces GPIO. Los aisladores digitales STISO1577 y STISO620, con certificación UL621, proporcionan aislamiento entre los componentes lógicos y de proceso. Dos entradas de lado alto con limitación de corriente desde el lado de proceso se implementan a través de CLT03-2Q3. El CLT03-2Q3 proporciona protección, aislamiento e indicación de estado sin energía para entornos industriales, y está diseñado para cumplir con las normas IEC61000-4-2, IEC61000-4-4 e IEC61000-4-5. Cada interruptor de lado alto IPS1025H-32/HQ-32 proporciona una salida protegida de hasta 5.6 A con funciones de diagnóstico y control inteligente. Estos pueden controlar cargas capacitivas, resistivas o inductivas. El X-NUCLEO-ISO1A1 permite la evaluación rápida de los circuitos integrados mediante el paquete de software X-CUBE-ISO1.

Configuración de hardware
Se necesitan los siguientes componentes de hardware:
- Una plataforma de desarrollo STM32 Nucleo (código de pedido sugerido: NUCLEO-GO71RB)
- Una placa de expansión de salida digital industrial (código de pedido: X-NUCLEO-ISO1A1)
- Un cable USB tipo A a Micro USB para conectar el STM32 Nucleo al PC
- Una fuente de alimentación externa (24 V) y los cables asociados para alimentar la placa de expansión X-NUCLEO-ISO1A1.
Configuración del software
Los siguientes componentes de software son necesarios para configurar un entorno de desarrollo adecuado para la creación de aplicaciones para el STM32 Nucleo equipado con la placa de expansión X-NUCLEO-ISO1A1:
- X-CUBE-ISO1: una expansión para STM32Cube dedicada al desarrollo de aplicaciones que requiere el uso de la placa X-NUCLEO-ISO1A1. El firmware de X-CUBE-ISO1 y la documentación relacionada están disponibles en www.st.com
- Cadena de herramientas de desarrollo y compilador: el software de expansión STM32Cube admite los tres entornos siguientes:
- Cadena de herramientas IAR Embedded Workbench para ARM® (IAR-EWARM)
- RealView Cadena de herramientas del kit de desarrollo de microcontroladores (MDK-ARM-STM32)
- STM32CubeIDE.
Configuración de la placa
La placa debe configurarse con los puentes adecuados, según se especifica en el manual de usuario del hardware (UM3483). Es fundamental seguir estas instrucciones cuidadosamente para garantizar un funcionamiento correcto y evitar posibles problemas.
Guía de configuración del sistema
Esta sección describe cómo configurar diferentes partes de hardware antes de desarrollar y ejecutar una aplicación en la placa STM32 Nucleo, NUCLEO-G071RB con la placa de expansión X-NUCLEO-ISO1A1.


Configuración del paquete de expansión X-CUBE-ISO1
El X-NUCLEO-ISO1A1 debe configurarse con las posiciones de puente específicas según la configuración de la placa. Puede consultar los detalles en el manual del hardware.
- Paso 1. Conecte la placa de expansión X-NUCLEO-ISO1A1 en la parte superior del STM32 Nucleo a través de los morfoconectores.
Si está utilizando dos tablas una encima de otra, apílelas como en la Figura 11. - Paso 2. Conecte la placa STM32 Nucleo a una PC con el cable USB a través del conector USB CN1 para alimentar la placa.
- Paso 3. Encienda la(s) placa(s) de expansión X-NUCLEO-ISO1A1 conectando J1 a la fuente de alimentación de 24 V CC. Si utiliza placas apiladas, asegúrese de que ambas placas reciban alimentación.
- Paso 4. Abra su cadena de herramientas preferida (MDK-ARM de Keil, EWARM de IAR o STM32CubeIDE).
- Paso 5. Abra el proyecto de software y realice los cambios necesarios en board_config.h file según la configuración de la(s) placa(s) que se utilicen.
- Paso 6. Establezca la macro de caso de uso adecuada en st_iso_app.c file o llame al caso de uso requerido usando la función ST_ISO_APP_SelectUseCase en main.c file junto con cualquier otra función deseada.
- Paso 7. Construya el proyecto para compilarlo todo files y cargue el código compilado en la memoria de la placa STM32 Nucleo.
- Paso 8. Ejecute el código en la placa STM32 Nucleo y verifique el comportamiento esperado.
Historial de revisiones
Tabla 4. Historial de revisión del documento
| Fecha | Revisión | Cambios |
| 14 de mayo de 2025 | 1 | Lanzamiento inicial. |
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.
© 2025 STMicroelectronics – Todos los derechos reservados
Documentos / Recursos
![]() |
Expansión de software STMicroelectronics UM3469 X-CUBE-ISO1 [pdf] Manual del usuario Expansión de software X-NUCLEO-ISO1A1, NUCLEO-G071RB, UM3469, Expansión de software X-CUBE-ISO1, Expansión de software X-CUBE-ISO3469 |

