NUCLEO-WBA55CG是一款无线超低功耗板,嵌入了功能强大的超低功耗无线电,符合蓝牙®低功耗SIG规范v5.4、IEEE 802.15.4-2015 PHY和MAC,支持Thread®、Matter和Zigbee®。ARDUINO®Uno V3连接支持和ST-morpho接头允许轻松扩展。STM32 Nucleo开放式开发平台,提供多种专用屏蔽。基于Arm®Cortex®‑M33内核的超低功耗无线STM32WBA55CG微控制器,采用UFQFPN48封装,配备1 MB闪存和128 KB SRAM
开发板架构:
•上面为MCU射频板(MB1803):
–支持Bluetooth®规范v5.4的2.4 GHz射频收发器
–IEEE 802.15.4-2015 PHY和MAC,支持Thread®、Matter和Zigbee®
–配备Arm®TrustZone®、MPU、DSP和FPU的Arm®Cortex®‑M33 CPU
–集成PCB天线
•下面为夹层板(MB1801):
–三个用户LED
–三个用户按钮和一个重置按钮
–板连接器:
◦USB Type-C®
◦ARDUINO®Uno V3扩展连接器
◦ST morpho接头,可完全访问所有STM32 I/O
•灵活的电源选项:ST-LINK USB V BUS或外部电源
•带USB重新枚举功能的板载STLINK-V3EC调试器/编程器:大容量存储、虚拟
COM端口和调试端口
•STM32CubeWBA MCU包提供全面的免费软件库和示例
•支持多种集成开发环境(IDE),包括IAR嵌入式Workbench®、MDK-ARM和STM32CubeIDE
关于核心蓝牙芯片STM32WBA5xxx:
STM32WBA5xxx多协议无线和超低功耗设备集成了符合蓝牙SIG低功耗规范5.4的强大的超低功耗无线电。它们以高达100 MHz的频率运行。这些设备集成了支持蓝牙低功耗的2.4GHz无线电收发器,并使使用专有协议成为可能。STM32WBA5xxx基于高性能的Arm Cortex-M33 32位RISC内核,具有单精度浮点单元(FPU),支持所有Arm单精度数据处理指令和所有数据类型。该内核还实现了一整套DSP(数字信号处理)指令和增强应用程序安全性的内存保护单元(MPU)。这些器件嵌入了高速存储器(高达1MB的闪存和高达 128KB的SRAM)、广泛的增强型 I/0 以及连接到 32 位多 AHB 总线矩阵上的 AHB 和 APB 总线的外设。这些设备提供符合Arm的TBSA(基于信任的安全架构)要求的安全基础。它入了必要的安全功能,以实现安全启动、安全数据存储和安全固件更新。除了这些功能外,这些设备还包含一个安全固件安装功能,使客户能够在生产过程中确保代码的提供。一个灵活的生存周期的管理,由于多级读取保护和调试解锁密码。支持固件硬件隔离,这得益于安全的外设、存储器和I/0,以及外设和存储器的权限配置。嵌入式闪存和SRAM有几种保护机制,即读写保护、安全保护和隐藏保护区。该设备嵌入几个外设加强安全性:一个快速的AES协处理器,一个安全的AES协处理器与DPA电阻和硬件独特的密钥,可以共享与快速AES硬件,-个PKA(公钥加速器)与DPA电阻,哈希硬件加速器,和一个真正的随机数发生器。通过内部监控生成攻击情况下的秘密数据擦除,实现了对瞬时扰动攻击的主动检测和防护。这有助于满足PCI对销售点应用的要求。硬件信号实现了软件进程之间的同步。
器件提供1个12位ADC(2.5Msps)、2个比较器、1个低功耗RTC、1个32位通用定时器、1个16位PWM定时器用于电机控制、3个16位通用定时器和2个16位低功耗定时器。它们还具有标准和高级通信接口,即2个L2C、2个SPI、1个SAI、2个USART和1个低功耗UART。功能集取决于产品。STM32WBA5xxx可在-40至105°C(120°C接点)温度范围内工作,电源电压为1.71至3.6V。
开发板介绍:
底板引出STM32WBA5xxx所有PIN。
进行软件测评:STM32CubeMX选择基于NUCEO-WBA55CG生成工程,生成开发板BSP代码:
int32_t BSP_LED_Init(Led_TypeDef Led) { GPIO_InitTypeDef GPIO_Init; /* Enable the GPIO_LED Clock */ if (Led == LD1) { LD1_GPIO_CLK_ENABLE(); } else if (Led == LD2) { LD2_GPIO_CLK_ENABLE(); } else /* Led = LD3 */ { LD3_GPIO_CLK_ENABLE(); } /* configure the GPIO_LED pin */ GPIO_Init.Pin = LED_PIN[Led]; GPIO_Init.Mode = GPIO_MODE_OUTPUT_PP; GPIO_Init.Pull = GPIO_PULLUP; GPIO_Init.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(LED_PORT[Led], &GPIO_Init); HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_SET); return BSP_ERROR_NONE; } /** * @brief DeInitialize LEDs. * @param Led LED to be de-init. * This parameter can be one of the following values: * @arg LD1 * @arg LD2 * @arg LD3 * @note BSP_LED_DeInit() does not disable the GPIO clock. * @retval BSP error code. */ int32_t BSP_LED_DeInit(Led_TypeDef Led) { GPIO_InitTypeDef GPIO_Init; /* DeInit the GPIO_LED pin */ GPIO_Init.Pin = LED_PIN[Led]; /* Turn off LED */ HAL_GPIO_WritePin(LED_PORT[Led], LED_PIN[Led], GPIO_PIN_SET); HAL_GPIO_DeInit(LED_PORT[Led], GPIO_Init.Pin); return BSP_ERROR_NONE; } printf("Welcome to STM32 world !\n\r"); printf("I LOVE EEPW !\n\r"); /* -- Sample board code to switch on leds ---- */ BSP_LED_On(LED_BLUE); BSP_LED_On(LED_GREEN); BSP_LED_On(LED_RED); /* USER CODE END BSP */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { printf("I LOVE EEPW !\n\r"); /* -- Sample board code for User push-button in interrupt mode ---- */ BSP_LED_Toggle(LED_BLUE); HAL_Delay(delay); BSP_LED_Toggle(LED_GREEN); HAL_Delay(delay); BSP_LED_Toggle(LED_RED); HAL_Delay(delay); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }