【DigiKey好物畅享】ST NUCLEO-U385RG 初见:点灯与I2C

一、 前言

很荣幸能入围【你晒单,我买单,DigiKey带您畅享好物】第三期活动,非常感谢Digikey和EEWORLD的大力支持。我在这次活动中选择了两件物料,其中有ST的NUCLEO-U385RG-Q,我打算拿来尝试制作一个生理信号采集装置,采集PPG信号,这次来分享一下NUCLEO-U385RG-Q的开发体验。

二、 开发环境与官方示例代码

我本来开始想尝试一下使用我更熟悉的probe-rs加embassy开发,然而尽管probe-rs有U385的pull request,但embassy还没有支持u3系列,故我们还是使用CubeMX和Cubeide。

在MX选择该开发板后,勾选“Generate demostration code”,生成代码前记得选择stm32cubeide,生成官方示例,也就是按按钮切换LED状态的示例。得益于板子有板载的ST-Link和虚拟串口,我们插上USB线就可以烧录了。

图1 LED灯亮

三、 配置I2C

既然是采集PPG信号,常用相关模块一般都使用I2C,故我先尝试配置I2C,在这其中还出现了一些小插曲,但我们暂且按下不表。

首先我选择了I2C2这个接口,通过 CubeMX 的引脚重映射将 I2C 功能迁移到了 PB13/PB14,CN10的Pin28(SDA)和30(SCL),并将这两个引脚设置内部上拉,以及速度设为Very High

图2 Pinout配置

我尝试简单扫描了一下I2C设备,结果如图3,其中关键函数如下:


// 硬件I2C扫描函数:用于检测总线上挂载的设备

void I2C2_Hardware_Scan(void) {

    printf("\\r\\n--- Starting Hardware I2C Scan ---\\r\\n");

    uint8_t devices_found = 0;

 

    for(uint16_t addr = 0; addr < 128; addr++) {

        if(HAL_I2C_IsDeviceReady(&hi2c2, (addr << 1), 2, 10) == HAL_OK) {

            printf("Device found at 0x%02X\\r\\n", addr);

            devices_found++;

        }

    }

   

    if(devices_found == 0) {

        printf("No I2C devices found.\\r\\n");

    } else {

        printf("Scan done. Found %d devices.\\r\\n", devices_found);

    }

}

 

// 读取MAX30102 ID函数:验证通信是否正常

void Test_MAX30102_ID(void) {

    uint8_t dev_addr = 0x57 << 1;

    uint8_t reg_addr = 0xFF;

    uint8_t data = 0;

    if(HAL_I2C_Mem_Read(&hi2c2, dev_addr, reg_addr, I2C_MEMADD_SIZE_8BIT, &data, 1, 100) == HAL_OK) {

        printf("Read Register 0xFF: 0x%02X\\r\\n", data);

       

        if(data == 0x15) {

            printf("SUCCESS! Hardware I2C is working perfectly!\\r\\n");

        }

    }

}

图3 搜索到Max30102模块

四、总结

这次 NUCLEO-U385RG 的上手体验让我印象深刻,尤其是在解决 I2C 通讯问题的过程中,我对 STM32U385 的特性有了更直观的理解。首先,STM32U385可以通过CubeMX 可以轻松地将 I2C2 映射到 CN10 接口的 PB13/PB14 引脚,这种灵活性极大地提高了硬件调试的容错率,对于原型开发非常友好。其次,尽管U385是一款较新的芯片,但工具链的适配已经非常成熟,大大降低了上手新芯片的学习成本。

总的来说,NUCLEO-U385RG 是一块“下限很低,上限很高”的开发板,非常适合作为高性能低功耗项目的开发平台。

本次评测就先到这里,下次分享我将调试SSD1306屏幕,以及实现读取MAX10302的数据,实现一个生理信息设备。

更正一下,参加的活动为【你晒单,我买单,DigiKey带您畅享好物】第六期活动