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

Introdución
O paquete de software de expansión X-CUBE-ISO1 para STM32Cube execútase no STM32 e inclúe firmware para o X-NUCLEO-ISO1A1. O software proporciona unha solución doada de usar para o desenvolvemento dun dispositivo PLC básico proporcionado polo X-NUCLEO. A expansión está baseada na tecnoloxía de software STM32Cube para facilitar a portabilidade entre diferentes microcontroladores STM32.
O software inclúe unha implementación que se executa na placa de expansión X-NUCLEO-ISO1A1 conectada a unha placa de desenvolvemento NUCLEO-G071RB (ou ben a unha NUCLEO-G0B1RE ou ben a unha NUCLEO-G070RB). De agora en diante, no documento só se mencionará a NUCLEO-G071RB para simplificar.
A placa X-NUCLEO-ISO1A1 está deseñada para soportar o apilamento de dúas placas con configuracións de jumpers axeitadas para ampliar as capacidades de entrada e saída.
Siglas e abreviaturas
Táboa 1. Lista de siglas
| Acrónimo | Descrición |
| PLC | Controlador lóxico programable |
| API | Interface de programación de aplicacións |
| PWM | Modulación de ancho de pulso |
| GPIO | Entrada/saída de propósito xeral. |
| HAL | Capa de abstracción de hardware |
| PC | Ordenador persoal |
| FW | Firmware |
Que é STM32Cube?
STM32Cube™ representa a iniciativa de STMicroelectronics para facilitar a vida dos desenvolvedores ao reducir o esforzo, o tempo e o custo de desenvolvemento. STM32Cube abrangue a carteira de produtos STM32.
A versión 32.x de STM1Cube inclúe:
- STM32CubeMX, unha ferramenta de configuración de software gráfica que permite a xeración de código de inicialización C mediante asistentes gráficos.
- Unha plataforma de software integrada completa específica para cada serie (como o STM32CubeG0 para a serie STM32G0), que inclúe:
- o software de capa de abstracción integrado STM32Cube HAL, que garante a máxima portabilidade en toda a carteira de produtos STM32
- un conxunto consistente de compoñentes middleware como RTOS, USB, TCP/IP e gráficos
- todas as utilidades de software integradas cun conxunto completo de examples.
Arquitectura STM32Cube
A solución de firmware STM32Cube está construída arredor de tres niveis independentes que poden interactuar facilmente entre si, como se describe no diagrama seguinte.

Expansión de software X-CUBE-ISO1 para STM32Cube
Acabadoview
O firmware para a placa de expansión de entrada/saída illada industrial X-NUCLEO-ISO1A1, desenvolvida en torno a entornos e bibliotecas STM32, aproveita o MCU de alto rendemento das placas STM32 Nucleo para xestionar entradas e saídas dixitais con diagnósticos integrados xunto co límite de corrente dinámico e a xeración de sinais PWM. Presenta unha configuración e un control completos da placa, incluíndo marcos para condicións predeterminadas e alternativas, macros para configurar valores de preescalador e definicións para portos e pines GPIO.
Admite varios sampCasos de uso de aplicacións como a creación de espellos de entradas dixitais a saídas, a comunicación UART a través da placa Nucleo, a detección de fallos, os casos de proba e a xeración de PWM, que se poden usar directamente e se poden personalizar e ampliar facilmente.
A API proporciona un conxunto robusto de funcións para o control de entradas/saídas dixitais, a detección de fallos e as actualizacións do estado da placa, con axustes de configuración para executar dúas placas simultaneamente en diferentes modos. Hai funcións específicas da API dispoñibles para inicializar, iniciar, deter e configurar sinais PWM para canles de saída dixitais.
O paquete de soporte da placa inclúe funcións para controlar e monitorizar os pines GPIO conectados a IPS1025H-32 e ler o estado dos pines GPIO conectados a CLT03-2Q3 a través dun illador dixital.
A configuración e a inicialización baséanse en STM32CubeMX, e o desenvolvemento e a depuración son compatibles con STM32CubeIDE, IAR Systems e as ferramentas de Keil®.
Arquitectura
O firmware para o X-NUCLEO-ISO1A1 pódese dividir en varios bloques funcionais distintos, cada un responsable de varios aspectos das operacións do sistema:

- Configuración e control da placa:
- O ficheiro board_config.h file Contén macros para configurar a placa para que se execute en condicións predeterminadas ou alternativas, ou ambas. Tamén inclúe definicións para valores de preescalador e portos e pines GPIO.
- Este bloque garante que a placa estea configurada correctamente para as condicións de funcionamento desexadas e que todas as configuracións de hardware necesarias estean no seu lugar.
- Casos de uso da aplicación:
- Os ficheiros st_iso_app.h e st_iso_app.c fileConteñen casos de uso de aplicacións deseñados para probar varias funcionalidades da placa.
- Estes casos de uso inclúen a duplicación de entradas dixitais a saídas, probas de detección de fallos e xeración de sinais PWM.
- ExampOfrécense configuracións para executar dúas placas simultaneamente en diferentes modos, o que demostra a versatilidade e flexibilidade do firmware.
- Funcións da API:
- Os elementos iso1a1.h e iso1a1.c fileproporcionan un conxunto completo de API para soportar diversas funcionalidades.
- Estas API inclúen funcións para o control de entradas/saídas dixitais, a detección de fallos e as actualizacións do estado da placa.
- As API están deseñadas para ser sinxelas e intuitivas, facilitando aos usuarios a interacción coa placa e a realización das operacións necesarias.
- Control de sinal PWM:
- Os ficheiros pwm_api.h e pwm_api.c fileConteñen funcións API específicas relacionadas coa xeración de sinais PWM.
- Estas funcións permiten inicializar, configurar, iniciar e deter sinais PWM para canais de saída dixitais.
- A funcionalidade PWM non é a opción predeterminada. Modificouse a configuración da placa para activala. Consulte a Sección 3.5: API para obter máis detalles.
- Paquete de apoio á xunta directiva:
- O paquete de soporte da xunta inclúe files para controlar e monitorizar os pines GPIO conectados a IPS1025H-32 e ler o estado dos pines GPIO conectados a CLT03-2Q3.
- ips1025h_32.h e ips1025h_32.c fileProporcionan funcións para configurar, borrar e detectar fallos nos pines GPIO conectados a IPS1025H-32.
- Os modelos clt03_2q3.h e clt03_2q3.c fileproporcionan funcións para ler o estado dos pines GPIO conectados a CLT03-2Q3.
O firmware de demostración implementa varios casos de uso sinxelos para mostrar as capacidades do sistema. Estes casos de uso e as API de usuario execútanse de maneira coordinada para garantir un funcionamento sen problemas e resultados precisos. A arquitectura está deseñada para ser facilmente ampliable, o que permite aos usuarios engadir novas funcionalidades e casos de uso segundo sexa necesario. Ofrécese unha configuración predeterminada para executar unha placa con E/S industriais dixitais. Tamén é necesario que os jumpers estean no modo predeterminado, como se describe na Táboa 2. A duplicación de entrada dixital e saída dixital (DIDO) é o caso de uso predeterminado da aplicación de firmware.
Estrutura de cartafoles

No paquete de software inclúense os seguintes cartafoles:
- A documentación contén un HTML compilado file xerado a partir do código fonte, detallando os compoñentes do software e as API.
- Os controladores contén:
- unha carpeta HAL do STM32Cube, situada nas subcarpetas STM32G0xx_HAL_Driver. Estas fileNon se describen aquí porque non son específicos do software X-CUBE-ISO1, senón que proceden directamente da estrutura STM32Cube.
- un cartafol CMSIS que contén o estándar de interface de software do microcontrolador Cortex® files de Arm. Estes fileson capas de abstracción de hardware independentes do provedor para a serie de procesadores Cortex®-M. Esta carpeta tamén vén sen cambios da estrutura STM32Cube.
- Unha carpeta BSP que contén os códigos para os compoñentes IPS1025H-32 e CLT03-2Q3 e as API relacionadas con X-NUCLEO-ISO1A1.
- A aplicación contén o cartafol do usuario que contén o ficheiro main.c file, o caso de uso da aplicación file, st_iso_app.c e board_config.h file, proporcionado para a plataforma NUCLEO-G071RB.
Cartafol BSP
O software X-CUBE-ISO1 emprega dous compoñentes diferentes files, que están dentro de BSP/Components:
IPS1025
ips1025h_32.h e ips1025h_32.c fileproporcionan unha implementación completa de controladores para os pines GPIO conectados a IPS1025H-32, incluíndo a funcionalidade completa para controlar todos os pines e detectar fallos. Estes fileImplementa funcións para inicializar o dispositivo, configurar e borrar o estado do canal, detectar condicións de fallo e xestionar a funcionalidade PWM. O controlador admite varios dispositivos e canais, con capacidades completas tanto para canles individuais como para grupos.
CLT03
Os modelos clt03_2q3.h e clt03_2q3.c fileImplementar un controlador completo para os pines GPIO conectados a CLT03-2Q3, con capacidades completas para ler todos os estados dos pines. O controlador proporciona funcións para inicializar o dispositivo, ler o estado de cada canle e obter información de estado para todas as canles simultaneamente. Admite varias configuracións de dispositivos e mantén o estado interno para unha xestión eficaz das canles.
As API do software X-CUBE-ISO1 divídense en dúas fontes principais files, que están dentro da subcartafol ISO1A1:
ISO1A1
A ISO1A1 fileabarcan un conxunto completo de funcións da API deseñadas para a configuración da placa, a interacción dos compoñentes e a xestión de fallos. Estas funcións facilitan as operacións de lectura e escritura, a detección de fallos e as actualizacións, e inclúen varias utilidades auxiliares para dar soporte ás funcións principais da API. Ademais, o fileOfrecen funcionalidades para o control de LED, a inicialización de GPIO, a xestión de interrupcións e a comunicación UART.
API de PWM
A API de PWM ofrece funcións para inicializar, configurar, iniciar e deter sinais PWM. Permite configurar a frecuencia e o ciclo de traballo de PWM para pines de temporizador específicos, garantindo un control preciso sobre as operacións PWM.
Cartafol da aplicación
O cartafol da aplicación contén o contido principal files necesarios para o firmware, incluíndo cabeceiras e código fonte files. A continuación móstrase unha descrición detallada do files neste cartafol:
- board_config.h: Macros de configuración para a placa.
- main.c: Programa principal (código do example que está baseado na biblioteca para ISO1A1).
- st_iso_app.c: Funcións da aplicación para probas e configuración de placas.
- stm32g0xx_hal_msp.c: Rutinas de inicialización de HAL.
- stm32g0xx_it.c: Xestor de interrupcións.
- syscalls.c: Implementacións de chamadas ao sistema.
- sysmem.c: Xestión da memoria do sistema.
- system_stm32g0xx.c: Inicialización do sistema.
Recursos necesarios para o software
O dispositivo Nucleo controla e comunícase coa placa X-NUCLEO-ISO1A1 a través de GPIO. Isto require o uso de varios GPIO para a entrada, saída e detección de fallos dos dispositivos de E/S industriais contidos na placa X-NUCLEO-ISO1A1. Consulte o manual do usuario do hardware UM3483 para obter máis detalles e as configuracións dos jumpers.
Configuración da placa (board_config.h)
O ficheiro board_config.h file define os recursos empregados e as macros de configuración para configurar o software segundo a configuración da placa. Xestiona ata dúas placas (como o apilamento de dúas placas).
A configuración predeterminada do software está aliñada coa placa de expansión X-NUCLEO-ISO1A1 cos seus jumpers nas posicións predeterminadas. Para configurar o software para X-NUCLEO-ISO1A1 na súa configuración predeterminada, descomente a macro BOARD_ID_DEFAULT no ficheiro board_config.h. file.
A configuración ALTERNATE do software establécese descomentando a macro BOARD_ID_ALTERNATE no ficheiro board_config.h. file e cambiando as posicións dos jumpers no taboleiro.
Para usar dúas placas simultaneamente nunha configuración de apilamento, descomente as macros BOARD_ID_DEFAULT e BOARD_ID_ALTERNATE e asegúrese de que os jumpers dunha placa estean na posición predeterminada e a outra na posición alternativa. Teña en conta que non se recomenda ter ambas as placas na mesma configuración (ambas as dúas na posición predeterminada ou ambas na posición alternativa) e pode provocar un comportamento non desexado.
Ao executar só unha placa, asegúrese de que o software estea configurado só para unha configuración e que a macro correspondente á outra configuración estea comentada.

Preescaladores
Podemos configurar os valores do preescalador en board_config.h para conseguir diferentes rangos de frecuencia para a saída PWM definindo as macros axeitadas. Para usar un valor preescalar, descomente a macro correspondente e comente as outras. Por defecto, úsase DEFAULT_PRESCALAR.
- PREESCALADOR_1
- PREESCALADOR_2
- PREESCALADOR_PREDEFINIDO
Os valores do preescalador úsanse só cando se empregan temporizadores e non son necesarios para ningunha operación básica de E/S. Os valores das macros preescalares e os seus rangos de frecuencia correspondentes pódense consultar na documentación do código ou no propio código.
LED de latido do corazón
Podemos configurar o LED verde do usuario, D7, para que parpadee nun latexo como proba de conexión correcta á placa NUCLEO-G071RB. A macro HEARTBEAT_LED, cando non está comentada, fai parpadear o LED verde de X-NUCLEO-ISO1A1 cando está conectada a NUCLEO. Permanece acesa durante 1 segundo e apagada durante 2 segundos, e os temporizadores encárganse do tempo. Cando non se usa ou non se chama ningunha función que implique LEDs, a macro debe estar descomentada.
Configuración de entrada e saída GPIO
Cada placa X-NUCLEO-ISO1A1 está equipada con dous portos de entrada e dous portos de saída. As capacidades da placa pódense ampliar apilando dúas placas X-NUCLEO-ISO1A1 unha enriba da outra, o que permite o uso de catro portos de entrada dixitais e catro portos de saída dixitais. O software fornecido inclúe API completas que facilitan a lectura, configuración e borrado dos portos. Ademais, as API permiten a configuración, lectura ou borrado simultáneos de todos os portos. Pode atopar información detallada sobre as funcións da API na documentación do código, así como na sección da API deste documento.

Aquí o prefixo DI indica o porto de entrada dixital e DO indica o porto de saída dixital. Para unha configuración alternativa, o software usa as mesmas convencións de nomenclatura co sufixo _alt asociado.
A seguinte táboa detalla as macros GPIO definidas no software correspondentes a varios portos de E/S:
Táboa 2. GPIO asignados para configuracións de software predeterminadas e alternativas
| Nome | 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 SAÍDA | Pin de saída 1 | GPIOC, QA0_CNTRL_1_PIN | GPIOD, QA0_CNTRL_1_PIN |
| Pin de saída 2 | GPIOC, QA1_CNTRL_2_PIN | GPIOC, QA1_CNTRL_2_PIN | |
| PIN DE ERRO | Pin de fallo 1 | GPIOC, FLT1_QA0_2_OT_PIN | GPIOD, FLT1_QA0_1_OT_PIN |
| Pin de fallo 2 | GPIOC, FLT2_QA0_2_OL_PIN | GPIOD, FLT2_QA0_1_OL_PIN | |
| Pin de fallo 3 | GPIOC, FLT1_QA1_2_OT_PIN | GPIOC, FLT1_QA1_1_OT_PIN | |
| Pin de fallo 4 | GPIOC, FLT2_QA1_1_OL_PIN | GPIOD, FLT2_QA1_2_OL_PIN | |
| MACRO DE CONFIGURACIÓN | ID_TABOLEIRA_PREDEFINIDO | ID_TABOLEIRA_ALTERNATIVO |
Temporizadores e PWM
Os temporizadores pódense usar no firmware X-CUBE-ISO1 para xerar sinais PWM para pines específicos. Por defecto, os temporizadores non se inicializan agás TIM3. Os temporizadores respectivos deben inicializarse antes de xerar os sinais PWM e os portos de saída respectivos deben inicializarse no modo PWM.
Para as operacións normais de entrada/saída de GPIO, non é necesario configurar ningún temporizador nin porto de saída, xa que isto se xestiona por defecto. Non obstante, unha vez que os pines de saída estean configurados no modo PWM, debemos reconfiguralos no modo GPIO para que se usen como pines GPIO.
Nota: Cando os pines de saída se usan para a xeración de PWM, a saída GPIO está desactivada e non se poden implementar ambas funcionalidades simultaneamente. Para volver activar GPIO despois do uso de PWM, pódese chamar á función da API ST_ISO_BoardConfigureDefault() ou ST_ISO_InitGPIO() para configurar todos os portos como GPIO á vez ou ST_ISO_Init_GPIO() cun porto e pin GPIO específicos.
Como se mencionou anteriormente, o software tamén usa un temporizador por defecto, TIM3, que se usa para a temporización do LED do usuario, o reloxo e a implementación da temporización UART. Está configurado para un período de 1 segundo por defecto.
A seguinte táboa detalla os temporizadores dispoñibles para cada pin no noso código:
Táboa 3. Temporizadores dispoñibles para cada pin
| Nome do pin | Representación de software | Temporizador | Canle do temporizador | Función alternativa |
| QA0_CNTRL_1_PIN | QA_0 | TIM2 | TIM_CHANNEL_4 | GPIO_AF2_TIM2 |
| QA1_CNTRL_2_PIN | QA_1 | TIM1 | TIM_CHANNEL_3 | GPIO_AF2_TIM1 |
| QA0_CNTRL_2_PIN | QA_0_ALT | TIM1 | TIM_CHANNEL_4 | GPIO_AF2_TIM1 |
| QA1_CNTRL_1_PIN | QA_1_ALT | TIM17 | TIM_CHANNEL_1 | GPIO_AF2_TIM17 |
Utilidades adicionais do firmware
O firmware inclúe utilidades adicionais para mellorar a funcionalidade da placa de avaliación X-NUCLEO-ISO1A1. Algunhas das cales descríbense a continuación.
UART
A función de comunicación UART permite a monitorización e depuración en tempo real do estado da placa a través de utilidades para PC como TeraTerm, PuTTY e outras aplicacións similares. O software permite a transmisión de datos UART a través do UART presente na placa NUCLEO-G071RB. A función `ST_ISO_UART` envía información detallada sobre o estado da placa a través do UART, incluíndo o tempo de actividade do sistema, a configuración do firmware e o estado de fallos. Estes datos pódense... viewusando calquera aplicación de porto serie, como TeraTerm. A función `ST_ISO_APP_DIDOandUART` combina operacións de entrada/saída dixitais con comunicación UART, transmitindo o estado de todos os canais de entrada e saída a intervalos especificados. A continuación móstranse os axustes de configuración e comoampde como aparecen os datos en TeraTerm. O nome do porto pode variar segundo o sistema e o porto serie que se estea a usar.


Configuración do modo de pines de E/S
A utilidade de configuración do modo de pines de E/S permite aos usuarios configurar os portos de entrada e saída da placa mediante a función ST_ISO_BoardConfigure(). Esta función admite a configuración de dous portos de saída (QA0, QA1) e dous portos de entrada (IA0, IA1) para o modo de entrada/saída, o modo de saída PWM ou o modo de entrada de interrupción. Axustando os parámetros e chamando esta función, os usuarios poden personalizar facilmente a configuración de E/S da placa para satisfacer necesidades específicas.
No modo de entrada/saída, a utilidade inicializa os pines GPIO para operacións dixitais de propósito xeral. No modo de saída PWM, configura os temporizadores para un control preciso do sinal PWM. Cando se está no modo de entrada de interrupción, a utilidade configura os pines para xestionar interrupcións, o que permite unha programación con capacidade de resposta baseada en eventos.
Xestión de interrupcións
Para xestionar os sinais de FALLO, o software activa as liñas de interrupción asociadas, o que permite unha programación con eventos sensible. Pódese asociar un xestor personalizado a estas interrupcións a través de
Función HAL_GPIO_EXTI_Rising_Callback definida na API. O software inclúe funcionalidades para inicializar os pines GPIO en modo de interrupción mediante a función ST_ISO_BoardConfigure e configurar accións específicas nos xestores de IRQ EXTI. Isto permite aos usuarios personalizar a forma en que a placa responde a eventos externos, garantindo que poida xestionar eficazmente diversas condicións de fallo e desencadeantes.
APIs
A API do software X-CUBE-ISO1 proporciona un conxunto completo de funcións para controlar e monitorizar a placa X-NUCLEO-ISO1A1, incluíndo a xeración de sinais PWM e as operacións GPIO. A API está deseñada para ser doada de usar e integrar en diversas aplicacións, o que proporciona flexibilidade e control sobre a funcionalidade da placa.
A API do software X-CUBE-ISO1 está definida no cartafol BSP/ISO1A1. As súas funcións teñen o prefixo ST_ISO. A API é visible para as aplicacións a través de iso1a1.c e pwm_api.c. files é unha combinación de constantes, estruturas de datos e funcións.
SampAs aplicacións de firmware utilizan estas API para mostrar algúns dos posibles usos destas funcións.
O paquete de software X-CUBE-ISO1 proporciona dous conxuntos de API:
- API ISO1A1
- API de PWM
API ISO1A1
A API ISO1A1 está definida en iso1a1.h e iso1a1.c files. Ofrece funcións para configurar e controlar a placa ISO1A1, incluíndo operacións de entrada/saída GPIO e detección de fallos.
Funcións clave
- ST_ISO_BoardConfigureDefault: Configura os portos de E/S da placa coa configuración GPIO predeterminada.
- ST_ISO_BoardConfigure: Configura o modo dos portos de entrada e saída da placa.
- ST_ISO_BoardInit: Inicializa o hardware da placa.
- ST_ISO_BoardMapInit: Inicializa a funcionalidade da placa baseándose na configuración dos identificadores de canle.
- ST_ISO_GetFWVersion: Devolve a versión actual do firmware.
- ST_ISO_GetChannelHandle: Recupera o identificador da canle para un nome de canle especificado.
- ST_ISO_InitGPIO: Inicializa o pin GPIO especificado co ID de módulo dado.
- ST_ISO_InitInterrupt: Inicializa o pin GPIO especificado como unha interrupción co ID de módulo dado.
- ST_ISO_EnableFaultInterrupt: Inicializa os pines GPIO de fallo no modo de interrupción.
- ST_ISO_SetChannelStatus: Define o estado dun canal especificado.
- ST_ISO_SetOne_DO: Define un único canal de saída dixital.
- ST_ISO_ClearOne_DO: Limpa un único canal de saída dixital.
- ST_ISO_WriteAllChannels: Escribe datos en todos os canais de saída dixitais.
- ST_ISO_GetOne_DI: Obtén o estado dun único canal de entrada dixital.
- ST_ISO_ReadAllChannel: Le o estado de todos os canais de entrada.
- ST_ISO_ReadAllOutputChannel: Le o estado de todos os canais de saída.
- ST_ISO_ReadFaultStatus: Le o estado do fallo de todos os portos de detección de fallos.
- ST_ISO_ReadFaultStatusPolling: Comproba a detección de fallos das placas en modo de sondeo.
- ST_ISO_DisableOutputChannel: Desactiva a saída para ese canal.
- ST_ISO_UpdateBoardStatusInfo: Actualiza a información do estado da placa.
- ST_ISO_UpdateFaultStatus: Actualiza o estado do fallo para un canal específico.
- ST_ISO_BlinkLed: Fai que o LED especificado parpadee cun atraso e un número de repeticións determinados.
- ST_ISO_UART: Envía a información do estado da placa a través do UART.
- ST_ISO_SwitchInit: Inicializa os compoñentes do conmutador.
- ST_ISO_SwitchDeInit: Desinicializa a instancia do conmutador.
- ST_ISO_DigitalInputInit: Inicializa os compoñentes de entrada dixital.
- ST_ISO_DigitalInputDeInit: Desinicializa a instancia de entrada dixital.
API de PWM
A API de PWM está definida en pwm_api.h e pwm_api.c files. Ofrece as seguintes funcións para inicializar e controlar os sinais PWM para pines específicos.
- ST_ISO_Init_PWM_Signal: Inicializa os temporizadores e o pin específico para o sinal PWM.
- ST_ISO_Set_PWM_Frequency: Define a frecuencia PWM para o pin específico.
- ST_ISO_Set_PWM_Duty_Cycle: Define o ciclo de traballo PWM para o pin específico.
- ST_ISO_Start_PWM_Signal: Inicia o sinal PWM no pin específico.
- ST_ISO_Stop_PWM_Signal: Detén o sinal PWM no pin específico.
Para iniciar un sinal PWM nun canal respectivo, primeiro chame a función ST_ISO_Init_PWM_Signal e, a seguir, configure a frecuencia e o ciclo de traballo desexados chamando a ST_ISO_Set_PWM_Frequency e
ST_ISO_Set_PWM_Duty_Cycle respectivamente e, a seguir, podes iniciar o sinal PWM chamando á función ST_ISO_Start_PWM_Signal e detelo chamando a ST_ISO_Stop_PWM_Signal.
A función debe chamarse co nome do pin correspondente e os temporizadores dispoñibles, cuxos detalles se proporcionan na táboa 3. Pódense configurar diferentes canles de saída con diferentes frecuencias e ciclos de traballo; cambiar a frecuencia ou o ciclo de traballo non afecta ao outro, permanece igual.
Pódese atopar información técnica detallada sobre as API dispoñibles para o usuario nun HTML compilado file situado dentro do cartafol "Documentación" do paquete de software onde se describen completamente todas as funcións e parámetros.
Descrición da aplicación
A aplicación de demostración implementa varios casos de uso sinxelos. Os ficheiros st_iso_app e board_config filexogan un papel crucial na configuración e uso da placa e as súas funcións de aplicación. Antes de usar estas funcións, asegúrate de que a configuración da placa e do software estean sincronizadas entre si.
Funcións de aplicación (st_iso_app.h e st_iso_app.c)
As funcións da aplicación levan o prefixo ST_ISO_APP; son as funcións de nivel superior visibles para o usuario que chama as funcións da API para a súa implementación. As funcións da aplicación pódense chamar no ficheiro main.c. file para o seu funcionamento.
- Selección de casos de uso: o usuario pode eliminar o comentario da macro de casos de uso desexada en st_iso_app.c fileA función ST_ISO_APP_SelectUseCaseMacro(), chamada en main.c, inicializa ese caso de uso e a función ST_ISO_APP_SelectedFunction() impleméntao en main.c. Esta estratexia permite unha configuración sinxela do modo operativo simplemente modificando as definicións da macro, garantindo que se execute a funcionalidade axeitada en función do caso de uso seleccionado. Por defecto, selecciónase o caso de uso DIDO e o usuario non ten que facer ningún cambio no código para implementalo.
- Duplicación de entradas dixitais a saídas dixitais (ST_ISO_APP_UsecaseDIDO): esta función le o estado de todos os canais de entrada e escribe o mesmo estado en todos os canais de saída. É útil para duplicar entradas dixitais a saídas dixitais.
- Duplicación de entradas dixitais a saídas dixitais con UART (ST_ISO_APP_DIDOandUART): esta función duplica as entradas dixitais a saídas dixitais, de xeito similar á función ST_ISO_APP_UsecaseDIDO. Ademais, transmite o estado da placa a través da interface UART no dispositivo Nucleo, o que permite que o estado sexa viewconectado a un porto serie usando aplicacións como Tera Term.
- Función de caso de proba (ST_ISO_APP_TestCase): esta función realiza unha serie de probas e accións baseadas na configuración da placa. Comproba o estado do fallo, le o estado de dous canais de entrada dixitais e realiza accións baseadas nos seus valores. Esta función axuda a avaliar o rendemento e a funcionalidade da placa rapidamente e a obter retroalimentación visual a través de diferentes patróns de LED. Asegúrate de ter a macro HEARTBEAT_LED no ficheiro board_config.h. file coméntase para observar os patróns de LED axeitados.
- Xeración de PWM (ST_ISO_APP_PWM _OFFSET): Esta función inicia o sinal PWM en ambos os canais de saída cunha frecuencia de 1 Hz e un ciclo de traballo do 50 %. Inicializa o sinal PWM, define a frecuencia e o ciclo de traballo e inicia o sinal PWM para o ID da placa especificado. O sinal PWM xérase cun desprazamento entre ambos os canais e, polo tanto, non están en fase.
- Proba de detección de fallos (ST_ISO_APP_FaultTest): Esta función avalía a detección de fallos mediante o motor dos pines de diagnóstico integrados do módulo de saída intelixente IPS1025, xa sexa en modo de sondeo ou de interrupción. Configura o modo de detección de fallos, inicializa a detección de fallos e actualiza a estrutura do estado do fallo segundo o modo seleccionado. Esta función é crucial para garantir a fiabilidade e a seguridade da placa mediante a detección e xestión de fallos de forma eficaz. Cando está en modo de sondeo, o estado do fallo actualízase cada segundo coa axuda dun temporizador e reflíctese na estrutura defaultBoardFaultStatus ou alternateBoardFaultStatus. Cando está no modo de interrupción, o estado do fallo actualízase só cando se produce o fallo e activa o software para limpar o porto de saída correspondente.
- Proba de variación de PWM (ST_ISO_APP_PwmVariationTest): esta función está deseñada para probar a variación dos sinais PWM (modulación por ancho de pulso) en diferentes canles de saída segundo a configuración da placa. Inicializa os sinais PWM tanto para as configuracións predeterminadas como alternativas da placa, axustando a súa frecuencia a 100 Hz e o ciclo de traballo inicial ao 0 %. A función varía entón o ciclo de traballo do 0 % ao 100 % en incrementos do 5 % e de volta do 100 % ao 0 % en decrementos do 5 %, cun atraso de 2 segundos entre cada paso. Esta variación controlada permite a observación e avaliación do comportamento do sinal PWM nos canais QA_0 e QA_1 para a placa predeterminada e QA_0_ALT e QA_1_ALT para a placa alternativa.
Seguindo estas configuracións e utilizando as funcións da aplicación proporcionadas, pode configurar e usar a placa X-NUCLEO-ISO1A1 de forma eficaz para varios casos de uso de demostración.
Guía de configuración do sistema
Descrición do hardware
Plataforma nuclear STM32
As placas de desenvolvemento STM32 Nucleo ofrecen unha forma accesible e flexible para que os usuarios poidan probar solucións e construír prototipos con calquera liña de microcontroladores STM32.
A compatibilidade coa conectividade Arduino® e os conectores ST morpho facilitan a ampliación da funcionalidade da plataforma de desenvolvemento aberta STM32 Nucleo cunha ampla gama de placas de expansión especializadas para elixir.
A placa STM32 Nucleo non require sondas separadas xa que integra o depurador/programador ST-LINK/V2-1.
A placa STM32 Nucleo inclúe a biblioteca completa de software STM32 HAL xunto con varios paquetes de software examples.

A información relativa á placa STM32 Nucleo está dispoñible en www.st.com/stm32nucleo
Placa de expansión X-NUCLEO-ISO1A1
A X-NUCLEO-ISO1A1 é unha placa de avaliación con entrada/saída industrial illada deseñada para ampliar a placa STM32 Nucleo e proporcionar funcionalidade de microPLC. Dúas das placas X-NUCLEO-ISO1A1 pódense apilar xuntas sobre unha placa STM32 Nucleo coa selección axeitada de jumpers na placa de expansión para evitar conflitos nas interfaces GPIO. Os illantes dixitais STISO1577 e STISO620 con certificación UL621 proporcionan illamento entre os compoñentes lóxicos e os do lado do proceso. Dúas entradas do lado alto con limitación de corrente desde o lado do proceso realízanse a través de CLT03-2Q3. A CLT03-2Q3 proporciona protección, illamento e indicación de estado sen enerxía para condicións industriais, deseñada para cumprir estándares como IEC61000-4-2, IEC61000-4-4 e IEC61000-4-5. Un de cada un dos interruptores de lado alto IPS1025H-32/HQ-32 proporciona unha saída protexida de ata 5.6 A con funcións de diagnóstico e control intelixente. Estes poden controlar cargas capacitivas, resistivas ou indutivas. O X-NUCLEO-ISO1A1 permite unha avaliación rápida dos circuítos integrados mediante o paquete de software X-CUBE-ISO1.

Configuración de hardware
Precísanse os seguintes compoñentes de hardware:
- Unha plataforma de desenvolvemento STM32 Nucleo (código de pedido suxerido: NUCLEO-GO71RB)
- Unha placa de expansión de saída dixital industrial (código de pedido: X-NUCLEO-ISO1A1)
- Un cable USB tipo A a Micro USB para conectar o STM32 Nucleo ao PC
- Unha fonte de alimentación externa (24 V) e os cables asociados para alimentar a placa de expansión X-NUCLEO-ISO1A1.
Configuración de software
Os seguintes compoñentes de software son necesarios para configurar un ambiente de desenvolvemento axeitado para crear aplicacións para o STM32 Nucleo equipado coa placa de expansión X-NUCLEO-ISO1A1:
- X-CUBE-ISO1: unha expansión para STM32Cube dedicada ao desenvolvemento de aplicacións que require o uso da placa X-NUCLEO-ISO1A1. O firmware X-CUBE-ISO1 e a documentación relacionada están dispoñibles en www.st.com
- Cadea de ferramentas de desenvolvemento e compilador: o software de expansión STM32Cube admite os tres seguintes entornos:
- Cadea de ferramentas IAR Embedded Workbench para ARM® (IAR-EWARM)
- RealView Cadea de ferramentas do kit de desenvolvemento de microcontroladores (MDK-ARM-STM32)
- STM32CubeIDE.
Configuración da placa
A placa debe configurarse cos axustes de jumper axeitados, tal e como se especifica no manual do usuario do hardware (UM3483). Seguir estas pautas atentamente é esencial para garantir un funcionamento axeitado e evitar posibles problemas.
Guía de configuración do sistema
Esta sección describe como configurar diferentes compoñentes de hardware antes de desenvolver e executar unha aplicación na placa STM32 Nucleo, NUCLEO-G071RB coa placa de expansión X-NUCLEO-ISO1A1.


Configuración para o paquete de expansión X-CUBE-ISO1
O X-NUCLEO-ISO1A1 debe configurarse coas posicións de jumper específicas segundo a configuración que se estea a executar coa placa. Os detalles diso pódense consultar no manual do hardware.
- Paso 1. Conecte a placa de expansión X-NUCLEO-ISO1A1 na parte superior do Nucleo STM32 a través dos morfoconectores.
Se usas dúas táboas unha enriba da outra, apílaas como na Figura 11. - Paso 2. Conecte a placa STM32 Nucleo a un PC co cable USB a través do conector USB CN1 para alimentar a placa.
- Paso 3. Acenda a(s) placa(s) de expansión X-NUCLEO-ISO1A1 conectando J1 á fonte de alimentación de 24 V CC. Se usa placas apiladas, asegúrese de que ambas placas estean alimentadas.
- Paso 4. Abre a túa cadea de ferramentas preferida (MDK-ARM de Keil, EWARM de IAR ou STM32CubeIDE).
- Paso 5. Abre o proxecto de software e fai os cambios necesarios no ficheiro board_config.h file segundo a configuración da(s) placa(s) que se estean a usar.
- Paso 6. Definir a macro de caso de uso axeitada en st_iso_app.c file ou chamar o caso de uso requirido usando a función ST_ISO_APP_SelectUseCase en main.c file xunto con calquera outra función desexada.
- Paso 7. Crea o proxecto para compilar todo files e carga o código compilado na memoria da placa STM32 Nucleo.
- Paso 8. Executa o código na placa STM32 Nucleo e verifica o comportamento esperado.
Historial de revisións
Táboa 4. Historial de revisións de documentos
| Data | Revisión | Cambios |
| 14-maio-2025 | 1 | Lanzamento inicial. |
AVISO IMPORTANTE - LEA ATENTAMENTE
STMicroelectronics NV e as súas subsidiarias (“ST”) resérvanse o dereito de realizar cambios, correccións, melloras, modificacións e melloras nos produtos ST e/ou neste documento en calquera momento sen previo aviso. Os compradores deben obter a información relevante máis recente sobre produtos ST antes de facer pedidos. Os produtos ST véndense de acordo cos termos e condicións de venda de ST existentes no momento do recoñecemento da orde.
Os compradores son os únicos responsables da elección, selección e uso dos produtos ST e ST non asume ningunha responsabilidade pola asistencia á aplicación ou o deseño dos produtos dos compradores.
ST non concede ningunha licenza, expresa ou implícita, a ningún dereito de propiedade intelectual.
A revenda de produtos ST con disposicións diferentes da información aquí establecida anulará calquera garantía concedida por ST para tal produto.
ST e o logotipo de ST son marcas comerciais de ST. Para obter información adicional sobre as marcas comerciais ST, consulte www.st.com/trademarks. Todos os outros nomes de produtos ou servizos son propiedade dos seus respectivos propietarios.
A información deste documento substitúe e substitúe a información proporcionada anteriormente en calquera versión anterior deste documento.
© 2025 STMicroelectronics – Todos os dereitos reservados
Documentos/Recursos
![]() |
Expansión de software STMicroelectronics UM3469 X-CUBE-ISO1 [pdfManual do usuario X-NUCLEO-ISO1A1, NUCLEO-G071RB, UM3469 Expansión de software X-CUBE-ISO1, UM3469, Expansión de software X-CUBE-ISO1, Expansión de software |

